我遇到了一個簡單的數據導入器/更新程序的問題,它從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