2

你好我如何改變或改變字符集數據庫爲它支持日語字符Oracle數據庫字符集

+0

什麼是您當前的數據庫和國家字符集? – 2009-11-16 16:37:13

回答

2

而Unicode是你的朋友,使用NVARCHAR或NTEXT。

+0

有趣的.. hehe ..沒想到檢查列類型.. Tnx – cedric 2009-11-16 08:53:26

+0

雖然NVARCHAR2或NCHAR數據類型將工作(假設國家字符集是AL16UTF16),請注意,使用國家字符集對象通常會增加很多應用程序的複雜性。不同的工具通常不能正確處理國家字符集對象,或者需要額外的標誌或設置,或者製作或調用不同的API。換句話說,它不一定是VARCHAR2列的替代品。 – 2009-11-16 16:36:40

+0

與賈斯汀的部分協議:-) 可以增加一些複雜性,但也可以刪除一些。 但在過去的幾年裏,Unicode支持在各種工具中越來越好,這絕對是未來。 – 2009-11-17 08:35:14

4

你應該罰款與任何品種UTF-8。

字符集通常在創建數據庫時指定。如果以後需要改變它,還有就是ALTER DATABASE CHARACTER SET command,但是這需要數據遷移:

To change the database character set, perform the following steps:

  1. Shut down the database, using either a SHUTDOWN IMMEDIATE or a SHUTDOWN NORMAL statement.
  2. Do a full backup of the database because the ALTER DATABASE CHARACTER SET statement cannot be rolled back.
  3. Complete the following statements:
STARTUP MOUNT; 
    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 new_character_set; 
    SHUTDOWN IMMEDIATE; -- or SHUTDOWN NORMAL; 
    STARTUP; 

正如你所看到的,你需要離線和轉換數據庫。

+0

更改字符集時發生錯誤。它表示必須設置超集。我試圖改變它到AL32UTF8 – cedric 2009-11-16 07:46:23

+0

要改變一個可能破壞性的方式(你的原始數據可能不再可用)的字符集,添加internal_use: ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8; 看到http://www.kods.net/modify-the-oracle-character-set-character-set/ – 2010-08-19 00:56:21

+0

對於任何有興趣的人,我假設收到的錯誤必須是[SQL錯誤:ORA-12712:新字符集必須是舊字符集的超集](http://stackoverflow.com/q/7352304/320399)。希望給出的答案能夠幫助其他人解決這個問題。 – blong 2012-09-14 19:29:08