Oracle PL/SQL表内存使用与临时表

Oracle PL/SQL表内存使用与临时表,oracle,memory,data-structures,plsql,Oracle,Memory,Data Structures,Plsql,我正在从Web服务中增量提取记录。我需要将本地表中未由Web服务返回的所有记录的状态设置为“已删除” 我本来打算将记录ID的完整列表存储在PL/SQL表中,然后在此基础上执行一条UPDATE语句 我现在估计记录集的内存使用量约为615MB。PL/SQL表的内存占用与使用全局临时表相比如何?它会使用Oracle内存的另一部分吗,比如PGA和SGA 性能不是一个主要问题,因为这个夜间作业已经在生产中运行了一段可接受的时间。我不认为添加“已删除”状态块会增加运行持续时间以影响用户。全局临时表不会以这种

我正在从Web服务中增量提取记录。我需要将本地表中未由Web服务返回的所有记录的状态设置为“已删除”

我本来打算将记录ID的完整列表存储在PL/SQL表中,然后在此基础上执行一条UPDATE语句

我现在估计记录集的内存使用量约为615MB。PL/SQL表的内存占用与使用全局临时表相比如何?它会使用Oracle内存的另一部分吗,比如PGA和SGA


性能不是一个主要问题,因为这个夜间作业已经在生产中运行了一段可接受的时间。我不认为添加“已删除”状态块会增加运行持续时间以影响用户。

全局临时表不会以这种方式使用内存。它将值存储在一个临时段中,只有您的会话可以访问该临时段,并且在不再需要时删除该临时段


您是否考虑过如果会话中断会发生什么情况?在这两种方法中,您都会丢失累积的值。您可能希望只使用常规表格。

“性能不是主要问题,因为这是一项夜间工作。”-这将在将来(当您的夜间工作还没有完成,而人们在早上开始工作时)对您产生影响。我可能应该说我知道这项工作需要多长时间,因为它已经在生产中运行。删除的状态位是新的,但我认为它不会增加足够的运行持续时间来影响用户。积累这些记录而不是在记录出现时更新它们的原因是什么?它们到达的速度是多少?我将使用减号查询将状态设置为“已删除”。我无法在它们出现时以增量方式执行,因为我还没有激活的完整记录集。此应用程序不允许将任何记录错误地设置为“已删除”,即使仅在作业期间也是如此。这是从DBMS_计划程序作业运行的。可能会以这种方式断开连接吗?我总是计划恢复,不管是通过重新轮询数据源还是存储检索到的数据。数据库本身可能会崩溃或被关闭。与您一起。幸运的是,脚本是无状态的。不管它是否中途中断,或者如果某些记录失败,或者删除的位没有运行,它都会在下次继续。