【发布时间】:2012-11-29 22:34:01
【问题描述】:
我正在增强基于 Java 的 ETL 软件。这个工具在 Oralce 安装中的一个问题是,当 ETL 期间发生大量删除时,即使我使用较小的批处理大小进行中间提交,批处理也会耗尽 UNDO 空间。在我当前的生产场景中,存在 4GB 的硬限制。
所以,现在,比如说,我的程序尝试从父表中删除 10000 条记录,在每 1000 条记录和每次删除记录后提交,级联从 5 个子表中删除 100 万条记录,我每批次发生 1000x5x1000,000 次删除/犯罪。我希望我的软件比这更智能——我希望它能够计算出 Oracle UNDO 空间,估计将触发多少删除并相应地限制批量大小。我该怎么做呢?如何使用查询计算 UNDO 相关信息?
【问题讨论】:
-
如果你正在做的事情使用了你所有的撤销,那么你真的应该增加它。我知道没有帮助,但 4GB 的硬限制似乎很小。我刚刚浏览了几个数据库,大小分别为 50GB、28GB、38GB、126GB 和 44GB。
-
你得到什么错误? ORA-1555?
-
也许截断是要走的路。
标签: java oracle etl undo database-administration