-
SQL> conn /as sysdba
-
Connected.
-
SQL> shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SQL> startup mount
-
ORACLE instance started.
-
-
Total System Global Area 236000356 bytes
-
Fixed Size 451684 bytes
-
Variable Size 201326592 bytes
-
Database Buffers 33554432 bytes
-
Redo Buffers 667648 bytes
-
Database mounted.
-
SQL> ALTER SESSION SET SQL_TRACE=TRUE;//语句跟踪
-
System altered.
-
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
-
-
System altered.
-
-
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
-
-
System altered.
-
-
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
-
-
System altered.
-
-
SQL> alter database open;
-
-
Database altered.
-
-
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
-
ALTER DATABASE CHARACTER SET ZHS16GBK
-
*
-
ERROR at line 1:
-
ORA-12712: new character set must be a superset of old character set
-
-
-
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
-
-
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
-
-
Database altered.
-
-
SQL> select * from v$nls_parameters;
-
-
PARAMETER VALUE
-
---------------------------------------------------------------- ---------------
-
NLS_LANGUAGE AMERICAN
-
NLS_TERRITORY AMERICA
-
NLS_CURRENCY $
-
NLS_ISO_CURRENCY AMERICA
-
NLS_NUMERIC_CHARACTERS .,
-
NLS_CALENDAR GREGORIAN
-
NLS_DATE_FORMAT DD-MON-RR
-
NLS_DATE_LANGUAGE AMERICAN
-
NLS_CHARACTERSET ZHS16GBK
-
NLS_SORT BINARY
-
NLS_TIME_FORMAT HH.MI.SSXFF AM
-
-
PARAMETER VALUE
-
---------------------------------------------------------------- ---------------
-
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI
-
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM
-
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI
-
NLS_DUAL_CURRENCY $
-
NLS_NCHAR_CHARACTERSET UTF8
-
NLS_COMP BINARY
-
NLS_LENGTH_SEMANTICS BYTE
-
NLS_NCHAR_CONV_EXCP FALSE
-
-
19 rows selected.
-
-
-
重启检查是否更改完成:
-
-
SQL> shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SQL> startup
-
ORACLE instance started.
-
-
Total System Global Area 236000356 bytes
-
Fixed Size 451684 bytes
-
Variable Size 201326592 bytes
-
Database Buffers 33554432 bytes
-
Redo Buffers 667648 bytes
-
Database mounted.
-
Database opened.
-
SQL> select * from v$nls_parameters;
-
-
PARAMETER VALUE
-
---------------------------------------------------------------- ---------------
-
NLS_LANGUAGE AMERICAN
-
NLS_TERRITORY AMERICA
-
NLS_CURRENCY $
-
NLS_ISO_CURRENCY AMERICA
-
NLS_NUMERIC_CHARACTERS .,
-
NLS_CALENDAR GREGORIAN
-
NLS_DATE_FORMAT DD-MON-RR
-
NLS_DATE_LANGUAGE AMERICAN
-
NLS_CHARACTERSET ZHS16GBK
-
NLS_SORT BINARY
-
NLS_TIME_FORMAT HH.MI.SSXFF AM
-
-
PARAMETER VALUE
-
---------------------------------------------------------------- ---------------
-
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI
-
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM
-
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI
-
NLS_DUAL_CURRENCY $
-
NLS_NCHAR_CHARACTERSET UTF8
-
NLS_COMP BINARY
-
NLS_LENGTH_SEMANTICS BYTE
-
NLS_NCHAR_CONV_EXCP FALSE
-
- 19 rows selected.
引用
在Oracle9i中,如果数据库存在CLOB类型字段,那么就不允许对字符集进行转换
对于不同情况,Oracle提供不同的解决方案,如果是用户数据表,一般我们可以把包含CLOB字段的表导出,然后drop掉相关对象,
转换后再导入数据库;对于系统表,可以按照以下方式处理:
- SQL> truncate table Metastylesheet;
- Table truncated.