我在同一个Oracle用户上有两个不同的Oracle会话(“会话A”和“会话B”)。
在“会话A”中填充全球临时表,其中包含约320,000条记录。
如何在“会话B”的全局临时表中快速插入相同的320,000条记录?
提前感谢您的善意建议!
编辑:我忘记指定我只能创建全球临时表格。
编辑:我忘了指定我不允许创建数据库链接
答案 0 :(得分:5)
临时表中的数据只对当前会话可见,所以我认为没有其他方法可以做你想做的事情。
答案 1 :(得分:3)
DBMS_PIPE是将信息从一个会话推送到另一个会话的“经典”机制。会话A必须将数据推入管道,会话B必须将其拉出。
但通常数据库的概念是会话是独立的,任何共性都在保留的数据中。反对这表明你使用的是错误的工具。
答案 2 :(得分:2)
全局临时表中的数据仅对插入它的会话可见。因此,您必须运行在会话B中填充表的相同过程。
当然,您似乎想要在两个不同的会话中访问相同的320,000行,这似乎意味着全局临时表不是要使用的适当数据结构。也许您希望将该数据加载到永久表中(如果您有多个SessionA / SessionB对,可能还会附带某种标识符)。或者,会话B运行的任何逻辑都应该由会话A运行。
退一步,因为Oracle实现了多版本读取一致性,读者不会阻止编写者和编写者不阻止读者,所以需要在其中设置320,000行临时表是非常不寻常的。第一名。