Oracle 12C 修改字符集為AL32UTF8研究
有這樣一個問題:PDB字符集能否從ZHS16GBK修改為AL32UTF8?
答案:由於CDB為ZHS16GBK,導致PDB不能修改。
針對這個問題作了一下學習,記錄一下。
1、遷移轉換字符集方法:
12C :只有DMU這個工具
10g/11g :csscan/ csalter /部分 exp/imp
8i/9i :Alter Database Character Set () / 部分 exp/imp
2、AL32UTF8 是一個變寬度的字符集,表示為 1 個字元的程式碼可以是 1,2,3 或 4 個位元組長。
這 與 WE8ISO8859P1 或 WE8MSWIN1252 字符集中 1 字元始終是 1 個位元組有很大的區別。
3、使用 AL32UTF8資料庫會增長,最大的擴充套件將會發生在 CLOB 型別上(或者 XMLtype – 該型別後臺使用 CLOB),
如果源資料 庫是 8 bit 字符集(WE8ISO8859P1,WE8MSWIN1252 等),那麼轉換後的 Clob 列會在磁碟 大小上變成原來的兩倍。
4、CDB不能轉換字符集,只能重新建立CDB。DMU 是PDB轉換字符集的唯一工具;
5、截至2019.9.8,DMU最新版本為19.1,使用過程圖形介面有卡死現象。DMU用於轉換資料的過程是:
將資料庫置於受限模式。
禁用各種作業佇列程式。
刪除或禁用所選索引。
禁用選定的觸發器和約束。
將使用者表和選定資料字典表中的資料轉換為Unicode。
轉換CLOB資料字典中的列。
發表ALTER DATABASE CHARACTER SET宣告。
啟用觸發器和約束; 並重新建立索引和約束。
恢復資料庫例項引數。
6、使用9i 傳統方法alter database character set INTERNAL_USE AL32UTF8; 修改CDB測試成功,但oracle官方不推薦。該方法並未執行兩個步驟:將使用者表和選定資料字典表中的資料轉換為Unicode 和 轉換CLOB資料字典中的列。這兩關鍵步驟只能透過DMU實行。
測試:使用該方法切換CDB字符集從ZHS16GBK到AL32UTF8成功,同時PDB$SEED也自動變化;但按官方說法切換不完整,不贊成這樣做。
7、NLS_NCHAR_CHARACTERSET("國家字符集")定義了 NCHAR,NVARCHAR2 和 NCLOB 列 的編碼並且在 9i 及以上版本已經是 Unicode了(參見 Note 276914.1 The National Character Set in Oracle 9i 10g and 11g)。
8、NLS_CHARACTERSET("字符集")定義了"普通的" CHAR,VARCHAR2,LONG 和 CLOB列編 碼,這些也可以被用於存放 Unicode。在這樣的情況下需要 AL32UTF8 或者 UTF8 NLS_CHARACTERSET 資料庫。
參考文件:
AL32UTF8/UTF8(Unicode)資料庫字符集含義 (文件 ID 1946289.1)
如何選擇或更改資料庫字符集 (NLS_CHARACTERSET) (文件 ID 1525394.1)
The Database Migration Assistant for Unicode (DMU) Tool (文件 ID 1272374.1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2656416/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12C 新特性之 db預設字符集AL32UTF8、PDB支援不同字符集Oracle
- ORACLE11G 字符集更改(這裡更改為AL32UTF8)Oracle
- oracle 字符集 AL32UTF8、UTF8Oracle
- 【轉】 oracle 字符集 AL32UTF8、UTF8Oracle
- Oracle 字符集修改Oracle
- 修改oracle字符集Oracle
- oracle修改字符集Oracle
- oracle字符集修改Oracle
- oracle 修改字符集Oracle
- 修改Oracle字符集為ZHS16GBKOracle
- oracle之修改字符集Oracle
- Oracle修改資料字符集Oracle
- 修改oracle client 的字符集Oracleclient
- 測試用 oracle11g更改字符集AL32UTF8為ZHS16GBKOracle
- oracle字符集轉換(ZHS16GBK轉AL32UTF8)Oracle
- Oracle 11g 修改字符集 為 ZHS16GBKOracle
- 怎樣修改檢視Oracle字符集及怎樣修改字符集 ztOracle
- 修改Oracle資料庫字符集Oracle資料庫
- oracle 字符集檢視與修改Oracle
- 檢視和修改Oracle字符集Oracle
- 【轉】修改Oracle字符集(character set)Oracle
- Linux下修改Oracle字符集LinuxOracle
- ORACLE 修改資料庫的字符集編碼為UTF-8Oracle資料庫
- 字符集為ZHS16GBK的資料庫匯入到字符集為AL32UTF8的資料庫資料庫
- 檢視、修改oracle字符集,檢視oracle版本Oracle
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- Oracle字符集的檢視和修改Oracle
- oracle 11g rac 修改字符集Oracle
- Oracle 字符集的檢視和修改Oracle
- 修改oracle 10g的字符集Oracle 10g
- Oracle 10中修改字符集(character set)Oracle
- Oracle字符集的檢視查詢和Oracle字符集的設定修改Oracle
- MySQL修改表預設字符集行為MySql
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- (轉)Oracle 字符集的檢視和修改Oracle
- Oracle 字符集的檢視和修改(轉)Oracle
- Oracle 10g修改字符集的方法:Oracle 10g
- mysql 修改字符集為utf8mb4MySql