Oracle修改字符集
查询目前数据库所使用的字符集(可直接在plsql中执行以下语句)
select * from V$NLS_PARAMETERS;
其中查询结果中 “NLS_CHARACTERSET” 的值即为目前所使用的
修改字符集
进入sqlplus
SQL\> sqlplus/nolog
以管理员身份登录
SQL\> conn / as sysdba
然后就是关闭数据库,进入限制模式,修改字符集
SQL\> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 6781128704 bytes
Fixed Size 2188608 bytes
Variable Size 3523218112 bytes
Database Buffers 3238002688 bytes
Redo Buffers 17719296 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 ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集
此处我们使用“INTERNAL_USE ZHS16GBK”字符集来跳过子集检查。
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
数据库已更改。现在我们就已经把字符集修改完毕了。重启一下数据库。
SQL> shutdown immediate;
SQL> startup;
再次执行查询字符集语句,可看到修改结果。