公司的一个测试库原来的版本是Oracle 11gR2的。 有些语法10g的有些出入,老大说把测试库重建一下,用10g的版本。
虽说可以停机,数据量也不大,不过白天研发的同事要使用测试库,所以只能晚上加班搞。 打算使用数据泵expdp/impdp 来做。 因为从高版本到低版本导需要加上version 参数,之前还没有测试过。 用这个机会测试一下。
数据泵的更多示例,参考我的Blog:
Oracle expdp/impdp 使用示例
http://blog.csdn.net/tianlesoftware/archive/2011/03/18/6260138.aspx
步骤如下:
1. 把10g版本的库装好,并创建一个实例
2. 查看原用户对象总数
SQL> select count(*) from dba_objects where owner in ('WANGOU','SUP','QISHUN');
这样导完之后,就可以比较一下。
3. 创建目录,并用expdp导出数据
SQL>create directory backup as '/u01/backup';
#expdp \'/ as sysdba\' directory=backup full=y dumpfile=wgfullexp.dmp logfile=fullexp.log version=10.2.0.1 ;
-- 注意参数,我是从11gR2的库导的,我要导入10g的库,通过version指定版本信息。
4. 用Toad 导出原测试库 表空间用户等脚本。
5. 在新的测试库用之前导出的脚本把表空间创建好。
6. 创建dir,用impdp 导入数据
SQL>create directory backup as '/u01/backup';
#impdp \'/ as sysdba\' directory=backup full=y dumpfile=wgfullexp.dmp logfile=fullimp.log;
impdp 没有成功,最后的错误如下:
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
ORA-39112: Dependent object type TABLE_STATISTICS skipped, base object type TABLE:"ORDDATA"."ORDDCM_PREFS_LOOKUP" creation failed
ORA-39112: Dependent object type TABLE_STATISTICS skipped, base object type TABLE:"ORDDATA"."ORDDCM_PREFS_LOOKUP" creation failed
ORA-39112: Dependent object type TABLE_STATISTICS skipped, base object type TABLE:"ORDDATA"."ORDDCM_PREFS_LOOKUP" creation failed
ORA-39125: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS while calling DBMS_METADATA.CONVERT [TABLE_STATISTICS]
ORA-06502: PL/SQL: numeric or value error
LPX-00225: end-element tag "HIST_GRAM_LIST_ITEM" does not match start-element tag "EPVALUE"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.KUPW$WORKER", line 6241
----- PL/SQL Call Stack -----
object line object
handle number name
0x4de6dba8 14916 package body SYS.KUPW$WORKER
0x4de6dba8 6300 package body SYS.KUPW$WORKER
0x4de6dba8 12279 package body SYS.KUPW$WORKER
0x4de6dba8 3279 package body SYS.KUPW$WORKER
0x4de6dba8 6889 package body SYS.KUPW$WORKER
0x4de6dba8 1262 package body SYS.KUPW$WORKER
0x4de62824 2 anonymous block
Job "SYS"."SYS_IMPORT_FULL_01" stopped due to fatal error at 20:58:03#o b0d5j2u18982013
因为这里的用户比较多,同事给我的是3个用户,但我连上去看了一下,明显不止三个用户。 所以就不想按用户导,直接full =y 全库导了。
impdp 的时候,如果用户不存在会自动创建。 所以在我impdp的时候,我没有去创建用户。 不过如果是生产环境,还是按部就班的来。 先建好表空间,用户,按用户来导。
imdp失败了,但之前导的表,索引等对象导入过了。 用:
SQL> select count(*) from dba_objects where owner in ('WANGOU','SUP','QISHUN');
查看了新测试库上这3个用户的对象,比原库少了20个。
把2个库对象的详细数据导出到txt,用UC 比较了一下,少的20个对象是触发器。 用Toad 在原库上把这20个触发器的sql导出来,在新库上执行一下。 最后检查了一下。 两遍对象一致。
因为impdp 在最后统计信息那块报错, 所以查看了一下统计信息,已经导入了。 让开发的同事测试了一下,没有问题。
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
分享到:
相关推荐
Oracle_expdp_impdp用法详解
指定转储文件和日志文件所在的目录 DIRECTORY=directory_object Directory_object用于指定目录对象名称.需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录
oralce详细导入导出参数解释,详细解释了与imp,exp的区别
Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
ORACLE expdp-impdp使用。ORACLE expdp-impdp使用ORACLE expdp-impdp使用
oracle expdp&impdp; 实例
oracle expdp-impdp_用法详解
NULL 博文链接:https://zzzwp.iteye.com/blog/2313486
Oracle expdp impdp 使用 详解
检查Oracle实例状态 ,sid SQL< select instance_name,host_name,startup_time,status,database_status from v$instance; 2.查看用户和默认表空间的关系。select username, DEFAULT_TABLESPACE from ...
oracle10g新工具expdp,impdp详解
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项; EXP和IMP是客户段工具程序,它们既可以在...
十分简单的ORACLE_EXPDP_和_IMPDP,一看就懂的。
Oracle数据迁移expdp,impdp常用的一些语句,免费,资源分数是系统必填项没有办法。
oracle数据泵expdp impdp使用说明
expdp\expdp_impdp.pdf
oracle expdp impdp 分区表重映射导出导入 数据迁移方案,以SI01用户为例子,将用户分区表导出后,将分区表重映射到新的表空间,完成数据迁移和检查。照方案例子按步去做,一定能成功。
expdp,impdp常用方法.pdf
Oracle_10G使用数据泵(EXPDP和IMPDP)
expdp/impdp和exp/imp的区别 exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 expdp和impdp是服务端的工具程序,他们只能在Oracle服务端使用,不能在客户端使用。 imp只适用于exp导出的...