- 最后登录
- 2018-6-21
- 在线时间
- 40 小时
- 威望
- 11
- 金钱
- 30
- 注册时间
- 2012-5-4
- 阅读权限
- 10
- 帖子
- 25
- 精华
- 0
- 积分
- 11
- UID
- 404
|
1#
发表于 2012-7-27 16:27:47
|
查看: 3634 |
回复: 0
我的导出脚本是以下:
full=y
filesize=10000m
file=
/oracle_data6/minbao01.dmp,
/oracle_data6/minbao02.dmp,
/oracle_data6/minbao03.dmp,
/oracle_data6/minbao04.dmp,
/oracle_data6/minbao05.dmp,
/oracle_data6/minbao06.dmp,
/oracle_data6/minbao07.dmp,
/oracle_data6/minbao08.dmp,
/oracle_data6/minbao09.dmp,
/oracle_data6/minbao10.dmp
feedback=10000
log=/oracle_data6/minbao.log
buffer=81920000
在客户端设置字符集后进行导出报错
EXP-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
我试着在本地导出还是报同样的错误。
请刘大指点。
我搜到的解决答案是:
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问题得到了解决。
注意:修改字符集只是修改了数据字典,并没有对数据进行字符集转换!
我不知道这样会不会影响数据库。 |
|