在全局临时表中加载数据

时间:2010-11-29 16:55:01

标签: sql oracle temp-tables

我在同一个Oracle用户上有两个不同的Oracle会话(“会话A”和“会话B”)。

在“会话A”中填充全球临时表,其中包含约320,000条记录。

如何在“会话B”的全局临时表中快速插入相同的320,000条记录?

提前感谢您的善意建议!

编辑:我忘记指定我只能创建全球临时表格。

编辑:我忘了指定我不允许创建数据库链接

3 个答案:

答案 0 :(得分:5)

临时表中的数据只对当前会话可见,所以我认为没有其他方法可以做你想做的事情。

答案 1 :(得分:3)

DBMS_PIPE是将信息从一个会话推送到另一个会话的“经典”机制。会话A必须将数据推入管道,会话B必须将其拉出。

但通常数据库的概念是会话是独立的,任何共性都在保留的数据中。反对这表明你使用的是错误的工具。

答案 2 :(得分:2)

全局临时表中的数据仅对插入它的会话可见。因此,您必须运行在会话B中填充表的相同过程。

当然,您似乎想要在两个不同的会话中访问相同的320,000行,这似乎意味着全局临时表不是要使用的适当数据结构。也许您希望将该数据加载到永久表中(如果您有多个SessionA / SessionB对,可能还会附带某种标识符)。或者,会话B运行的任何逻辑都应该由会话A运行。

退一步,因为Oracle实现了多版本读取一致性,读者不会阻止编写者和编写者不阻止读者,所以需要在其中设置320,000行临时表是非常不寻常的。第一名。