首页 > 数据库 > Oracle > 旷日持久的数据迁移总结
下午完成了旷日持久的单实例跨版本oracle数据迁移任务,本来是两个schema逐步在分类脚本中进行(先expdp表结构,再是数据,再是索引约束,再是其他数据库对象),由于没有使用并行,两个任务一起处理,出现了不少问题(无故出现impdp表数据翻倍现象,索引约束违背问题,还有cluster引起的问题).其实数据不是很大,两个schema加起来就20G的样子,针对上面出现的繁琐离奇问题处理时真心纠结,有点拆东墙补西墙的窘境。
后来,看到网上有朋友就分两步,先是数据和其他DB对象,然后是索引约束,其建议是如果想提升速度,最好将数据与索引约束分开,由于我们数据不是很大,就一起expdp了,结果这样下来几乎没遇到什么问题,就是由于数据库版本差异,导致几个package body失效的问题,最后查明是由于db_link的问题,后来也轻松处理了。
接着,迁移完成后的善后工作:重新编译schema信息,重新收集DB统计信息。
最后,总结这次迁移心得体会如下:
(1)迁移前的流程得事先想明白,会遇到的问题需要尽可能多的有预见性处理,还有就是效率和优化的问题;
(2)一条路走不通时可以换个思路尝试新的方法,说不定可以高效解决你的问题,当然一切都是在实践前提下进行;
(3)最后,感觉迁移完成后的善后三项工作很重要也很实用,贴出来,分享给大家:
--->>迁移后对比目标库和源库数据库对象类别和数据:
SQL> select object_type,count(*) cnt from dba_objects where owner='AAA' GROUP BY OBJECT_TYPE;
外网14环境统计信息 RAC环境统计信息
OBJECT_TYPE CNT OBJECT_TYPE CNT
------------------- ---------- ------------------- ----------
TABLE SUBPARTITION 850 TABLE SUBPARTITION 850
INDEX PARTITION 72 INDEX PARTITION 72
TABLE PARTITION 98 TABLE PARTITION 98
SEQUENCE 47 SEQUENCE 47
PROCEDURE 1 PROCEDURE 1
DATABASE LINK 1 DATABASE LINK 1
PACKAGE 15 PACKAGE 15
PACKAGE BODY 13 PACKAGE BODY 13
TRIGGER 38 TRIGGER 38
INDEX 116 INDEX 116
TABLE 131 TABLE 130
VIEW 11 VIEW 11
FUNCTION 7 FUNCTION 7
SYNONYM 40 SYNONYM 40
CLUSTER 3 CLUSTER 3
TYPE 3 TYPE 3
16 rows selected 16 rows selected
---->>迁移后重新编译schema信息:
begin
dbms_utility.COMPILE_SCHEMA(AAA);
end;
/
---->>迁移后查询失效DB对象:
SQL> select t2.owner,t2.object_name,t2.object_type from all_objects t2 where owner in (AAA) and status='INVALID';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ ------------------------------ -------------------
FLTF FLT_PSF PACKAGE BODY
FLTF FLT_STATF PACKAGE BODY
FLTF FLT_DATA_STAT_PROXYF PACKAGE BODY
----->>迁移后重新收集schema统计信息:
BEGIN
DBMS_STATS.GATHER_SCHEMA_STATS(OWNNAME => 'FFF',
ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
METHOD_OPT => 'FOR ALL COLUMNS SIZE 1',
DEGREE => 32);
END;
(4)贴出expdp和impdp脚本供参考:
Expdp_all_bus.sh----->>
expdp aaa/bbb DIRECTORY=expdp_dir DUMPFILE=expdp_all_man%U.dump filesize=6G CONTENT=all logfile=expdp_all_bus_parallel.log parallel=3 SCHEMAS=AAA version=10.2.0.1.0 exclude=table_statistics,index_statistics;
Impdp_all_bus.sh----->>
impdp BBB/CCC DIRECTORY=impdp_dir DUMPFILE=expdp_all_bus%U.dump CONTENT=all logfile=impdp_all_bus_parallel.log parallel=3 SCHEMAS=DDD version=10.2.0.1.0;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29119536/viewspace-1103705/ ,如需转载,请注明出处,否则将追究法律责任。