1.确定时间段:和客户沟通后确定需要清理的分区时间段,一般建议数据保留6个月。
2.确定对应分区:找到mytable_history表的所有分区, HIGH_VALUE-1对应的值是actiondate:
用p_user用户登录 select partition_name,high_value from user_tab_partitions
where table_name='mytable_history' ORDER BY PARTITION_NAME; PARTITION_NAME HIGH_VALUE ------------------------------ -------------------------------------------- P_MYTAB_0604 TO_DATE(' 2006-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0605 TO_DATE(' 2006-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0606 TO_DATE(' 2006-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0607 TO_DATE(' 2006-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0608 TO_DATE(' 2006-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0609 TO_DATE(' 2006-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0610 TO_DATE(' 2006-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0611 TO_DATE(' 2006-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0612 TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0701 TO_DATE(' 2007-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0702 TO_DATE(' 2007-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0703 TO_DATE(' 2007-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0704 TO_DATE(' 2007-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0705 TO_DATE(' 2007-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0706 TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0707 TO_DATE(' 2007-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0708 TO_DATE(' 2007-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0709 TO_DATE(' 2007-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0710 TO_DATE(' 2007-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0711 TO_DATE(' 2007-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') P_MYTAB_0712 TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN') SUBNHIS_P_OTHER MAXVALUE 找到其所有的分区,从而确定其要清理的分区,假定数据保留6个月(含当前月),那么下面的P_MYTAB_0702之前的分区都可以进行清理,确定要清理的分区名称为:P_MYTAB_0604~P_MYTAB_0701。 3.备份:对需要清理的表进行exp导出:
编写parfile文件,将需要清理的分区写在parfile文件中: Vi mytab.par tables=(mytable_history:P_MYTAB_0604, mytable_history:P_MYTAB_0605, mytable_history:P_MYTAB_0607, mytable_history:P_MYTAB_0608, mytable_history:P_MYTAB_0609, mytable_history:P_MYTAB_0610, mytable_history:P_MYTAB_0611, mytable_history:P_MYTAB_0612, mytable_history:P_MYTAB_0701) 保存退出。 开始做exp导出: exp p_user_user/p_user_pwd parfile=mytab.par file=mytab_p0604_p0701.dmp log=exp_mytab_p0604_p0701.log buffer=6000000 statistics=none
exp后请检查其exp_mytab_p0604_p0701.log中是否有报错信息。 Exp后的dmp文件请备份到小磁带上,做好标签,永久保存。 4.清理:对历史分区进行truncate:
p_user用户登录 Alter table mytable_history truncate partition P_MYTAB_0604;
Alter table mytable_history truncate partition P_MYTAB_0605; Alter table mytable_history truncate partition P_MYTAB_0606; Alter table mytable_history truncate partition P_MYTAB_0607; Alter table mytable_history truncate partition P_MYTAB_0608; Alter table mytable_history truncate partition P_MYTAB_0609; Alter table mytable_history truncate partition P_MYTAB_0610; Alter table mytable_history truncate partition P_MYTAB_0611; Alter table mytable_history truncate partition P_MYTAB_0612; Alter table mytable_history truncate partition P_MYTAB_0701; 若在truncate是遇到ORA-00054: resource busy and acquire with NOWAIT specified的报错,说明资源被占用中,请重复执行该语句。 5.还原:exp出来的dmp文件保存小磁带上进行永久保存,如果有需要可以将dmp文件导入还原:
imp my_user/my_pwd parfile=mytab.par file=mytab_p0604_p0701.dmp log=imp_mytab_p0604_p0701.log. ignore=y;
注:parfile同上面exp时的parfile,也可以只将需要imp的分区写入到parfile中。 这里做imp的时候一定要加ignore=y,不如因为导入的时候,会报错表已经存在,因为报错而立即终止,因此必须要加ignore=y参数才能保证数据继续导入。 6.其他事项:请在进行上述操作时,检查最后的分区是否为07年12月的分区,如果是07年12月的分区,需要dba在年底前对SUBNHIS_P_OTHER进行split。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xindream/archive/2010/01/09/5165629.aspx
|
|