oracle資料庫字符集

2021-04-19 02:16:14 字數 1590 閱讀 9930

一、什麼是oracle字符集

oracle字符集是乙個位元組資料的解釋的符號集合,有大小之分,有相互的包容關係。oracle 支援國家語言的體系結構允許你使用本地化語言來儲存,處理,檢索資料。它使資料庫工具,錯誤訊息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平台。

影響oracle資料庫字符集最重要的引數是nls_lang引數。它的格式如下:

nls_lang = language_territory.charset

它有三個組成部分(語言、地域和字符集),每個成分控制了nls子集的特性。其中:

language 指定伺服器訊息的語言,territory 指定伺服器的日期和數字格式,charset 指定字符集。如:american _ america. zhs16gbk

從nls_lang的組成我們可以看出,真正影響資料庫字符集的其實是第三部分。所以兩個資料庫之間的字符集只要第三部分一樣就可以相互匯入匯出資料,前面影響的只是提示資訊是中文還是英文。

二、如何查詢oracle的字符集

很多人都碰到過因為字符集不同而使資料匯入失敗的情況。這涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp檔案的字符集。在做資料匯入的時候,需要這三個字符集都一致才能正確匯入。

1、查詢oracle server端的字符集

有很多種方法可以查出oracle server端的字符集,比較直觀的查詢方法是以下這種:sql>select userenv(『language』) from dual;

結果類似如下:american _ america. zhs16gbk

2、如何查詢dmp檔案的字符集

用oracle的exp工具匯出的dmp檔案也包含了字符集資訊,dmp檔案的第2和第3個位元組記錄了dmp檔案的字符集。如果dmp檔案不大,比如只有幾m或幾十m,可以用ultraedit開啟(16進製制方式),看第2第3個位元組的內容,如0354,然後用以下sql查出它對應的字符集:

sql> select nls_charset_name(to_number('0354','***x')) from dual;

zhs16gbk

如果dmp檔案很大,比如有2g以上(這也是最常見的情況),用文字編輯器開啟很慢或者完全打不開,可以用以下命令(在unix主機上):

cat exp.dmp |od -x|head -1|awk ''|cut -c 3-6

然後用上述sql也可以得到它對應的字符集。

3、查詢oracle client端的字符集

這個比較簡單。在windows平台下,就是登錄檔裡面相應oraclehome的nls_lang。還可以在dos視窗裡面自己設定,比如:

set nls_lang=american_america.zhs16gbk

這樣就只影響這個視窗裡面的環境變數。

在unix平台下,就是環境變數nls_lang。

$echo $nls_lang

american_america.zhs16gbk

如果檢查的結果發現server端與client端字符集不一致,請統一修改為同server端相同的字符集。

三、修改oracle的字元

oracle 資料庫字符集

oracle全球支援 即globalization support 允許我們使用本地語言和格式來儲存和檢索資料。通過全球支援,oracle可以支援多種語言及字符集,得以展示資料庫的強大魅力。1 字符集的基本知識 如果從頭說起,字符集最早的編碼方案來自於與ascii.這也是我們最常見的編碼方式。該方案...

oracle資料庫字符集查詢

1 資料庫伺服器字符集 select from nls database parameters,其 於props 是表示資料庫的字符集。查詢結果如下 nls language american nls territory america nls currency nls iso currency a...

修改oracle資料庫字符集

關閉db1,保留乙個節點 sql shutdown immediate 在db1上以root使用者執行,停止該節點的cluster服務 crsctl stop crs 在db2上檢視是否使用sfile啟動 sql show parameter spfile 若value為空,表示用pfile引數啟動...