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
相关推荐
r***113312 分钟前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
冉冰学姐13 分钟前
SSM计算机课程在线教育服务平台xpwo1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库
G***E3161 小时前
MySQL增强现实案例
数据库·mysql·ar
枫叶丹41 小时前
openGauss:面向数字时代的下一代企业级开源关系型数据库
开发语言·数据库·开源·自动化
苦学编程的谢1 小时前
Redis_16_哨兵
数据库·redis·缓存
w***74401 小时前
SQL Server 数据库迁移到 MySQL 的完整指南
android·数据库·mysql
一 乐2 小时前
健身达人小程序|基于java+vue健身达人小程序的系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序
q***78782 小时前
PostgreSQL的备份方式
数据库·postgresql
Austindatabases3 小时前
SQLite3 如果突发断电,关机,数据会丢还是不会丢?
数据库·sqlite
cqsztech5 小时前
windows上主机名长度超过16个字符导致连接报:ORA-12518
oracle