Oracle数据库如果出现乱码,需要查看是否时字符集不一致导致乱码,这样解决

1、如果出现乱码,需要查看是否时字符集不一致导致乱码

以修改为ZHS16GBK字符集为例,具体字符集需要sql查询。

Oracle查看字符集

bash 复制代码
SELECT * FROM NLS_DATABASE_PARAMETERS p where p.PARAMETER='NLS_CHARACTERSET';
SELECT USERENV('language') FROM DUAL;

1.首先以sysdba的身份登录上去 conn /as sysdba

bash 复制代码
sqlplus / as sysdba

2.关闭数据库

bash 复制代码
SQL> shutdown immediate

3.以mount(挂载方式)打开数据库

bash 复制代码
SQL> startup mount

4.设置session

bash 复制代码
 SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
     
 SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
     
 SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

5.启动数据库

bash 复制代码
SQL> alter database open;

6.修改字符集

bash 复制代码
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

可能会报错,提示我们的字符集:新字符集必须为旧字符集的超集,跳过超集检查做更改:

bash 复制代码
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

这条语句就可以了,TERNAL_USE提供的帮助就会使oracle绕过了子集与超集的验证,这条语句和上面的语句内部操作时完全相同的。

7.关闭数据库,重新启动

bash 复制代码
 SQL>shutdown immediate
     
    SQL> startup
相关推荐
猹叉叉(学习版)10 分钟前
【ASP.NET CORE】 6. 中间件
数据库·笔记·后端·中间件·c#·asp.net·.netcore
高铭杰11 分钟前
Postgresql源码(152)Transaction Redo (RM_XACT_ID = 1)
数据库·postgresql·xact
Zzzzmo_12 分钟前
【MySQL】视图
数据库·mysql
就不掉头发18 分钟前
Linux与数据库
linux·运维·数据库
Predestination王瀞潞21 分钟前
基于 `SqlSession` 的事务手动管理机制
数据库·oracle·java-ee
李慕婉学姐26 分钟前
Springboot传统文化服饰交流平台k79z52ic(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
Predestination王瀞潞40 分钟前
映射文件中的四大核心 CRUD 操作标签(对应数据库的增、删、改、查操作)
数据库·oracle
IvorySQL44 分钟前
PostgreSQL 技术日报 (3 月 12 日)|为什么加索引反而变慢?这招让查询快 50 倍
数据库·postgresql·开源
y = xⁿ1 小时前
【从零开始学习Redis|第五篇】Redis 常见数据类型和应用场景
数据库·redis·学习·缓存