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