我正在增强一个基于java的ETL软件。 Oralce 安装中此工具的问题之一是,当 ETL 期间发生大量删除时,即使我使用较小的批处理大小和中间提交,该批处理也会耗尽 UNDO 空间。在我当前的生产场景中,存在 4GB 的硬限制。
所以,现在,比如说,我的程序尝试从父表中删除 10000 条记录,每 1000 条记录和每条记录删除后提交一次,级联从 5 个子表中删除 100 万条记录,每批发生 1000x5x1000,000 次删除/犯罪。我希望我的软件比这更智能 - 我希望它能够计算出 Oracle UNDO 空间,估计将触发多少个删除并相应地限制批量大小。我该怎么做呢?如何使用查询计算 UNDO 相关信息?
最佳答案
4GB不算什么。正确的做法是增加UNDO空间。
请注意,大规模删除也是不鼓励的,并且非常值得研究消除这种情况的方法。
关于java - 如何编写 ETL 以根据 Oracle UNDO 设置进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836085/