在 Oracle 中创建表作为从 SQL Server 中选择 - varchar 大小

alo*_*onk 3 oracle sql-server sql-server-2012

我正在尝试通过数据库链接从 SQL Server 2012 中的表中选择在 Oracle 11g 中创建表。

SQL Server 中的表包含列: hslakkis varchar(3)

在 Oracle 中,它创建了具有相同列但大小不同的表: hslakkis varchar2(9)

这种行为导致我在 Oracle 中的列大小出现很多问题。如何防止 Oracle 增加列大小?

Phi*_*lᵀᴹ 5

这是一个可以通过参数控制的功能。从文档

多字节字符集比率抑制此功能可选择抑制涉及多字节字符集的从 SQL Server 数据库到 Oracle 数据库的比率扩展。默认情况下,Oracle 网关采用最坏的比率来防止数据被截断或缓冲区大小不足的情况。但是,如果您对 SQL Server 数据库有特定的了解并且不希望发生扩展,则可以指定 HS_KEEP_REMOTE_COLUMN_SIZE 参数来抑制扩展。

基本上,由于字符集转换,Oracle 假设源表中的所有数据每个字符可能占用 3 个字节。