Oracle仅针对模式表对象从WE8ISO8859P1迁移到UTF-8字符编码

时间:2019-06-20 10:05:59

标签: oracle utf-8 character-encoding

oracle实例的当前编码为WE8ISO8859P1,需要将其移动到UTF-8。由于数据库实例的当前设置和业务需求,我在数据库实例中发现了一些挑战。

有问题的该实例有100多个架构用户,每个架构下创建的表数量很多。我们可以从逻辑上说每种模式都存在于企业中的应用程序或特定系统中。要求是仅将某些架构及其表对象移动到UTF-8的新字符集。

另外,请记住,现在进行迁移的原因是符合Restful POST调用,该调用将以UTF格式执行CRUD操作。

NLS_NCHAR_CHARACTERSET- AL16UTF16 NLS_CHARACTERSET- WE8ISO8859P1

我之前做过一些研究,这是我的发现。

•Oracle在表空间,表或列级别不支持字符编码。因此,仅针对架构级别的任何字符集迁移策略,才开始减少选项。

•其他企业旧版系统对此模式有CRUD调用。因此不应有任何更广泛的影响。当然,在这种情况下,其他架构对UTF-8没有任何要求。

我看到解决方案的唯一方法是

选项1 -使用NLS_LANGUAGE将目标模式及其对象移动到新的数据库实例中,使其为UTF-8。

选项2 -将所有相关列转换为NCHAR和NVARCHAR,但会丢失长度和截断。

这两种方法都会产生巨大影响,并且无法总结出最佳方法。欢迎提出任何解决我的字符集迁移的建议,而不影响实例中的其他架构。

0 个答案:

没有答案