我在同一個Oracle用戶上有兩個不同的Oracle會話(「會話A」和「會話B」)。將數據加載到全局臨時表中
在「會話A」中填充全局臨時表,其中包含大約320,000條記錄。
如何快速在「會話B」的全局臨時表中插入相同的320,000條記錄?
非常感謝您的建議!
編輯:我忘了指定,我被允許創建只有全球臨時表。
編輯:我忘了說明,我不允許創建數據庫鏈接
我在同一個Oracle用戶上有兩個不同的Oracle會話(「會話A」和「會話B」)。將數據加載到全局臨時表中
在「會話A」中填充全局臨時表,其中包含大約320,000條記錄。
如何快速在「會話B」的全局臨時表中插入相同的320,000條記錄?
非常感謝您的建議!
編輯:我忘了指定,我被允許創建只有全球臨時表。
編輯:我忘了說明,我不允許創建數據庫鏈接
DBMS_PIPE是將信息從一個會話推送到另一個會話的「經典」機制。會話A將不得不將數據推入管道,而會話B將不得不將其拉出。
但是一般來說,數據庫的思想是會話是獨立的,任何共同性都在保存的數據中。反對這表明你正在使用錯誤的工具。
的數據的臨時表中是永遠只在當前會話中可見,所以我不認爲有一個沒有另一種方法去做你想做的事。
全局臨時表中的數據只對插入它的會話可見。因此,您將不得不運行與會話B中的表填充相同的過程。
當然,您似乎想要在兩個不同會話中訪問相同的320,000行的事實似乎意味着全局臨時表不是適用的數據結構。也許你想把這些數據加載到一個永久表中(如果你有多個SessionA/SessionB對,可能還需要一些標識符)。或者,也許會話B運行的任何邏輯應該由會話A運行。
僅僅退後一步,由於Oracle實現了多版本讀取一致性,因此讀者不會阻止編寫者和編寫者不會阻止讀者,首先需要一個320,000行臨時表是非常不尋常的。
您可以改爲創建可供兩個會話訪問的表......更多信息將有助於 - Oracle的哪個版本,以及爲什麼需要臨時表? – 2010-11-29 17:01:07
我只被允許創建全局臨時表... – UltraCommit 2010-11-29 17:27:00
我使用的Oracle版本是:Oracle數據庫10G第2版 – UltraCommit 2010-11-29 17:27:51