oracle相关,  个人笔记

修改oracle数据库字符集

查询linux字符集:locale -a

oracleoracleoracleoracle数据库中文乱码问题解决方案数据库中文乱码问题
解决方案数据库中文乱码问题解决方案数据库中文乱码问题解决方案

查看数据库服务器端的字符编码查看数据库服务器端的字符编码查看数据库服务器端的字符编码查看数据库服务器端的字符编码
SQL>SELECT * FROM NLS_DATABASE_PARAMETERS;
我对显示为AL32UTF8显示不正确,将其改为ZHS16GBK中文编码,
步骤如下:
先停止本数据库服务: SQL>shutdown immediate;
数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 这些信息是更改正确字符集后的提示信息,一般应该是英文的)
再启动数据库
SQL>startup restrict; 此处要注意启动方式要加 restrict参数
ORACLE 例程已经启动。
Total System Global Area 603979776 bytes Fixed Size 1220796 bytes Variable Size 180358980 bytes Database Buffers 415236096 bytes Redo Buffers 7163904 bytes
数据库装载完毕。 数据库已经打开。

修改字符集
SQL> alter session set sql_trace=true;
Session altered. SQL> alter system enable restricted session;
System altered.
SQL> alter system set job_queue_processes=0;
System altered.
SQL> alter system set aq_tm_processes=0;
System altered.
SQL> alter database open;
Database altered.
SQL> alter database character set zhs16gbk;
Database altered.

重启数据库
SQL> shutdown immediate; SQL> startup;
ERROR at line 1: ORA-12721: operation cannot execute when other sessions are active
若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; SQL>SHUTDOWN IMMEDIATE SQL>STARTU

查看和修改客户端字符集查看和修改客户端字符集查看和修改客户端字符集查看和修改客户端字符集
客户端 NLS_LANG 的设置方法
Windows: #
常用中文字符集 set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK #
常用unicode字符集 set NLS_LANG=american_america.AL32UTF8
可以通过修改注册表键值永久设置 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
Unix: #
常用unicode字符集 export NLS_LANG=amer问题ican_america.AL32UTF8 # (这个可解决)

常用中文字符集 export 可以编辑 bash_profile 文件进行永久设置 vi .bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" or export NLS_LANG="Simplified Chinese_china".ZHS16GBK

使 bash_profile 设置生效
source .bash_profile

修改oracle数据库字符集已关闭评论