【发布时间】:2014-06-22 06:26:20
【问题描述】:
我想将 oracle 数据库从非 unicode 服务器(EL8ISO8859P7 字符集和 AL16UTF16 NCHAR 字符集)移动到 unicode 服务器。专门针对具有 AL32UTF8 字符集的 Oracle Express 服务器。
仅导出 (exp) 和导入 (imp) 数据失败。我们有很多 varchar2 列,它们的长度以字节为单位。当它们的内容以 unicode 映射时,它们会占用更多字节并被截断。
我尝试了以下方法:
- 使用脚本将原始数据库的所有 varchar2 列的长度加倍(varchar2(10) 变为 varchar2(20))
- 出口
- 导入新服务器
它奏效了。显然加倍是任意的,我可能应该使用 CHAR 语义将它们更改为相同的大小。
我还尝试了以下方法:
- 将所有 varchar2 列更改为 nvarchar2(大小相同 - varchar(10) 变为 nvarchar(10))
- 出口
- 导入新服务器
它也有效。
不知何故后者(转换为 nvarchar)似乎“更干净”。然后你又拥有一个 unicode 数据类型的 unicode 数据库,这看起来很奇怪。
所以问题是:有没有建议的方法在两台服务器之间移动数据库?我上面提到的两种方法中的任何一种都存在严重问题吗?
【问题讨论】: