查询目前数据库所使用的字符集(可直接在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;

再次执行查询字符集语句,可看到修改结果。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注