您的位置:首页 > 数据库 > Oracle

oracle存储过程处理数据过慢解决方法之一

2016-05-30 09:56 363 查看
Oracle调度程序慢,数据量大,可以以下两种解决方法,你试一下:

1、清理回收站,purge dba_recyclebin,后续也可以关闭回收站,z注意的是系统不属于OLTP系统,使用此方法才不会有影响

关闭回收站不影响系统使用(alter system set recyclebin=off deferred);

2、查看这个程序中执行到哪一步花费时间比较多,对执行花费时间较长段的表进行统计收集,以下是统计手机的执行语句:

DECLARE

  CURSOR cur_core_table_list IS

    SELECT table_name

      FROM dba_tables

     WHERE owner = 'PAS'

       AND table_name IN

           ('KHDX_JG','KHDX_JGCC');

  v_sql VARCHAR2(1000 CHAR);

BEGIN

  FOR v_rec IN cur_core_table_list LOOP

    DBMS_STATS.gather_table_stats(ownname          => 'PAS',

                                  tabname          => v_rec.table_name,

                                  estimate_percent => 15,

                                  method_opt       => 'FOR ALL INDEXED COLUMNS',

                                  degree           => 5,

                                  cascade          => TRUE,

                                  no_invalidate    => FALSE);

  END LOOP;
END;

--索引分析

DECLARE

   CURSOR cur_core_indexes_list

   IS

      SELECT index_name

        FROM dba_indexes

       WHERE owner = 'PAS'

             AND table_name IN

                     ('KHDX_JG','KHDX_JGCC');

   v_sql   VARCHAR2 (1000 CHAR);

BEGIN

   FOR v_rec IN cur_core_indexes_list

   LOOP

      DBMS_STATS.gather_index_stats (ownname            => 'PAS',

                                     indname            => v_rec.index_name,

                                     estimate_percent   => 15,

                                     degree             => 5,

                                   /*  cascade            => TRUE,*/

                                     no_invalidate      => FALSE);

   END LOOP;

END;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息