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

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;
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bzhzhc/article/details/51535787
个人分类: oracle
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭