oracle之修改字符集

参考链接

如何改oracle AL16UTF16为AL32UTF8——百度知道

建库时AL16UTF16字符集怎么设置?——出处: ITPUB论坛-中国最专业的IT技术社区

正文

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 1月 11 12:00:49 2018

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 3290345472 bytes
Fixed Size                  2180224 bytes
Variable Size            2164263808 bytes
Database Buffers         1107296256 bytes
Redo Buffers               16605184 bytes
数据库装载完毕。
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

系统已更改。

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

系统已更改。

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

系统已更改。

SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> ALTER DATABASE CHARACTER SET AL32UTF8;
ALTER DATABASE CHARACTER SET AL32UTF8
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集


SQL> ALTER DATABASE CHARACTER SET AL16UTF16;
ALTER DATABASE CHARACTER SET AL16UTF16
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
# ALTER DATABASE national CHARACTER SET AL16UTF16;

SQL> ALTER DATABASE character set INTERNAL_USE AL32UTF8;

数据库已更改。

SQL> SHUTDOWN IMMEDIATE;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP
ORACLE 例程已经启动。

Total System Global Area 3290345472 bytes
Fixed Size                  2180224 bytes
Variable Size            2164263808 bytes
Database Buffers         1107296256 bytes
Redo Buffers               16605184 bytes
数据库装载完毕。
数据库已经打开。
SQL>

ALTER DATABASE character set INTERNAL_USE AL32UTF8;
INTERNAL_USE有点像是强制修改,其他用户角色可能会报错

其他问题

AL16UTF16不能作为character set

AL16UTF16 不能用做数据库的character set,只能用做national character set 。
character set必须是single byte 7-bit ASCII或是单字节EBCDIC的子集,因此fixed width的多字节字符集(AL16UTF16)就不能做为character set。

你可以用如下这样用的:

CHARACTER SET US7ASCII NATIONAL CHARACTER SET AL16UTF16
或是
CHARACTER SET zhs16cgb231280  NATIONAL CHARACTER SET AL16UTF16

你可能感兴趣的:(oracle之修改字符集)