首页 > 数据库技术 > 详细

oracle性能分析2

时间:2017-10-27 00:27:34      阅读:271      评论:0      收藏:0      [点我收藏+]

Oracle性能分析

软件环境:Oracle 11g , 双机RAC.

问题: 

大表(千万级行记录)查询、操作慢,经常超时终端(ORA-01013: 用户请求取消当前的操作)

分析:

1)分区表

2)历史数据归档

解决:

采用方案2)。

  1. 创建历史表、
  2. create table {tablename}_his as select * from {tablename} where ...

    删除表数据。数据量太大(7444741)无法直接删除,需批量删除。

    declare  
       cursor mycursor is SELECT  ROWID FROM {tablename} WHERE ltl_time < to_date(2017-08-01,YYYY-mm-dd) order by rowid;   --------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情况来定。
       type rowid_table_type is  table  of rowid index by pls_integer;
       v_rowid   rowid_table_type;
    BEGIN
       open mycursor;
       loop
         fetch   mycursor bulk collect into v_rowid  limit 5000;   --------每次处理5000行,也就是每5000行一提交
         exit when v_rowid.count=0;
         forall i in v_rowid.first..v_rowid.last
            delete from {tablename} nologging  where rowid=v_rowid(i);
         commit;
       end loop;
       close mycursor;
    END;

     

oracle性能分析2

原文:http://www.cnblogs.com/lfwolf/p/7740080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!