生活随笔
收集整理的這篇文章主要介紹了
查看和修改Oracle数据库服务器端的字符集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle數據庫查看和修改服務器端的字符集的方法是本文主要要介紹的內容,接下來救讓我們一起來了解一下這部分內容。
A、oracle server 端字符集查詢
select userenv(‘language’) from dual
其中NLS_CHARACTERSET 為server端字符集
NLS_LANGUAGE 為 server端字符顯示形式
B、查詢oracle client端的字符集
$echo $NLS_LANG
如果發(fā)現你select 出來的數據是亂碼,請把client端的字符集配置成與linux操作系統(tǒng)相同的字符集。如果還是有亂碼,則有可能是數據庫中的數據存在問題,或者是oracle服務端的配置存在問題。
C、server端字符集修改
將數據庫啟動到RESTRICTED模式下做字符集更改:
SQL>?conn?/as?sysdba ?Connected. ?SQL>?shutdown?immediate; ?Database?closed. ?Database?dismounted. ?ORACLE?instance?shut?down. ?SQL>?startup?mount ?ORACLE?instance?started. ?Total?System?Global?Area?236000356?bytes ?Fixed?Size???????????????????451684?bytes ?Variable?Size?????????????201326592?bytes ?Database?Buffers???????????33554432?bytes ?Redo?Buffers?????????????????667648?bytes ?Database?mounted. ?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; ?ALTER?DATABASE?CHARACTER?SET?ZHS16GBK ?ERROR?at?line?1: ?ORA-12712:?new?character?set?must?be?a?superset?of?old?character?set?
提示我們的字符集:新字符集必須為舊字符集的超集,這時我們可以跳過超集的檢查做更改:
SQL>?ALTER?DATABASE?character?set?INTERNAL_USE?ZHS16GBK; ?Database?altered. ?SQL>?select?*?from?v$nls_parameters; ?略 ?19?rows?selected.?
重啟檢查是否更改完成:
SQL>?shutdown?immediate; ?Database?closed. ?Database?dismounted. ?ORACLE?instance?shut?down. ?SQL>?startup ?ORACLE?instance?started. ?Total?System?Global?Area?236000356?bytes ?Fixed?Size???????????????????451684?bytes ?Variable?Size?????????????201326592?bytes ?Database?Buffers???????????33554432?bytes ?Redo?Buffers?????????????????667648?bytes ?Database?mounted. ?Database?opened. ?SQL>?select?*?from?v$nls_parameters; ?略 ?19?rows?selected.?
我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使Oracle數據庫繞過了子集與超集的校驗.
這一方法在某些方面是有用處的,比如測試;應用于產品環(huán)境大家應該格外小心,除了你以外,沒有人會為此帶來的后果負責。
結語(我們不妨再說一次):
對于DBA來說,有一個很重要的原則就是:不要把你的數據庫置于危險的境地!
這就要求我們,在進行任何可能對數據庫結構發(fā)生改變的操作之前,先做有效的備份,很多DBA沒有備份的操作中得到了慘痛的教訓。
D、client端字符集修改
在 /home/oracle與 /root用戶目錄下的.bash_profile中
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句
關閉當前ssh窗口。
注意:NLS_LANG變量一定要配置正確否則會引起sqlplus 失效。
本文轉自:http://database.51cto.com/art/201108/283596.htm
?
總結
以上是生活随笔為你收集整理的查看和修改Oracle数据库服务器端的字符集的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。