修改 Oracle 数据库实例字符集
2021/10/24 2:13:05
本文主要是介绍修改 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"。
这篇关于修改 Oracle 数据库实例字符集的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享