Oracle資料庫字符集介紹
來自:oracle_kai的個人空間
子集和超集的概念
如果字符集a的所有編碼存在於字符集b中,並且同一個編碼在字符集a編碼和字符集b中代表同樣的字元,則稱b是a的超級,a為b的子集,如us7ascii為zhs16cgb231280的子集,值得注意的是,對於中文環境中,zhs16cgb231280和zhs16gbk,雖然前者所有的字元都在後者中存在,但同一編碼在這二個字符集中可能代表不同字元,所以,zhs16gbk不是說是zhs16cgb2312280的超集。
資料庫字符集和國家字符集
在建立資料庫的sql中有character set和national character set指定.
資料庫字符集用來存放char,varchar2,clob,long等型別資料,sql及pl/sql程式單元等
國家字符集用來存放nchar,nvarchar2,nclob,nlong等類新資料.
oracle字符集命名規則
如zhs16gbk表示語言為中文,採用雙位元組16位編碼,gbk編碼。
us7ascill表示語言為英語,採用單位元組7位編碼,ascill編碼。
如何取得客戶端作業系統的當前字符集
window作業系統,用chcp,如結果為936,則代表為zhs16gbk,具體可以去微軟網站查詢。
Unix 作業系統,用echo $NLS_LANG 或者env|grep NLS_LANG
如何檢視客戶端的字符集設定
客戶端字符集透過nls_lang來設定,nls_lang的格式
如nls_lang=American_America.us7ascii
window作業系統,用echo %NLS_LANG%
Unix 作業系統,用echo $NLS_LANG 或者env|grep NLS_LANG
如何檢視資料庫字符集
dba使用者可以查資料字典表props及nls_database_parameters
SQL> select name,value$ from props$;
NLS_CHARACTERSET ZHS16CGB231280
select * from nls_database_parameters;
NLS_CHARACTERSET ZHS16CGB231280
普通使用者可以用userenv這個函式去檢視當前資料庫的字符集
SQL> SELECTUSERENV('LANGUAGE')FROM DUAL;
USERENV('LANGUAGE')
--------------------------------------------
AMERICAN_AMERICA.ZHS16CGB231280
Exp/imp匯入匯出涉及的字符集問題
1:Exp的時候,設定客戶端的字符集和匯出資料庫的字符集一致,這樣,匯出檔案將和匯出資料庫具有相同的字符集,避免了匯出資料庫與匯出檔案之間的字符集轉換
2:匯入的時候,設定客戶端的字符集為匯出檔案的字符集,這樣避免了匯出檔案與匯入客戶端字符集的轉換,如果此時匯入客戶端字符集不等於資料庫字符集,那麼在資料庫會負責匯入客戶端字符集到資料庫字符集的轉換。
3:匯出的時候,匯出客戶端的字符集存放在匯出檔案的第二,三個位元組(16進位制),下面的二個函式可以幫助我們識別字符集編碼和數值之間的關係。
SQL> select nls_charset_name(852) from dual;
NLS_CHARSET_NAME
----------------
ZHS16GBK
SQL> select nls_charset_ID('ZHS16CGB231280') FROM DUAL;
NLS_CHARSET_ID('ZHS16CGB231280')
--------------------------------
850
關於字符集的修改
一:alter database character set zhs16cgb231280
可以用在子集到超級的修改
二:alter database character set internal_use zhs16cgb231280
該語句不受子集和超集的限制,強制性轉換
(修改前,切記要備份)
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE例程已經關閉。
SQL> startup mount
ORACLE例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
SQL>alter system enable restricted session;
系統已更改。
SQL>alter system set job_queue_processes=0;
系統已更改。
SQL>alter system set aq_tm_processes=0;
系統已更改。
SQL> alter database open;
資料庫已更改。
SQL>alter database character set internal_use zhs16cgb231280;
資料庫已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28612416/viewspace-765077/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle字符集介紹Oracle
- 資料倉儲—資料庫—Oracle 介紹資料庫Oracle
- Oracle資料庫審計功能介紹Oracle資料庫
- 資料庫介紹資料庫
- 常用Oracle資料庫調優工具介紹Oracle資料庫
- 修改Oracle資料庫字符集Oracle資料庫
- oracle資料庫字符集資訊Oracle資料庫
- 資料庫介紹--初識資料庫資料庫
- IndexedDB資料庫介紹Index資料庫
- oracle國家字符集與資料庫字符集Oracle資料庫
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- oracle資料庫的字符集更改Oracle資料庫
- 檢視oracle資料庫字符集Oracle資料庫
- Oracle資料庫字符集問題Oracle資料庫
- Oracle資料庫字符集淺析Oracle資料庫
- L10資料庫——資料庫介紹資料庫
- Oracle資料庫event事件與dump檔案介紹Oracle資料庫事件
- Oracle資料庫登入流程的步驟介紹Oracle資料庫
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- MySQL資料庫鎖介紹MySql資料庫
- postgresql資料庫鎖介紹SQL資料庫
- Oracle資料型別介紹Oracle資料型別
- ORACLE常用資料字典介紹Oracle
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- Oracle資料庫字符集問題解析Oracle資料庫
- 巧妙轉換ORACLE資料庫字符集Oracle資料庫
- oracle資料庫字符集的轉換Oracle資料庫
- Oracle資料庫字符集分析之一Oracle資料庫
- 【Python Oracle】使用cx_Oracle 進行資料庫操作介紹PythonOracle資料庫
- [轉]Oracle資料庫ASH和AWR的簡單介紹Oracle資料庫
- Oracle資料庫使用者安全策略功能介紹Oracle資料庫
- Oracle資料庫效能障礙分析利器:SYSTEMSTATE DUMP介紹Oracle資料庫
- Oracle資料庫管理指令碼介紹 (RDBMS目錄下)Oracle資料庫指令碼
- 資料庫安全知識介紹資料庫
- QuestDB時序資料庫介紹資料庫
- HSQL 資料庫介紹(2)--使用SQL資料庫
- Oracle資料字典的用途介紹Oracle
- Oracle資料庫字符集的全面認識Oracle資料庫