为啥不能通过 DBLink 发送 Oracle XMLType?

Posted

技术标签:

【中文标题】为啥不能通过 DBLink 发送 Oracle XMLType?【英文标题】:Why can't an Oracle XMLType be sent over a DBLink?为什么不能通过 DBLink 发送 Oracle XMLType? 【发布时间】:2009-04-15 15:37:25 【问题描述】:

我有一些 PLSQL 代码调用远程过程以发送 XMLType。不过,它所做的是将 XMLType 分成多个 varchar2(4000) 参数,这些参数是该过程接受的。远程过程通过 DBLink 调用。

为什么必须拆分 XMLType?此限制是否适用于最新的数据库版本 (10g)?

【问题讨论】:

【参考方案1】:

因为 sys.xmltype 是用户定义的类型。

您可能会收到 PLS-00453 - 不允许对对象表或用户定义的远程操作。

可能对所有数据库版本(包括 10g 和 11g)都有限制。

【讨论】:

【参考方案2】:

在大多数情况下,Oracle 不支持处理通过数据库链接发送用户定义的类型或 LOB。 XMLType 既可以存储为 LOB 也可以存储为 UDT,并且可能以相同的方式在内存中处理,因此它不起作用是可以理解的。

This question 讨论了一般问题并提供了一些可能的解决方法。

【讨论】:

【参考方案3】:

这是 Oracle 长期存在的(而且很愚蠢的)问题。

超过一定大小的 LOBS 未成功传输,您必须将大数据分块并稍后重新组合。

我不敢相信 Oracle 可以不修复这个问题,我从 Oracle 8 开始就意识到这个问题,但最近的版本可能已经修复了这个错误。

【讨论】:

以上是关于为啥不能通过 DBLink 发送 Oracle XMLType?的主要内容,如果未能解决你的问题,请参考以下文章

案例:Oracle非常规恢复ODU恢复PACKAGE/VIEW/DBLINK等数据脚本操作

MySQL的FEDERATED引擎实现类Oracle的DBlink

oracle通过DBlink连接oracle

代码备份ORACLE数据库表同步DBLINK

oracle dblink设置

Oracle SQL:通过 dblink 加入