oracle,分区表归档

1.检查生产数据库和归档数据库子分区结构是否一致,用PL/SQL执行下面SQL,会生成BUSTB_TESTRESULT表2012年12月分区下归档库没有的子分区,生成添加子分区的SQL:(查询结果一定要选择全部,点击PL/SQL 查询结果的翻页按钮,使其变成灰色,再拷贝查询结果

SELECT 'ALTER TABLE BUSTB_TESTRESULT MODIFY PARTITION '||t.PARTITION_NAME||' ADD SUBPARTITION  ' ||T.SUBPARTITION_NAME|| ' VALUES (' ||substrb(T.SUBPARTITION_NAME,lengthb(t.PARTITION_NAME)+2) || ');'
FROM USER_TAB_SUBPARTITIONS T
WHERE T.TABLE_NAME= 'BUSTB_TESTRESULT'
 AND T.PARTITION_NAME LIKE 'RESULT_PART_201212%'
AND NOT EXISTS
(SELECT 1
      FROM USER_TAB_SUBPARTITIONS@ARCH_NEW AR
       WHERE AR.TABLE_NAME = 'BUSTB_TESTRESULT'
         AND AR.PARTITION_NAME =T.PARTITION_NAME
        AND AR.SUBPARTITION_NAME =T.SUBPARTITION_NAME);


2.把查询结果考出来,在归档库中执行。注意下:在执行脚本之前,我的归档库,已经为2012年每个月份创建了默认分区和默认子分区

RESULT_PART_201201,RESULT_PART_201201_0

RESULT_PART_201202,RESULT_PART_201202_0

...

RESULT_PART_201212,RESULT_PART_201212_0


3.用SecureCRT登陆,从生产库中导出数据分区RESULT_PART_201212数据(注意:语句最后不要加分号,否则会报错)

[oracle@XDCARCHOLD test]$ expdp sa/pwd  DUMPFILE=BUSTB_TESTRESULT_201212.DMP DIRECTORY=PUMP LOGFILE=BUSTB_TESTRESULT_201212.LOG  TABLES=BUSTB_TESTRESULT:RESULT_PART_201212  CONTENT=DATA_ONLY


说明:DIRECTORY=PUMP,PUMP是生产服务器已经存在的目录,通过SELECT * FROM dba_directories;查看


4.通scp命令把备份的文件考到归档库

[oracle@XDCARCHOLD test]$ scp BUSTB_TESTRESULT_201212.DMP oracle@IP地址:/u03/dump
oracle@192.168.90.122's password: 
BUSTB_TESTRESULT_201212.DMP                                                                                                                   100%   23GB  32.1MB/s   12:04    
[oracle@XDCARCHOLD test]$ 



5.用SecureCRT登陆,导入到归档库,(注意:语句最后不要加分号,否则会报错)
[oracle@xdctest dump]$ impdp sa/pwd  dumpfile=BUSTB_TESTRESULT_201212.DMP  directory=DUMP_DIR logfile=BUSTB_TESTRESULT_201212.log  TABLES=BUSTB_TESTRESULT CONTENT=DATA_ONLY


说明:DIRECTORY=DUMP_DIR ,DUMP_DIR 是归档服务器已经存在的目录 /u03/dump,通过SELECT * FROM dba_directories;查看


6.如果服务器上没有合适的路径,可新建路径(未测)

mkdir  -p  /expdp_dir

chmod  -R 777 /expdp_dir

create directory dump_dir as '/home/oracle/test'

并授权给导出用户,如用户sa

grant read,write on directory dump_dir to sa


7.在生产库和归档库分别查询,看最大主键值是否一致,防止有些数据在expdp后上传,最好的办法,expdp前确认web服务已经停止

SELECT MAX(summar_id) FROM BUSTB_TESTRESULT  PARTITION(RESULT_PART_201212);


8. 检查生产环境和归档库中相应分区记录数是否一致
SELECT COUNT(1) FROM BUSTB_TESTSUMMARY PARTITION(RESULT_PART_201212);


9.清理生产库中已归档分区,如:删除BUSTB_TESTRESULT表2012年12月分区的数据
alter table BUSTB_TESTRESULT truncate partition RESULT_PART_201212 drop storage;


10.对分区执行truncate 操作,会导致全局索引失效,所以需要重建全局索引(全局未分区索引,全局分区索引)

可用alter index index_name rebuild [online]
也可删除后,重新建,可以加并行;如另一个分区表,BUSTB_TESTSUMMARY的全局未分区索引

drop index BUSTB_TESTSUMMARY_INDX3 ;
create index BUSTB_TESTSUMMARY_INDX3 on BUSTB_TESTSUMMARY (SN, STATION_ID) tablespace XDCIDX NOLOGGING parallel 4;
加并行建立完后,需将该索引改为noparallel
alter index BUSTB_TESTSUMMARY_INDX3 noparallel;

11.检查有没有失效对象
SELECT * FROM DBA_OBJECTS T WHERE T.STATUS ='INVALID';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值