【问题标题】:SQL data extracts works in Oracle 11g but not Oracle 12cSQL 数据提取适用于 Oracle 11g,但不适用于 Oracle 12c
【发布时间】:2017-04-12 13:23:24
【问题描述】:

当我使用 TOAD 对 Oracle 11g 数据库执行以下 SQL 时,成功返回完整格式的 XML:

With T As (SELECT dbms_xmlgen.getxml('SELECT m.trans_message FROM xml_nodes_ams_in a, message m WHERE a.id = m.msg_id AND a.UPN IN(''A30971016528VE8K'',''A30971016529VE84'') ORDER BY a.upn ASC'
  ) As output_xml from dual
) select dbms_xmlgen.Convert(output_xml,1) from T

但是,当我对我们新安装的 Oracle 12c 数据库执行完全相同的 SQL 时,某些 XML 数据似乎丢失了(大约 5000 个字符)。

我已经与 DBA 讨论过这个问题,他认为这是客户问题而不是数据库问题,因为他说没有针对数据库的设置会导致这种情况。

有人对我如何解决这个问题有任何建议吗?

【问题讨论】:

  • 12c 数据库中可能有不完整的数据。检查两个数据库是否在表xml_nodes_ams_in中包含相同的数据计数
  • 两个数据库包含相同的数据。当我使用 TOAD 过滤功能手动提取数据时,XML 格式良好且完整。
  • 最终的 CLOB 是否被截断,或者 XML 中是否缺少数据?显示了多少数据? Toad 中是否有类似于 SQL*Plus set long 的设置来确定显示多少 CLOB - 如果您使用同一个客户端访问两个数据库,可能在连接级别?
  • 您在运行 12C 客户端软件吗?
  • @AlexPoole - XML 中缺少 XML(未截断)。此外,显示了大部分数据,它只是缺少 XML 的一小部分。我试图查看 TOAD 中的设置,但它是一个相当旧的版本并且不支持 12c 客户端软件,因此这可能是导致问题的原因。我目前使用 10g 客户端连接到 11g 和 12c 数据库。我正在使用 12c 客户端下载新的 SQL 开发人员,并报告我的发现。

标签: oracle oracle11g oracle12c dbms-xmlgen


【解决方案1】:

我向 Oracle 提出了服务请求,他们回复我并告知 Oracle 12.1 中的 dbms_xmlgen.Convert 函数存在错误,该错误已在 Oracle 12.2 中修复。基本上该函数会因 XML 大于 120 KB 而失败。

【讨论】:

  • 令人震惊的是,这样的错误可能会通过过滤器
猜你喜欢
  • 1970-01-01
  • 2021-06-24
  • 2011-05-20
  • 2013-06-13
  • 1970-01-01
  • 2020-10-15
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多