注意: 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>