相剋軍mysql 相剋軍 Oracle體系

2021-10-18 07:29:02 字數 1473 閱讀 3616

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軟體本身有字符集,當軟體有自己的字符集時,就不用作業系統的字符集,所以伺服器作業系統字符集的因素可以暫時忽略。

相剋軍 SQL語句解析型別 硬解析 軟解析

一 shared pool的組成 3塊區域 free library cache row cache select from v sgastat a where a.name library cache select from v sgastat a where a.pool shared pool...

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

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

魔獸爭霸兵種相剋表 終極研究

輕型中型 重型加強型 英雄 無裝甲 普通100 150 100 70 100 100 穿刺200 75 100 35 50 150 攻城100 50 100 150 50 150 魔法125 75 200 35 50 100 混亂100 100 100 100 100 100 符咒100 100 1...