我想将oracle数据库的字符集从'WE8MSWIN1252'更改为'AL32UTF8'
我尝试从链接(http://download.oracle.com/docs/cd/B10501_01/server.920/a96529/ch10.htm#1009580)执行以下步骤:
使用 SHUTDOWN IMMEDIATE 或
SHUTDOWN NORMAL 语句。对数据库进行完整备份,因为
ALTER DATABASE CHARACTER SET 语句无法回滚。
完成以下陈述:
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 AL32UTF8;
但是当我执行上面的语句时,我收到以下错误
SQL 错误:ORA-12712:新字符集必须是旧字符集的超集
谁能帮我解决这个问题。
For an ALTER DATABASE CHARACTER SET
语句要成功执行,必须满足两个条件:
- 当前字符集中的每个字符在新字符集中都可用。
- 当前字符集中的每个字符在新字符集中具有相同的代码点值。 (即:旧字符集必须是新字符集的子集)
Because WE8MSWIN1252
不是严格子集AL32UTF8
该语句将失败(例如:井号是A3
以十六进制表示WE8MSWIN1252
, 但在AL32UTF8
it is C2 A3
).
你需要使用CSALTER
进行此迁移。
参考:字符集迁移。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)