为啥不能通过 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等数据脚本操作