【轉】 oracle 字符集 AL32UTF8、UTF8
簡介:ORACLE資料庫字符集,即Oracle全球化支援(Globalization Support),或即國家語言支援(NLS)其作用是用本國語言和格式來儲存、處理和檢索資料。利用全球化支援,ORACLE為使用者提供自己熟悉的資料庫母語環境,諸如日期格式、數字格式和儲存序列等。Oracle可以支援多種語言及字符集,其中oracle8i支援48種語言、76個國家地域、229種字符集,而oracle9i則支援57種語言、88個國家地域、235種字符集。由於oracle字符集種類多,且在儲存、檢索、遷移oracle資料時多個環節與字符集的設定密切相關,因此在實際的應用中,資料庫開發和管理人員經常會遇到有關oracle字符集方面的問題。
字符集,實質就是按照一定的字元編碼方案,對一組特定的符號,分別賦予不同數值編碼的集合。Oracle資料庫最早支援的編碼方案是US7ASCII。Oracle的字符集命名遵循以下命名規則:
AL32UTF8和UTF8有什麼區別呢?Oracle的UTF8字符集由來已久,至少在8的時候就已經存在了,而對應的是UNICODE 3.0。而AL32UTF8字符集是9i才出現的,其對應的是UNICODE 5.0。這兩種字符集的區別在於,UNICODE 5.0與3.0相比,又增加了一些新的補充字元。但是在實際當中,使用到這些新增字元的可能性非常小,因此絕大部分情況下,選擇UTF8也是足夠的。AL32UTF8字符集是9i才出現的,那麼對於9i以後的版本訪問沒有任何問題,但是對於8i及以前的版本,則不認識這個字符集。這就使得8i及更低版本的客戶端在訪問9i以上AL32UTF8的資料庫時,會碰到各種各樣的問題。因此,如果資料庫版本都在9i及其以上,不需要考慮ORACLE8的資料庫,建議使用AL32UTF8字符集,它採用的Unicode標準要比UTF8採用的Unicode標準更新,支援的字元也更多一些。如果要考慮ORACLE8資料庫,建議使用UTF8字符集,它的相容性好,在ORACLE8及8I資料庫上使用AL32UTF8字符集容易出現問題。隨著現在版本11g逐漸開始稱為主流版本,8i客戶端的情況已經越來越少見了,因此在11.2的DBCA中,UTF8已經不是推薦字符集列表中的一員了。我們在遇到不相容的問題時就要修改字符集。AL32UTF8-->UTF8修改字符集的步驟:
shutdown immediate; //關閉資料庫伺服器
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
alter session set sql_trace=false;
shutdown immediate;
startup;
下面是別人的一個例項:
#su - oracle
$sqlplus "/ as sysdba"
SQL*Plus: Release11.2.0.3.0 Production on Wed Apr 18 14:40:10 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL>
修改之前的字符集
SQL> select * fromv$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------- ----------------------------
NLS_CHARACTERSET AL32UTF8
SQL>
開始修改
SQL> shutdownimmediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1603411968 bytes
FixedSize 2226912 bytes
VariableSize 402654496 bytes
Database Buffers 1191182336bytes
RedoBuffers 7348224 bytes
Database mounted.
SQL> alter session setsql_trace=true;
Session altered.
SQL> alter systemenable restricted session;
System altered.
SQL> show parameterjob_queue_process
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 1000
SQL> alter system setjob_queue_processes=0;
System altered.
SQL> show parameteraq_tm_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
SQL> alter databaseopen;
Database altered.
SQL> alter databasecharacter set internal_use utf8;
Database altered.
SQL> alter session setsql_trace=false;
Session altered.
SQL> shutdownimmediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1603411968 bytes
FixedSize 2226912 bytes
VariableSize 402654496 bytes
Database Buffers 1191182336bytes
Redo Buffers 7348224 bytes
Database mounted.
Database opened.
SQL>
修改之後的字符集
SQL> select * fromv$nls_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
----------------- ----------------------------
NLS_CHARACTERSET UTF8
SQL>
--------end-------
有關oracle字符集的知識點可以參看下面兩篇帖子:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7191998/viewspace-763648/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 字符集 AL32UTF8、UTF8Oracle
- oracle字符集轉換(ZHS16GBK轉AL32UTF8)Oracle
- Linux下轉換字符集(UTF8轉換)Linux
- Oracle 12C 修改字符集為AL32UTF8研究Oracle
- Oracle 字符集從GBK升級到Utf8Oracle
- 更改Oracle字符集:把字符集ZHS16GBK換成UTF8Oracle
- ORACLE11G 字符集更改(這裡更改為AL32UTF8)Oracle
- mysql 字符集 utf8 for solaris 10MySql
- MySQL字符集設定及字元轉換(latin1轉utf8)MySql字元
- Oracle 12C 新特性之 db預設字符集AL32UTF8、PDB支援不同字符集Oracle
- oracle 字符集 (轉)Oracle
- mysql 字符集 latin1 轉換utf8血淚史 。MySql
- 理解ORACLE 字符集【轉】Oracle
- AL32UTF8 / UTF8 (Unicode) Database Character Set Implications [ID 788156.1]UnicodeDatabase
- Oracle如何使用spool匯出utf8字符集的文字檔案Oracle
- oracle字符集的更改【轉】Oracle
- 【字符集】論Oracle字符集“轉碼”過程Oracle
- MySQL 5.7 版本的 UTF8 字符集調研MySql
- 測試用 oracle11g更改字符集AL32UTF8為ZHS16GBKOracle
- oracle字符集轉換分析工具Oracle
- 【轉】修改Oracle字符集(character set)Oracle
- 轉_oracle的字符集_源於多位元組字符集Oracle
- 遷移資料時oracle字符集的轉換遷移資料時oracle字符集的轉換Oracle
- linux下設定mysql資料庫字符集utf8LinuxMySql資料庫
- mysql 字符集:utf8和utf8mb4區別MySql
- 生產oracle字符集轉碼問題Oracle
- (轉)Oracle 字符集的檢視和修改Oracle
- ORACLE字符集問題總結 (轉載)Oracle
- Oracle 字符集的檢視和修改(轉)Oracle
- 巧妙轉換ORACLE資料庫字符集Oracle資料庫
- Oracle字符集問題總結(轉貼)Oracle
- oracle資料庫字符集的轉換Oracle資料庫
- Oracle字符集Oracle
- Oracle 字符集Oracle
- Oracle資料庫字符集問題解析(轉)Oracle資料庫
- 雙位元組中文字符集匯出的DMP檔案匯入UTF8字符集
- 字符集為ZHS16GBK的資料庫匯入到字符集為AL32UTF8的資料庫資料庫
- 一個UTF8字符集相關問題的解決