导入dmp文件乱码,求大神指点!!!!

wudi19860701 2013-04-26 11:22:21
color=#FF0000]到入dmp 文件后,里面的数据乱码。在网上搜索了N多方法,也试了几种都解决不鸟。打开dmp文件,它的字符集是US7ASCII,我的服务器和客户端都是ZHS16GBK,有人说只要把dmp文件字符集修改就可以,但修改后文件就无法导入,报错说文件无效。我又试着把我服务器和客户端字符集改成US7ASCII,结果sql*plus打开就乱码,导入dmp文件后数据也还是乱码!!![/color]怎么办啊,求高手指点,最好能说详细点,我是新手,谢谢啊!
...全文
1426 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudi19860701 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 u010412956 的回复:
    需要修改数据库字符集为'us7ascii'。     查看数据库当前数据集有两种方式:       a).select name,value$ from props$ where name like '%NLS_CHARACTERSET%',       b).select userenv('language') from dual;     1.常规方案修改数据库字符集       1).sys登陆数据库:conn  /  as sysdba;       2).关闭数据库:shutdown immediate;       3).以mount方式开启数据库:startup mount;       4).限制其它用户连接数据库使用资源: alter system enable restricted session;       5).查看系统当前的进程(最大连接数):show parameter processes;记住job_queue_processes参数的当前值,后面需要修改回来。       6).杀掉CJQ0及相应job进程: alter system set job_queue_processes=0;       7).修改队列监视进程参数alter system set aq_tm_processes=0;       8).更改数据库为open方式:alter database open;       9).更改字符集:alter database character set us7ascii;       a).如果当前数据库的字符集是系统字符集us7asci的超集,更改不会出问题;如果不是,将会提示:      ORA-12712: 新字符集必须为旧字符集的超集      b).如果数据库数据有CLOB类型,系统将会提示:      ORA-12716: Cannot ALTER DATABASE CHARACTER SET when CLOB data exists     2.  针对以上的错误a)的解决方案:使用INTERNAL_USE跳过超集检测  ALTER DATABASE character set INTERNAL_USE us7ascii;     3. 针对以上的错误b)的解决方案:使用internal_convert转换含有CLOB字段的表   1).截断表truncate table Metastylesheet;   2).alter database character set internal_convert zhs16gbk;-- ORACLE会自动转换含有CLOB   3).因为前面清空了SYS.METASTYLESHEET表,需要重新创建        9.2通过运行catmet.sql脚本来重建;@?/rdbms/admin/catmet.sql           10g后通过运行catmeta.sql脚本来重建:@?/rdbms/admin/catmeta.sql            (注意这个地方有待商榷,不确定,最好不要使用这种方法修改)     4.完成方案a)和b)后再做如下步骤:   1).查看当前字符集,确认是否正确修改select userenv('language') from dual;   2).解除限制: alter system disable restricted session; alter system set job_queue_processes=10;--修改回开始记录的原始值   3).最好也也设置一下set NLS_LANG 环境变量   4).关闭数据库再打开;
我把服务器端和客户端的字符集都改成了us7ascii,但是sql*plus打开就乱码,我强制导入数据,数据也依旧乱码。也就是说我已经试过让服务器端,客户端的字符集与dmp文件保持一致,但还是乱码。请问还有其它方法吗? 为什么我修改dmp文件字符集后导入就报错,说‘无效文件’??
wudi19860701 2013-04-28
  • 打赏
  • 举报
回复
引用 3 楼 jiaowei051 的回复:
通过修改注册表,统一服务端和客户端oracle字符集
我已经试过修改服务端和客户端字符集 这个方法,还是解决不了,谁还有其他方法吗??
jiaowei051 2013-04-28
  • 打赏
  • 举报
回复
通过修改注册表,统一服务端和客户端oracle字符集
u010412956 2013-04-27
  • 打赏
  • 举报
回复
    需要修改数据库字符集为'us7ascii'。     查看数据库当前数据集有两种方式:       a).select name,value$ from props$ where name like '%NLS_CHARACTERSET%',       b).select userenv('language') from dual;     1.常规方案修改数据库字符集       1).sys登陆数据库:conn  /  as sysdba;       2).关闭数据库:shutdown immediate;       3).以mount方式开启数据库:startup mount;       4).限制其它用户连接数据库使用资源: alter system enable restricted session;       5).查看系统当前的进程(最大连接数):show parameter processes;记住job_queue_processes参数的当前值,后面需要修改回来。       6).杀掉CJQ0及相应job进程: alter system set job_queue_processes=0;       7).修改队列监视进程参数alter system set aq_tm_processes=0;       8).更改数据库为open方式:alter database open;       9).更改字符集:alter database character set us7ascii;       a).如果当前数据库的字符集是系统字符集us7asci的超集,更改不会出问题;如果不是,将会提示:      ORA-12712: 新字符集必须为旧字符集的超集      b).如果数据库数据有CLOB类型,系统将会提示:      ORA-12716: Cannot ALTER DATABASE CHARACTER SET when CLOB data exists     2.  针对以上的错误a)的解决方案:使用INTERNAL_USE跳过超集检测  ALTER DATABASE character set INTERNAL_USE us7ascii;     3. 针对以上的错误b)的解决方案:使用internal_convert转换含有CLOB字段的表   1).截断表truncate table Metastylesheet;   2).alter database character set internal_convert zhs16gbk;-- ORACLE会自动转换含有CLOB   3).因为前面清空了SYS.METASTYLESHEET表,需要重新创建        9.2通过运行catmet.sql脚本来重建;@?/rdbms/admin/catmet.sql           10g后通过运行catmeta.sql脚本来重建:@?/rdbms/admin/catmeta.sql            (注意这个地方有待商榷,不确定,最好不要使用这种方法修改)     4.完成方案a)和b)后再做如下步骤:   1).查看当前字符集,确认是否正确修改select userenv('language') from dual;   2).解除限制: alter system disable restricted session; alter system set job_queue_processes=10;--修改回开始记录的原始值   3).最好也也设置一下set NLS_LANG 环境变量   4).关闭数据库再打开;
iqlife 2013-04-27
  • 打赏
  • 举报
回复
注意几点: 1:导出候源服务器的字符集,以及导出客户端的字符集 2:导入的目标服务器的字符集,以及导入的客户端的字符集

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧