我想將oracle數據庫從非unicode服務器(EL8ISO8859P7字符集和AL16UTF16 NCHAR字符集)移動到unicode服務器。特別適用於具有AL32UTF8字符集的Oracle Express服務器。將oracle數據庫從非unicode服務器遷移到unicode服務器
僅導出(exp)和導入(imp)數據失敗。我們有很多varchar2列,其長度以字節爲單位。當他們的內容被映射到unicode時,它們會佔用更多的字節並被截斷。
我試過如下:
- 原始數據庫的所有VARCHAR2列的長度與一個腳本倍增(VARCHAR2(10)變爲VARCHAR2(20))
- 出口
- 導入到新的服務器
它工作。顯然,加倍是任意的,我可能應該用CHAR語義將它們改爲相同的大小。
我也試過如下:
- 改變所有VARCHAR2列NVARCHAR2(大小相同 - VARCHAR(10)變成爲nvarchar(10))
- 出口
- 導入到新的服務器
它也工作。
不知何故後者(轉換爲nvarchar)似乎「更清潔」。然後你又有一個unicode數據庫,這個unicode數據類型看起來很奇怪。
所以問題是:是否有建議的方式去移動兩臺服務器之間的數據庫?上述兩種方法中的任何一種都有什麼嚴重問題?
在UTF-8(即Oracle中的AL32UTF8)中,單個字符可以存儲在最多4個字節中。一個「非奇特」字符是使用UTF-8中的3字節的歐元(€)符號。 –