rdbms 11.2.0.4
昨天運維提出了乙個問題,在securecrt上執行乙個查詢的時候返回0,但是在plsql developer上查詢的時候,返回是有值的。
這個語句中有個條件,where status in ('漢字1','漢字2','漢字3'); 懷疑是字符集的問題,導致傳送到伺服器上的時候是亂碼,按照這寫亂碼進行條件查詢,當然查詢不到了。
在其他的客戶端查詢也是這個問題。
查詢資料庫的字符集。通過檢視v$nls_parameters查詢出nls_date_language是simplified chinese,nls_characterset是al32utf8。
在作業系統上設定變數
在作業系統上設定nls_lang為simplified chinese.al32utf8
[oracle@oralinux1 ~]$ export nls_lang="simplified chinese.al32utf8"
[oracle@oralinux1 ~]$ env | grep nls_lang
nls_lang=simplified chinese.al32utf8
[oracle@oralinux1 ~]$
登入sqlplus 再次檢視結果(之前查詢所有的漢字顯示都是問號或亂碼)
[oracle@oralinux1 ~]$ sqlplus /nolog
sql*plus: release 11.2.0.4.0 production on 星期三 9月 18 01:26:56 2019
sql> conn ***x/***xx
connected.
sql> select id,name from sys_using_info;
id name
---------- --------------------
111 你好
112 你壞
113117 弄不好
118 你不壞
119 滾蛋
121 哈哈
123 呵呵
109 噼里啪啦
110 哦哦
115 按按
id name
---------- --------------------
116 各個
114 的的
120 開機啊
122 局阿凡達
15 rows selected.
sql>
通過以上的設定後,在使用 之前的where條件進行查詢,返回值了。
end
修改Oracle資料庫中亂碼問題
乙個同事使用windows作業系統中文環境安裝完10g以後,因為工作需要需要使用日文的作業系統。相應的資料庫也應該是日文。這時候資料庫中預設的為中文的字符集,因為安裝資料庫的時候預設的字符集是根據系統而來的。改過作業系統的語言設定以後,oracle10g內部出現亂碼。一般情況下這種的最好該一下登錄檔...
oracle跨資料庫通訊亂碼問題
oracle不同資料庫之間可以通過dblink進行通訊,但是如果兩個資料庫是不同字符集,那麼在獲取中文字元時可能顯示的就是亂碼。假設 資料庫a字符集為simplified chinese china.zhs16gbk 下有表aa 資料庫b字符集為american america.we8iso8859...
解決oracle資料庫中文亂碼問題
中文亂碼問題解決 1.檢視伺服器端編碼 select userenv language from dual 我實際查到的結果為 american america.zhs16gbk 2.執行語句 select from v nls parameters 檢視第一行中parameter項中為nls la...