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
相关推荐
静听山水9 分钟前
mysql语句执行过程
数据库·mysql
虽千万人 吾往矣27 分钟前
golang gorm
开发语言·数据库·后端·tcp/ip·golang
mariokkm1 小时前
Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案
数据库·django·sqlite
Wang's Blog2 小时前
Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息
数据库·redis
容器( ु⁎ᴗ_ᴗ⁎)ु.。oO2 小时前
MySQL事务
数据库·mysql
cyt涛4 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
Rookie也要加油4 小时前
01_SQLite
数据库·sqlite
liuxin334455664 小时前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
少女的迷鹿5 小时前
Paper:NSG(Navigating Spreading-out Graph)
数据库
看山还是山,看水还是。5 小时前
MySQL 管理
数据库·笔记·mysql·adb