优化oracle读写任务

 

 查读盘次数最多的前十个sql操作:

SELECT *
  FROM (select PARSING_USER_ID,
               EXECUTIONS,
               SORTS,
               COMMAND_TYPE,
               DISK_READS,
               sql_text
          FROM v$sqlarea
         order BY disk_reads DESC)
 where ROWNUM < 10;

 

 发现有一条是垃圾操作。

 

select * from v$sqlarea where sql_text like '%PM_TD_PERFCDL_temp%'

select * from v$sql where sql_text like '%PM_TD_PERFCDL_temp%'

查到这条命令的执行时间:

 

 

 

 

 我猜他是定时操作:

在user_job中找到相应时间的任务:

 

 

 

发现是一个名为DT_PM_EXTENDEDGL();的过程:

create or replace procedure DT_PM_EXTENDEDGL is
  del_time  date;
  tablename varchar2(100);
  plsql     varchar2(400);
  cursor perftableCur is
    select distinct a.tablename
    from pm_tablename_vs_groupid a,
         (select distinct b.group_id
            from pm_guideline b
           where b.net_type = 'TD'
             and b.type = 'NEDEF') c
   where a.group_id = c.group_id
     and a.net_type = 'TD'
     order by a.tablename;
begin
  del_time := sysdate - 1 / 24;
  dbms_output.put_line('delete time is:' ||
                       to_char(del_time, 'yyyy-mm-dd hh24:mi:ss'));

  for perftableCurRec in perftableCur loop
    tablename := perftableCurRec.tablename;
    plsql     := 'delete from ' || tablename ||
                 '_temp where begin_time <=(sysdate - 1 / 24)';
    --dbms_output.put_line(plsql);
    execute immediate plsql;
    commit;
  end loop;

end DT_PM_EXTENDEDGL;

 

 

执行前面的select语句:

 

select distinct a.tablename
  from pm_tablename_vs_groupid a,
       (select distinct b.group_id
          from pm_guideline b
         where b.net_type = 'TD'
           and b.type = 'NEDEF') c
 where a.group_id = c.group_id
   and a.net_type = 'TD'
 order by a.tablename;

 

 

 

 结果都是废弃的表。

 

可以把这个任务停掉?

 

posted on 2019-07-18 21:49  梓沂  阅读(292)  评论(0编辑  收藏  举报