Linux系統下Oracle顯示中文亂碼

1.Oracle數據庫出現亂碼的原因:
操作系統與服務器一致,但客戶端與服務器字符集不一致
客戶端與服務器一致,但操作系統與服務器不一致
2.解決辦法:
設置相關的字符集,保證操作系統、客戶端、數據庫服務器,保證這三者的字符集都相同。
3.針對情況:
設置客戶端的字符集與服務器一致,假如服務器的字符集爲:UTF8(建議創建數據庫的時候用這個字符集,中英文都能兼容)

1)查看操作系統字符集

# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

查看默認是zh_CN.UTF-8,rhel7配置文件是locale.conf

# vi /etc/locale.conf
LANG="zh_CN.UTF-8"

2)查看數據庫字符集
$ su - oracle

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

3)編輯linux 的NLS_LANG變量

$ vi .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
LANG=zh_CN.UTF-8; export LANG
#NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'; export NLS_LANG
NLS_LANG='AMERICAN_AMERICA.AL32UTF8'; export NLS_LANG

配置生效:source ~/.bash_profile

4)ORACLE11G 字符集更改(這裏更改爲AL32UTF8)

1、用sysdba角色用戶登錄sqlplus: 命令行輸入:sqlplus sys as sysdba

2、輸入口令,進入sqlplus:sql>---

3、依次鍵入下面的命令行執行:

shutdown immediate;
STARTUP MOUNT;
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE character set INTERNAL_USE AL32UTF8;
ALTER SESSION SET SQL_TRACE=FALSE;
shutdown immediate;
startup;

注意:執行上述命令,有可能造成數據庫中已有數據混亂的情況,所以在進行操作前,

要進行數據庫的備份操作。

參考地址:

1.https://www.linuxidc.com/Linux/2018-01/150458.htm

2.https://www.cnblogs.com/gaoyuechen/p/9447404.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章