11g数据库大表数据快速清理方法 - insert+append+parallel+exchange (2)

本文详细介绍了在Oracle数据库中如何通过插入、数据置换等操作来完成数据迁移,并针对索引重建及统计信息更新进行了具体说明。

2.   由于2013-2014数据是表中较少量的数据,采用insert到其他表的方式处理,而不使用delete ,其中的parallel根据实际CPU设置. 

#  insert_ap_inv.sql  
spool insert_ap_inv.log
set timing on
alter session enable parallel DML ;
insert /*+ append */ into   AP.AP_INVOICE_DISTS_ARCH_WQ
  select /*+ parallel(32) */ * from   AP.AP_INVOICE_DISTS_ARCH_WQ  a
  where a.last_update_date>=to_date('20130101','yyyymmdd');
commit;
set timing off
spool  off 
exit

nohup sqlplus / as sysdba  @insert_ap_inv.sql &


3.   对原表和中间分区表(只有一个分区)进行数据置换 (注意只会进行数据置换, 索引不会有任何动作,这里没有使用including indexes, including indexes 表示).   将Local indexes 一同exchange出来,  此选项需要用来与之exchange的table 有建立一样的Index) 
alter table  AP.AP_INVOICE_DISTS_ARCH_WQ  exchange partition APINV_PART01 with table AP.AP_INVOICE_DISTS_ARCH without validation;


4.   进行exchange后原表的索引可能会变成unusable 状态,需要对原表中索引进行rebuild .
select  'alter index  '||owner||'.'||index_name||'  rebuild parallel 32 nologging ;' from  dba_indexes  where  table_name =

'AP_INVOICE_DISTS_ARCH'; 
将查询出来的语句保存为 rebuild_idx2.sql 文件 ,后台执行。
nohup sqlplus / as sysdba  @rebuild_idx2.sql &

5.   数据置换后需要对表进行统计信息重新收集 。

# gather_ap_inv.sql

spool  gather_ap_inv.log
set timing on
EXEC dbms_stats.gather_table_stats(ownname => 'AP',tabname => 'AP_INVOICE_DISTS_ARCH',method_opt => 'FOR ALL COLUMNS SIZE

AUTO',degree=>32,cascade => TRUE);
set timing off
spool  off
exit

后台执行 :   nohup sqlplus / as sysdba  @gather_ap_inv.sql &

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-1204790/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-1204790/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值