Oracle 更改数据库字符集为ZHS16GBK
sqlplus / as sysdba; // 连接数据库
shutdown immediate; // 关闭数据库
startup mount; //启动实例,并加载数据库
// startup nomount 只是启动了实例而没有启动数据库
// startup mount 启动了实例,并加载了数据库,但是数据库没有打开
// startup 是最全的,实例,数据库加载,数据库打开都完成
ALTER SYSTEM ENABLE RESTRICTED SESSION; // 开启RESTRICTED模式
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; // 总共可创建0个job进程 防止有任务自动启动执行
ALTER SYSTEM SET AQ_TM_PROCESSES=0; // 最多创建0个进程 防止有任务自动启动执行
alter database open; // 打开数据库的命令
ALTER DATABASE CHARACTER SET ZHS16GBK; // 修改字符集为ZHS16GBK
// 如果报错 ORA-12712: new character set must be a superset of old character set
// 提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改
// 执行以下语句:(INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验)
ALTER DATABASE character set INTERNAL_USE ZHS16GBK; // 修改字符集为ZHS16GBK
select * from v$nls_parameters; // 查看字符集
shutdown immediate; // 关闭数据库
startup; // 启动数据库
select * from v$nls_parameters; // 查看字符集
以下为具体的操作流程图片以供参考:
关闭数据库,mount模式启动数据库并开启RESTRICTED模式
检查是否字符集是否更改,发现更改成功
关闭数据库,startup启动数据库
再次查看字符集是否更改成功