Oracle12C修改字符集为AL32UTF8研究

有这样一个问题:PDB字符集能否从ZHS16GBK修改为AL32UTF8?

站在用户的角度思考问题,与客户深入沟通,找到塔城网站设计与塔城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖塔城地区。

答案:由于CDB为ZHS16GBK,导致PDB不能修改。

针对这个问题作了一下学习,记录一下。

1、迁移转换字符集方法:

12C :只有DMU这个工具

10g/11g :csscan/ csalter /部分 exp/imp

8i/9i :Alter Database Character Set () / 部分 exp/imp 

2、AL32UTF8 是一个变宽度的字符集,表示为 1 个字符的代码可以是 1,2,3 或 4 个字节长。

这 与 WE8ISO8859P1 或 WE8MSWIN1252 字符集中 1 字符始终是 1 个字节有很大的区别。

3、使用 AL32UTF8数据库会增长,最大的扩展将会发生在 CLOB 类型上(或者 XMLtype – 该类型后台使用 CLOB),

如果源数据 库是 8 bit 字符集(WE8ISO8859P1,WE8MSWIN1252 等),那么转换后的 Clob 列会在磁盘 大小上变成原来的两倍。 

4、CDB不能转换字符集,只能重新创建CDB。DMU 是PDB转换字符集的唯一工具;

5、截至2019.9.8,DMU最新版本为19.1,使用过程图形界面有卡死现象。DMU用于转换数据的过程是:

将数据库置于受限模式。

禁用各种作业队列进程。

删除或禁用所选索引。

禁用选定的触发器和约束。

将用户表和选定数据字典表中的数据转换为Unicode。

转换CLOB数据字典中的列。

发表ALTER DATABASE CHARACTER SET声明。

启用触发器和约束; 并重新创建索引和约束。

恢复数据库实例参数。

6、使用9i 传统方法alter database character set INTERNAL_USE AL32UTF8;  修改CDB测试成功,但oracle官方不推荐。该方法并未执行两个步骤:将用户表和选定数据字典表中的数据转换为Unicode  和 转换CLOB数据字典中的列。这两关键步骤只能通过DMU实行。

测试:使用该方法切换CDB字符集从ZHS16GBK到AL32UTF8成功,同时PDB$SEED也自动变化;但按官方说法切换不完整,不赞成这样做。

7、NLS_NCHAR_CHARACTERSET("国家字符集")定义了 NCHAR,NVARCHAR2 和 NCLOB 列 的编码并且在 9i 及以上版本已经是 Unicode了(参见 Note 276914.1 The National Character Set in Oracle 9i 10g and 11g)。 

8、NLS_CHARACTERSET("字符集")定义了"普通的" CHAR,VARCHAR2,LONG 和 CLOB列编 码,这些也可以被用于存放 Unicode。在这样的情况下需要 AL32UTF8 或者 UTF8 NLS_CHARACTERSET 数据库。

参考文档:

AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1)

如何选择或更改数据库字符集 (NLS_CHARACTERSET) (文档 ID 1525394.1)

The Database Migration Assistant for Unicode (DMU) Tool (文档 ID 1272374.1)

当前题目:Oracle12C修改字符集为AL32UTF8研究
本文URL:https://www.cdcxhl.com/article26/posicg.html

成都网站建设公司_创新互联,为您提供静态网站全网营销推广虚拟主机标签优化云服务器网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作