當前位置:成語大全網 - 漢語詞典 - 如何查看Oracle數據庫字符集,詳細操作,xx

如何查看Oracle數據庫字符集,詳細操作,xx

從props$派生的數據庫服務器字符集select * from NLS數據庫參數是表示數據庫的字符集。

客戶端字符集環境select * from NLS _實例_參數,派生自v $參數,

表示客戶端字符集的設置,可能是參數文件、環境變量或註冊表。

會話字符集環境select * from nls _ session _ parameters,來自v$nls_parameters,表示會話本身的設置,可能是會話的環境變量,也可能是alter session的完成。如果會話沒有特殊設置,將與nls_instance_parameters壹致。

客戶端的字符集應該與服務器的字符集壹致,以便正確顯示數據庫的非Ascii字符。如果存在多個設置,請更改會話>:環境變量>註冊表>參數文件

字符集是壹致的,但是語言設置可以不同。語言設置建議使用英語。如果字符集是zhs16gbk,nls_lang可以是American _ America。ZHS 16GBK。

字符集涉及三個方面,

1.oracel服務器字符集;

2.Oracle客戶端的字符集;

3.DMP文件的字符集。

導入數據時,三種字符集需要保持壹致才能正確導入。

2.1查詢oracle服務器的字符集

查找oracle服務器字符集的方法有很多,比較直觀的查詢方法如下:

SQL & gt從dual中選擇userenv(' language ');

USERENV('語言')

-

簡體中文_中國。ZHS16GBK

SQL & gt從dual中選擇userenv(' language ');

美國航空公司。ZHS16GBK

2.2如何查詢dmp文件的字符集

oracle的exp工具導出的dmp文件也包含字符集信息,dmp文件的第二個和第三個字節記錄了dmp文件的字符集。如果dmp文件不大,比如只有幾米或者幾十米,可以用UltraEdit (16十六進制模式)打開,看看第二個和第三個字節的內容,比如0354,然後用下面的SQL找出它對應的字符集:

SQL & gt從dual中選擇nls _ charset _ name(to _ number(' 0354 ',' xxxx ');

ZHS16GBK

如果dmp文件很大,比如超過2G(這也是最常見的情況),可以用文本編輯器慢慢打開或者完全打開。您可以使用以下命令(在unix主機上):

cat exp . DMP | od-x | head-1 | awk“{ print $ 2 $ 3 }”| cut-c 3-6

然後使用上面的SQL就可以得到相應的字符集。

2.3查詢oracle客戶端字符集

在windows平臺下,是註冊表中OracleHome的NLS_LANG。也可以在dos窗口中自己設置。

例如:set nls _ lang = American _ America . zhs 16 gbk

這只影響該窗口中的環境變量。

在unix平臺下,它是環境變量NLS _朗。

$回聲$ NLS _朗

美國航空公司。ZHS16GBK

如果檢查結果顯示服務器和客戶端的字符集不壹致,請將其修改為與服務器相同的字符集。

補充:

(1).數據庫服務器字符集

select * from nls _ database _ parameters

從props$派生而來,它是壹個表示數據庫的字符集。

(2).客戶端字符集環境

select * from nls _ instance _ parameters

它來自v$parameter,表示客戶端字符集的設置,可能是參數文件、環境變量或者註冊表。

(3)會話字符集環境

select * from nls _會話_參數

派生自v$nls_parameters,表示會話本身的設置,可能是會話的環境變量,也可能是alter session的完成。如果會話沒有特殊設置,將與nls_instance_parameters壹致。

(4)客戶端的字符集要和服務器端的字符集壹致,這樣才能正確顯示數據庫的非Ascii字符。

如果存在多個設置,則NLS函數的優先級:SQL函數>;更改會話& gt環境變量或註冊表>;參數文件>數據庫默認參數

字符集是壹致的,但是語言設置可以不同。語言設置建議使用英語。如果字符集是zhs16gbk,nls_lang可以是American _ America。ZHS 16GBK。