更改数据库字符集后,export报ORA-06553错误

[复制链接]
查看11 | 回复8 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
今天在测试库上进行EXP的时候,报如下错误:
Connected to: Oracle9i Release 9.2.0.1.0 - Production
JServer Release 9.2.0.1.0 - Production
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export the entire database ...
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
EXP-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
EXP-00000: Export terminated unsuccessfully
查询相关的日志,发现有如下更改字符集的语句:
ALTER DATABASE CHARACTER SET ZHS16GBK;
询问系统管理员(本人到公司没有多久),原来是以前默认安装字符集是WE8ISO8859P1,后来通过如上方法进行的更改。
查询METALINK看是否有解决的方法,发现比较少(上面都是如何叫你避免更改字符集的警告等信息),请问那位碰上个这个问题,可否指点以下。
server端现在字符集:ZHS16GBK
客户断字符集:ZHS16GBK
OS:LINUX ADS
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
你执行一下以下的查询看看:
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);
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
有问题的机器(测试库)上:
SQL> 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);
CHARACTERSET
TYPES_USED_IN
---------------------------------------- -------------
AL16UTF16
NCHAR
AL16UTF16
NCLOB
AL16UTF16
NVARCHAR2
US7ASCII
VARCHAR2
WE8ISO8859P1
CHAR
WE8ISO8859P1
CLOB
WE8ISO8859P1
VARCHAR2
ZHS16GBK
CHAR
ZHS16GBK
CLOB
ZHS16GBK
VARCHAR2

在正常库上:
SQL> select distinct(nls_charset_name(charsetid)) CHARACTERSET,
2decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
39, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
496, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
5112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
6from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);
CHARACTERSET
TYPES_USED_IN
-------------------------------------------------------------------------------- -------------------
-------
AL16UTF16
NCHAR
AL16UTF16
NCLOB
AL16UTF16
NVARCHAR2
WE8ISO8859P1
CHAR
WE8ISO8859P1
CLOB
WE8ISO8859P1
VARCHAR2

那怎么解决呢??
可以直接对col$表进行操作吗??
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
奇怪,对于上面这个新的库(正常的库)用如下语句
ALTER DATABASE CHARACTER SET ZHS16GBK;
更改不了数据库字符集;
只能通过如下语句进行更改:
ALTER DATABASECHARACTER SET INTERNAL_USEZHS16GBK;
更改字符集成功;
可是:
SQL> select distinct(nls_charset_name(charsetid)) CHARACTERSET,
2decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),
39, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),
496, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
5112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
6from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);
CHARACTERSET
TYPES_USED_IN
---------------------------------------- -------------
AL16UTF16
NCHAR
AL16UTF16
NCLOB
AL16UTF16
NVARCHAR2
ZHS16GBK
CHAR
ZHS16GBK
CLOB
ZHS16GBK
VARCHAR2
还是不会出现我那个问题库的情况???
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果是update props$更改的字符集,就会有问题。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
呵呵,eygle来了,你去看看他的站点,照他的例子来改,应该可以解决的,记住做任何操作以前先冷备一下数据库。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这种改了数据库字符集的事,最好是重做了吧
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
eygle的站点,每次只要有时间多会去看看的,刚才还在上面呢.....
谢谢
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
我有同样的问题,在我发现字符集不对的情况下,我用dbca删除了一个库,然后又用dbca重建,在第三步时就报这样的错误,想不通为什么呢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行