【发布时间】:2015-04-28 10:25:38
【问题描述】:
我们正在将遗留应用程序 ascii 迁移到 unicode,作为此活动的一部分,我们需要将数据类型从 varchar2 更改为 nvarchar2,以便它可以接受不同的字符。我正在尝试针对一个表和一列测试此活动(使用更改表脚本),因为表保存数据(13,81,67,254 行)花了 15 分钟以上。存在大约 200 个表(每个表有大约 25 列具有 varchar2 数据类型),要完成此活动将花费大量时间,而且我们不能承受这么多的停机时间。有什么方法可以更快地执行此操作吗? 数据库 - 甲骨文 10 克
编辑问题 - 有什么方法可以避免将数据类型从 varchar2 转换为 nvarchar2?当前以 BYTES 定义的 varchar2 范围,例如- varchar2(3 字节)。
数据库详细信息 -
- Oracle 10g
- NLS_CHARACTERSET - UTF8
- NLS_NCHAR_CHARACTERSET - AL16UTF16
【问题讨论】:
-
为什么要从 VARCHAR 更改为 NVARCHAR?将您的数据库更改为字符集 AL32UTF8,然后 VARCHAR 工作。现在有了 Unicode,没有理由再使用 NCHAR 或 NVARCHAR。数据类型。
-
@Wernfried - 太好了,我要去看看characterse AL32UTF8。你能解释一下如何去做吗?我的意思是在哪里以及如何设置它。
-
看看这个文档:Character Set Migration
-
将在完成文档后回复您
-
@Wernfried - 如果我试图存储 varchar2(3) 列的数据并假设我有“3 个亚洲字符”并且我当前的字符集是“UTF8”不允许我,因为它需要超过 3 个字节。但是,如果我将我的字符集更改为“AL32UTF8”,那么即使它消耗超过 3 个字节,它也会允许我使用吗?您在评论中指的数据库字符集也是 NLS_NCHAR_CHARACTERSET 还是 NLS_CHARACTERSET?