EXP遇到ORA-06552错误的解决( PLS-553: character set name is not recognized)2009-05-08 16:51有一个建好的数据,Oracle 9.2.0.4 for linux,字符集是缺省的WE8ISO8859P1,没有改成ZHS16GBK. 库中暂时没有任何数据。

由于字符集不是超集/子集关系,无法通过ALTER DATABASE CHARACTER SET修改字符集。

当时时间紧张,就没有重建数据库,而是直接修改prop$表,将NLS_CHAR字符集改为ZHS16GBK。

update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';

重启后建表、insert数据,一切正常。。。直到今天要exp出数据。

执行 exp userid=system owner=username ... 报错!

即将导出指定的用户…

. 正在导出 pre-schema 过程对象和操作

. 正在导出用户 USERNAME 的外部函数库名称

. 导出 PUBLIC 类型同义词

EXP-00008: 遇到 ORACLE 错误 6552

ORA-06552: PL/SQL: Compilation unit analysis terminated

ORA-06553: PLS-553: character set name is not recognized

EXP-00000: 导出终止失败

隐隐感觉与当时的字符集设置有关。http://www.eygle.com/special/NLS_CHARACTER_SET_03.htm: “正式修改字符集时,Oracle至少需要更改12张数据字典表,而这种直接更新props$表的方式只完成了其中十二分之一的工作,潜在的完整性隐患是可想而知的。”

但是如何解决呢?后来搜索到未公开的INTERNAL_USE用法,强制完成字符集一致化,解决了问题。

首先,确认字符集是否修改的不彻底。

SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,

DECODE(TYPE#, 1,

DECODE(CHARSETFORM, 1, 'VARCHAR2', 2, 'NVARCHAR2', 'UNKOWN'),

9,

DECODE(CHARSETFORM, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),

96,

DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),

112,

DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN

FROM SYS.COL$

WHERE CHARSETFORM IN (1, 2)

AND TYPE# IN (1, 9, 96, 112);

如果上面的查询的确显示有多个字符集的设定,则进行如下处理:

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

COL VALUE NEW_VALUE NCHARSET

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

--INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化

ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;

ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;

SHUTDOWN IMMEDIATE;

STARTUP;

-- 再次启动数据库一遍

SHUTDOWN IMMEDIATE;

STARTUP;

至此,EXP问题得到了解决。

注意:修改字符集只是修改了数据字典,并没有对数据进行字符集转换!

oracle 如何修改字符集 update prop,ORACLE 修改字符集相关推荐

  1. oracle客户端更改字符集,oracle 服务器跟客户端字符集的查看和修改

    oracle 服务器和客户端字符集的查看和修改 查看和更改oracle数据库字符集 1 数据库服务器字符集select * from nls_database_parameters, 其来源于prop ...

  2. Oracle 字符集的查看和修改

    一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工 ...

  3. oracle服务器和客户端字符集的查看和修改

    一.什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...

  4. oracle查看本机字符集,查看、修改oracle字符集,查看oracle版本

    查看.修改oracle字符集,查看oracle版本 1.查看数据库字符集 数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据 ...

  5. Oracle的字符集由AMERICAN_AMERICA.ZHS16GBK修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    Oracle的字符集由AMERICAN_AMERICA.ZHS16GBK修改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK 1.查询当前字符集: sql>select us ...

  6. oracle查看和修改字符集,oracle字符集的查看和修改

    Oracle修改字符集 2.3oracle数据库的字符集更改 A.oracle server 端 字符集查询 select userenv('language') from dual 其中NLS_CH ...

  7. oracle修改10到20,Oracle 10.2.0.5 RMAN迁移并升级11.2.0.4一例

    一.环境介绍 1. 源数据库环境 操作系统版本: OEL 5.4 x64 数据库版本  : 10.2.0.5 x64 数据库sid名 : orcl Oracle 10g 10.2.0.5(64bit) ...

  8. Oracle数据库表中字段顺序的修改方法

    Oracle数据库表中字段顺序的修改方法 这篇文章主要给大家介绍了关于Oracle数据库表中字段顺序的修改方法,在介绍修改的方法之前先给大家介绍了Oracle数据库表新建字段的方法,文中通过示例代码介 ...

  9. oracle 表字段顺序_Oracle数据库如何修改表中字段顺序

    Oracle数据库如何修改表中字段顺序 发布时间:2020-07-09 15:53:15 来源:亿速云 阅读:166 本篇文章给大家分享的是有关Oracle数据库如何修改表中字段顺序,小编觉得挺实用的 ...

最新文章

  1. 《PC World》:Linux在桌面市场毫无长进 已经死亡
  2. 【Qt】Qt Creator中布局器详解
  3. Mac终端设置,zsh和bash环境变量配置
  4. python转json的函数_pandas.DataFrame.to_json按行转json的方法
  5. (67)Verilog HDL模块条件例化
  6. Python中的快捷键和注释方式
  7. 广告CTR预估中用户行为学习和记忆建模
  8. Canvas -画图 关键字
  9. 标准燃料计算机准,油表显示的油耗真的准确吗?教你最准确的油耗计算方法
  10. 【电脑录制屏】如何使用bandicam录游戏 设置图文教程
  11. matlab中适应度函数怎么编写,matlab常用的几个适应度评价函数
  12. 真无线蓝牙耳机哪个音质最好?2020高性价真无线蓝牙耳机音质排行榜!
  13. 陆丰市福山妈祖:四大天王
  14. 7 21 第一次团队赛——————写给队友
  15. 五、肿瘤全基因组学体细胞结构突变特征(Patterns of somatic structural variation in human cancer genomes)
  16. 复用推挽输出与推挽输出区别
  17. d盘格式化了能正常使用吗
  18. 船务术语简缩语(zt)
  19. java基本微信小程序的快递代收派送系统 uniapp小程序
  20. React Native 应用深度链接是如何通过 URL打开到指定页面

热门文章

  1. java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型
  2. 运行adb devices命令后 显示 List of devices attached 无法获取设备解决方法
  3. Python实战从入门到精通第二十一讲——构建一个模块的层级包
  4. 【书单】推荐几本AI好书
  5. oracle数据库查表_oracle数据库之多表查询二
  6. ssh 隧道 mysql_利用SSH隧道方式连接远程MySQL服务器
  7. CCF 201812-2小明放学
  8. SpringBoot指南(五)——拦截器、原生组件
  9. 花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)
  10. MPEG-4视频编码核心思想