【问题标题】:ORA-28562 data error truncation in oracle heterogenous?ORA-28562 oracle 异构中的数据错误截断?
【发布时间】:2019-02-20 23:37:37
【问题描述】:

我已经使用 DG4ODBC 为 db2 创建了一个 Oracle 异构服务。

尝试使用 isql 登录并使用此查询进行选择

select *from workorder@maximo 

我得到一个结果集的所有数据

但是当我使用 sqlplus Oracle 登录时出现此错误

这是我的异构初始化

我尝试使用 HS_FDS_TRACE_LEVEL=DEBUG 并得到一些列有sql_null_value

这是来自调试的日志示例:

如果任何列的值为空,则无法显示数据。

即使有空值,我如何显示数据? 我正在使用 Oracle 12c 和 db2 10.5

【问题讨论】:

    标签: database oracle db2 oracle12c heterogeneous-services


    【解决方案1】:

    尝试使用:

    HS_FDS_SQLLEN_INTERPRETATION = 32
    

    (来自 Occacle 文档)此参数仅对 64 位平台有效。 ODBC 标准指定 SQLLEN(内部 ODBC 构造)在 64 位平台上为 64 位,但一些 ODBC 驱动程序管理器和驱动程序违反了此约定,并将其实现为 32 位。为了让网关补偿它们的行为,如果您使用这些类型的驱动程序管理器和驱动程序,则需要指定 HS_FDS_SQLLEN_INTERPRETATION=32。

    从您的问题中不清楚 Db2 odbc 客户端的位数,或者驱动程序管理器或驱动程序是在内部使用 32 位还是 64 位。更改此参数后,您可能需要重新初始化。 Db2 的 CLI 跟踪(google for instructions)也可能暴露这一点。

    【讨论】:

    • 但是您问题中的位图显示此变量的值 = 64(而不是 32)。请澄清。
    • 因为我的系统使用 x64 位,这就是解释
    【解决方案2】:

    当我尝试将 TEXT 数据类型从 Postgres 加载到 Oracle VARCHAR2(4000) 并且 TEXT 列中的源数据大于 4000 字节时,我遇到了这个错误。 一种可用的解决方法是将 TEXT 列映射到 PL/SQL 的 VARCHAR2(32767) 变量或 LONG、CLOB 数据类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2016-11-22
      • 2020-07-26
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多