源端系统:oel 7.9 目标端系统:windows 11 在使用image copies方式传输表空间时,impdp导入时报错ORA-29354,如下: C:\Users\Administrator>impdp '/ assysdba' directory=tts_dir dumpfile=tts.dmptransport_datafiles=E:\oracle19c\oracle\oradata\ORCL1\tsp_tts01.dbf Import: Release 19.0.0.0.0 -Production on 星期日 12月 12 22:52:40 2021 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracleand/or its affiliates. All rightsreserved. 口令: 连接到: Oracle Database 19c Enterprise Edition Release19.0.0.0.0 - Production 已成功加载/卸载了主表"SYS"."SYS_IMPORT_TRANSPORTABLE_01" 已在 AL32UTF8 字符集和 AL16UTF16 NCHAR 字符集中完成导入 已在 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中完成导出 警告: 字符集转换过程中可能出现数据丢失情况 启动"SYS"."SYS_IMPORT_TRANSPORTABLE_01": "/******** AS SYSDBA"directory=tts_dir dumpfile=tts.dmptransport_datafiles=E:\oracle19c\oracle\oradata\ORCL1\tsp_tts01.dbf 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK ORA-39123: 数据泵可传输的表空间作业中止 ORA-29345: 无法使用不兼容的字符集将表空间插入到数据库中 作业 "SYS"."SYS_IMPORT_TRANSPORTABLE_01" 因致命错误于 星期日 12月 12 22:52:52 2021 elapsed 0 00:00:03 停止 windows字符集 原因很明确,字符集不兼容,分别查询源端和目标端数据库字符集 目标端windows: SQL> select userenv('language')from dual; USERENV('LANGUAGE') -------------------------------------------------------------------------------- SIMPLIFIED CHINESE_CHINA.AL32UTF8 源端linux: SQL> select userenv('language')from dual; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK 此时将目标端数据库字符集更改为SIMPLIFIEDCHINESE_CHINA.ZHS16GBK SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 1.0301E+10bytes Fixed Size 12578000 bytes Variable Size 1644167168 bytes Database Buffers 8623489024 bytes Redo Buffers 20975616 bytes 数据库装载完毕。 SQL> alter system enable restrictedsession; 系统已更改。 SQL> alter database open; 数据库已更改。 SQL> alter database character setinternal_use zhs16gbk; 数据库已更改。 SQL> select userenv('language')from dual; USERENV('LANGUAGE') ---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK 目标端字符集更改完毕,然后再次执行导入表空间操作 SQL> exit 从 Oracle Database 19c Enterprise Edition Release19.0.0.0.0 - Production Version 19.3.0.0.0 断开 C:\Users\Administrator>impdp '/ assysdba' directory=tts_dir dumpfile=tts.dmptransport_datafiles=E:\oracle19c\oracle\oradata\ORCL1\tsp_tts01.dbf Import: Release 19.0.0.0.0 -Production on 星期日 12月 12 23:12:43 2021 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracleand/or its affiliates. All rightsreserved. 口令: 连接到: Oracle Database 19c Enterprise Edition Release19.0.0.0.0 - Production 已成功加载/卸载了主表 "SYS"."SYS_IMPORT_TRANSPORTABLE_01" 启动"SYS"."SYS_IMPORT_TRANSPORTABLE_01": "/******** AS SYSDBA"directory=tts_dir dumpfile=tts.dmptransport_datafiles=E:\oracle19c\oracle\oradata\ORCL1\tsp_tts01.dbf 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK 处理对象类型 TRANSPORTABLE_EXPORT/TABLE 处理对象类型TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK 作业"SYS"."SYS_IMPORT_TRANSPORTABLE_01" 已于 星期日 12月 12 23:12:56 2021 elapsed 0 00:00:03 成功完成 总结:imagecopies方式传输表空间时一定要确认源端与目标端字符集相同.
|