我遇到了一个简单的数据导入器/更新程序的问题,它从Informix获取数据,将其插入到Oracle中的表中,并更新原始表中的标志。集合起来是这样的与连接到Informix的Oracle失去远程代理错误的RPC连接
Pro*C program calls a PL/SQL procedure
The procedure
opens a cursor on Informix,
loops through each row
insert the data into an oracle table
commit
update the "new data" flag in Informix (i.e. stop a re-import)
commit
两个提交是必要的,停止特定Oracle错误(我忘了是哪一个,但因为要更新的表在两个数据库和一个承诺不能处理它)。 此代码适用于源表中的少量记录(5-10),但在大于1000时会下降。Oracle日志目录中的警报日志显示错误“丢失的RPC连接到远程代理”。 Informix目录中没有相应的错误,所以我怀疑驱动程序有问题。我们正在使用Oracle 10.2和Red Hat上的unixODBC驱动程序。
有没有人有任何想法的解决方法或实际上如何解决它?似乎没有关于此错误消息的任何有用信息 - 大多数页面只是沿着“这不是Oracle问题”的说法。
感谢您的回复 - 看起来Oracle的默认行为是保持游标打开直到明确关闭,并且可能是驱动程序在Informix中打开/重新打开游标来模拟此游标。我最终通过使用PL/SQL表作为缓冲区解决了这个问题,所以我可以做更少的提交(少100次),这似乎解决了问题。 它仍然不能解释为什么发生问题,但... – 2009-06-09 09:56:16