参考链接
如何改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
网友评论