壹、oracle服務器字符集查詢
從dual中選擇userenv(“語言”)
其中nls _ characters set是服務器端字符集。
NLS語言是服務器端的字符顯示形式。
b、查詢oracle客戶端的字符集。
$回聲$ NLS _朗
如果您發現您選擇的數據是亂碼,請將客戶端的字符集配置為與linux操作系統相同的字符集。如果仍然有亂碼,可能是數據庫中的數據或oracle服務器的配置有問題。
c、服務器端字符集修改
以受限模式啟動數據庫以更改字符集:
SQL & gtconn/作為sysdba連接。
SQL & gt立即關閉;
數據庫關閉。
數據庫已卸載。
ORACLE實例關閉。
SQL & gt啟動裝載ORACLE實例已開始。
總系統全局區236000356字節
固定大小451684字節
可變大小201326592字節
數據庫緩沖區33554432字節
重做緩沖區667648字節
數據庫已安裝。
SQL & gtALTER SYSTEM啟用受限會話;
系統改變了。
SQL & gtALTER SYSTEM SET JOB _ QUEUE _ PROCESSES = 0;
系統改變了。
SQL & gt請更改系統設置AQ進程= 0;
系統改變了。
SQL & gt打開數據庫;
數據庫改變了。
SQL & gt更改數據庫字符集zhs 16 gbk;
第1行出現ALTER DATABASE CHARACTER SET zhs 16 gbk錯誤:
ORA-12712:新字符集必須是舊字符集的超集
提示我們的字符集:新字符集必須是舊字符集的超集。此時,我們可以跳過對超集的檢查並進行更改:
SQL & gt更改數據庫字符集INTERNAL _ USE zhs 16 gbk;
數據庫改變了。
SQL & gtselect * from v$nls _ parameters;
省略
選擇了19行。
重新啟動以檢查更改是否完成:
SQL & gt立即關閉;
數據庫關閉。
數據庫已卸載。
ORACLE實例關閉。
SQL & gt啟動ORACLE實例已開始。
總系統全局區236000356字節
固定大小451684字節
可變大小201326592字節
數據庫緩沖區33554432字節
重做緩沖區667648字節
數據庫已安裝。
數據庫已打開。
SQL & gtselect * from v$nls _ parameters;
省略
選擇了19行。
我們看到這個過程和前面ALTER DATABASE字符集操作的內部過程壹模壹樣,也就是說INTERNAL_USE提供的幫助就是讓Oracle數據庫繞過子集和超集的檢查。
這種方法在某些方面是有用的,比如測試;每個人在應用到產品環境的時候都要格外小心,後果除了妳沒人負責。
結論(我們不妨再說壹遍):
對於DBA來說,有壹個非常重要的原則:不要把妳的數據庫置於危險之中!
這就要求我們在任何可能改變數據庫結構的操作之前,進行有效的備份。很多沒有備份的DBA的操作都有過慘痛的教訓。
d、客戶端字符集修改
在/home/oracle和/root用戶目錄下。在bash_profile中
添加或修改export NLS _朗= "美國_美國. utf8 "語句。