把数据库字符集从ZHS16GBK转换成UTF8出现错误!

[复制链接]
查看11 | 回复6 | 2007-8-6 15:19:01 | 显示全部楼层 |阅读模式
数据库版本: oracle9.2
操作系统:linux advance server
问题: 请问如何修改?
根据搜索到的文章,执行操作如下: 最终出现错误..sigh
SQL> STARTUP MOUNT;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> set linesize 120
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL> ALTER DATABASE CHARACTER SET UTF8;
ALTER DATABASE CHARACTER SET UTF8
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
看一下eygle寫的>會比較清楚這個錯誤.
只有在新字符集是舊字符集嚴格超集的情況下使用這種方式轉換.且這個操作本質上並不轉換數據庫字符集,只是簡單更新數據庫中跟字符集相關的信息.
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
现在我想做这方面的转换还有其他方法吗? 重新建库?
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
试一下这个命令:
alter database character set internal_use UTF8
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
重新建庫當然是最好.可以試著用EXP/IMP來轉換.
最好不要用"alter database character set "
會存在完整性問題.
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
字符集最好不要随便变,特别是从子集变超集的时候
回复

使用道具 举报

千问 | 2007-8-6 15:19:01 | 显示全部楼层
转换字符集的时候可以使用character set scanner先对数据库进行扫描,看是否可以转换成目标字符集,如果没有不可转换字符,一般是可以进行转换的,没有什么问题。
其实这种转换并不是真正对已经存在的数据进行转换,而只是修改字符集声明。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行