oracle历史大表分区,某分区表历史分区下线方案

本文详细介绍了在Oracle数据库中清理和备份历史分区的步骤,包括确定清理时间段、列出所有分区、编写并执行导出脚本、清理分区、还原数据以及建立定期清理的数据下线制度。在清理过程中,特别强调了数据备份的重要性,并提供了处理资源占用问题的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。

建议在和客户沟通,确定数据保留时间后,驻点dba每月对过期的历史分区进行备份和truncate,形成数据下线制度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值