修改 Oracle 数据库实例字符集

修改 Oracle 数据库实例字符集

Ø 简介

在 Oracle 中创建数据库实例后,就会有对应使用的编码字符集。当我们设置的字符集与操作系统或者其他软件字符集不一致时,就会出现中文乱码等情况。此时我们就需要修改 Oracle 数据库使用的字符集,下面是修改 Oracle 字符集的具体步骤:

Oracle 一般使用以下两种字符集:

1. SIMPLIFIED CHINESE_CHINA.ZHS16GBK

GBK 16-bit Simplified Chinese 能够支持繁体中文,并且按照2个字符长度存储一个汉字。

2. SIMPLIFIED CHINESE_CHINA.AL32UTF8

多字节存储,1个汉字(简体、繁体)有时采用3个字符长度存储。Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是说UTF8是ZHS16GBK的严格超集。

首先,我们查看数据库实例所使用的字符集:

sqlplus "/as sysdba"

select userenv('language') from dual;

当前(orcl)使用的是 CHINESE_CHINA.AL32UTF8 字符集,下面进行修改:

1. 运行 CMD

2. 进入指定数据库实例

set ORACLE_SID=ORCL #"ORCL"表示需要修改字符集的数据库实例名

3. 输入命令

sqlplus /nolog

4. 登录数据库

conn /as sysdba

5. 关闭数据库实例

SHUTDOWN IMMEDIATE;

6. 打开控制文件

STARTUP MOUNT;

7. 开启限制会话模式

ALTER SYSTEM ENABLE RESTRICTED SESSION;

--ALTER SYSTEM DISABLE RESTRICTED SESSION; #取消限制会话模式

8. 设定job队列可以启动的进程数

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

说明:JOB_QUEUE_PROCESSES=0,则DBMS_JOB作业和Oracle Scheduler作业将不会在实例上运行。参考:https://blog.csdn.net/leshami/article/details/8694772

9. 禁用队列监视器协调器

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

10. 修改并打开数据库

ALTER DATABASE OPEN;

11. 修改数据库字符集

ALTER DATABASE CHARACTER SET ZHS16GBK;

当提示我们:新字符集必须为旧字符集的超集合,使用以下命令:

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

12. 查看参数列表

select * from v$nls_parameters;

可以看到,此时已经改为了"ZHS16GBK"字符集。

13. 设置完成后,关闭数据库

SHUTDOWN IMMEDIATE;

14. 再次打开数据库

STARTUP OPEN;

15. 这时我们再使用之前的方式查看字符集

select userenv('language') from dual;

OK,ORLC 数据库的字符集就改为了"CHINESE_CHINA.ZHS16GBK"。

📚 相关推荐

中国海胆产地
英国365

中国海胆产地

📅 07-21 👁️ 3218
棤的意思,棤的解释,棤的拼音,棤的部首,棤的笔顺
苹果正成为一家领先的芯片公司
英国365

苹果正成为一家领先的芯片公司

📅 07-13 👁️ 9970
手机视频剪辑app哪个最好免费?这5款神器让你轻松上手
手机刷机软件哪个好用?这5个工具让刷机更简单
365bet娱乐场注册

手机刷机软件哪个好用?这5个工具让刷机更简单

📅 09-19 👁️ 1666
三角洲行动倍镜的瞳距是什么 三角洲行动倍镜的瞳距调整攻略
孔庆东作品集
365bet娱乐场注册

孔庆东作品集

📅 06-29 👁️ 1447
全国首条自行车高速在成都邛崃全线贯通:全封闭,一路敞骑
如何保存网上的GIF动态图
英国365

如何保存网上的GIF动态图

📅 07-15 👁️ 146