重庆思庄Oracle、Redhat认证学习论坛

标题: ORA-29354 impdp导入报错字符集不兼容 [打印本页]

作者: denglj    时间: 2021-12-17 09:24
标题: ORA-29354 impdp导入报错字符集不兼容
源端系统: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方式传输表空间时一定要确认源端与目标端字符集相同.






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2