您好,登錄后才能下訂單哦!
有這樣一個問題: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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。