使用plsql时报出:ORA-06552 ORA-06553
定位:字符集问题。
确认字符集是否修改的不彻底:
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';
ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
SHUTDOWN IMMEDIATE;
STARTUP;
再次启动数据库一遍
SHUTDOWN IMMEDIATE;
STARTUP;
问题得到了解决。
----------------------------------
其中可能会出现的问题:
ALTER DATABASE national CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12714: ??????????
---------
解决办法:
点击(此处)折叠或打开
- SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
-
- Database altered.
----------------------------
其中可能会出现的问题:ORA-01219
解决办法:
ALTER DATABASE OPEN;
----------------------------
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 73701404 bytes
Fixed Size 75804 bytes
Variable Size 56770560 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORA-01102: ??? EXCLUSIVE ????????
解决办法:停止没有用的或者异常的实例。
-------------------
cp /***/pfile/init.ora.0212012125517 //app/oracle/product/10.2.0/db_1/dbs/initorcl10g.ora