分享

分区表数据备份及清除

 rudeguy 2011-06-30
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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约