相剋軍 Oracle體系 隨堂筆記013 字符集

2021-09-08 10:23:04 字數 1640 閱讀 4859

linux環境下:

[root@single ~]# locale

lang=en_us.utf-8

lc_ctype="en_us.utf-8"

……windows環境下:

c:\users\martin>chcp

活動**頁: 936

字符集其實就是「字元」和「編碼」的一張對照表,

資料庫安裝過程中,會選擇確認下面兩個字符集:

1.資料庫字符集:資料庫需要儲存多國語言選擇al32utf8,只有中英文選擇zhs16gbk

2.國家字符集 一般都選用al16utf16

unicode字符集:

utf8 很老的,不用了。

al32utf8 目前最新的,建議用。

sql*plus客戶端設定原則:與所在作業系統字符集一致): 

windows:一般都是gbk,即chcp結果為936

set nls_lang=american_america.zhs16gbk

語言和地區為中文中國的話,set nls_lang=simplified chinese_china.zhs16gbk

linux:一般為utf-8,即echo $lang 結果為en_us.utf-8 或zh_cn.utf-8

export nls_lang=american_america.utf8

測試:客戶端linux,系統字符集為zh_cn.utf-8

正確設定:

export nls_lang=american_america.utf8

select dump('靖宇',1016) from dual;

insert into t2 values (1,'靖宇');

commit;

錯誤設定:

export nls_lang=american_america.zhs16gbk

select dump('靖宇',1016) from dual;

insert into t2 values (2,'靖宇');

commit;

注意:字符集設定錯誤導致庫中儲存的就是錯誤的編碼,這個幾乎是不可逆的`一定要慎重仔細設定好字符集。

伺服器上oracle字符集

如何確定當前字符集設定,何時可以更改字符集。

select userenv('language') from dual;

select * from v$nls_parameters;

了解超集,嚴格超集的概念,確定是否可以更改字符集。oracle不建議後期更改資料庫字符集!

伺服器作業系統字符集(暫時忽略)

ps:

1.因為sql*plus 本身沒有字符集,依賴於所在作業系統的字符集,而在遠端linux上的oracle也是無法直接訪問到windows上的字符集,所以依靠sql*plus的nls_lang設定來辨別。

2.因為oracle軟體本身有字符集,當軟體有自己的字符集時,就不用作業系統的字符集,所以伺服器作業系統字符集的因素可以暫時忽略。

相剋軍mysql 相剋軍 Oracle體系

linux環境下 root single locale lang en us.utf 8 lc ctype en us.utf 8 windows環境下 c users martin chcp 活動 頁 936 字符集其實就是 字元 和 編碼 的一張對照表,資料庫安裝過程中,會選擇確認下面兩個字符集...

學習筆記 oracle 體系結構

oracle體系結構 三大核心競爭力 可擴充性 可承受增長的工作負荷 可靠性 一般情況下不受影響 可管理性 可以微調其使用記憶體的方式 寫入資料的頻率等 oracle分為三個部分 sga 系統全域性區 pga 程式全域性區 後台程序 file檔案 功能劃分 儲存結構 控制檔案 資料結構 日誌檔案 物...

Oracle 筆記(一)體系結構

一 安裝 安裝過程中的幾個關鍵點 全域性資料庫名 系統識別符號 sid,例項名 伺服器引數檔案 spfile 例項名 ora 的配置 server network admin 資料夾下的引數檔案 listener.ora,tnsnames.ora 二 oracle 體系結構 1 例項 例項是後台程序...