注意:
1)这样修改会影响数据库中定义了Nclob、NVARCHAR2等大字段的表,会出现乱码。需要重新导入表,当然在修改前要备份相关表。
2)如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start)
若直接运行
ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16;
也可以,但是可能会出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when
NCLOB data exists’ 这样的提示信息
Last login: Sat May 5 01:16:47 2018 from 114.84.253.79
[root@db-test ~]# su - oracle
Last login: Fri May 4 16:56:34 UTC 2018 on pts/2
[oracle@db-test ~]$ export ORACLE_SID=auc
[oracle@db-test ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sat May 5 01:20:18 2018
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount exclusive
ORACLE instance started.
Total System Global Area 2.3689E+10 bytes
Fixed Size 3723728 bytes
Variable Size 1.1744E+10 bytes
Database Buffers 1.1878E+10 bytes
Redo Buffers 63381504 bytes
Database mounted.
SQL> alter database open;
Database altered.
SQL> col parameter for a40
SQL> col value for a30
SQL> select * from nls_database_parameters;
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_RDBMS_VERSION 12.1.0.2.0
NLS_NCHAR_CONV_EXCP FALSE
NLS_LENGTH_SEMANTICS BYTE
NLS_COMP BINARY
NLS_DUAL_CURRENCY $
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_SORT BINARY
NLS_DATE_LANGUAGE AMERICAN
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_DATE_FORMAT DD-MON-RR
NLS_CALENDAR GREGORIAN
NLS_NUMERIC_CHARACTERS .,
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET ZHS16GBK
NLS_ISO_CURRENCY AMERICA
NLS_CURRENCY $
NLS_TERRITORY AMERICA
NLS_LANGUAGE AMERICAN
20 rows selected.
SQL> alter database national character set internal_use UTF8;
alter database national character set internal_use UTF8
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount exclusive;
ORACLE instance started.
Total System Global Area 2.3689E+10 bytes
Fixed Size 3723728 bytes
Variable Size 1.1744E+10 bytes
Database Buffers 1.1878E+10 bytes
Redo Buffers 63381504 bytes
Database mounted.
SQL> alter system enable restricted session;
System altered.
SQL> alter system open;
alter system open
*
ERROR at line 1:
ORA-02065: illegal option for ALTER SYSTEM
SQL> alter database open;
Database altered.
SQL> alter database national character set internal_use UTF8;
Database altered.
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_RDBMS_VERSION 12.1.0.2.0
NLS_NCHAR_CONV_EXCP FALSE
NLS_LENGTH_SEMANTICS BYTE
NLS_COMP BINARY
NLS_DUAL_CURRENCY $
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_SORT BINARY
NLS_DATE_LANGUAGE AMERICAN
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_DATE_FORMAT DD-MON-RR
NLS_CALENDAR GREGORIAN
NLS_NUMERIC_CHARACTERS .,
NLS_NCHAR_CHARACTERSET UTF8
NLS_CHARACTERSET ZHS16GBK
NLS_ISO_CURRENCY AMERICA
NLS_CURRENCY $
NLS_TERRITORY AMERICA
NLS_LANGUAGE AMERICAN
20 rows selected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2.3689E+10 bytes
Fixed Size 3723728 bytes
Variable Size 1.1744E+10 bytes
Database Buffers 1.1878E+10 bytes
Redo Buffers 63381504 bytes
Database mounted.
Database opened.
SQL> select * from nls_database_parameters;
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_RDBMS_VERSION 12.1.0.2.0
NLS_NCHAR_CONV_EXCP FALSE
NLS_LENGTH_SEMANTICS BYTE
NLS_COMP BINARY
NLS_DUAL_CURRENCY $
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_SORT BINARY
NLS_DATE_LANGUAGE AMERICAN
PARAMETER VALUE
---------------------------------------- ------------------------------
NLS_DATE_FORMAT DD-MON-RR
NLS_CALENDAR GREGORIAN
NLS_NUMERIC_CHARACTERS .,
NLS_NCHAR_CHARACTERSET UTF8
NLS_CHARACTERSET ZHS16GBK
NLS_ISO_CURRENCY AMERICA
NLS_CURRENCY $
NLS_TERRITORY AMERICA
NLS_LANGUAGE AMERICAN
20 rows selected.
SQL>