临时表空间空间不足,并在执行选择时提示ORA-01652

时间:2016-06-10 11:32:53

标签: oracle query-optimization

我在执行一个巨大的查询时遇到了一个问题,其中oracle实例的临时表空间空间不足。在以下链接是查询。

https://dl.dropboxusercontent.com/u/96203352/Query/title_block.sql

Temp表空间的大小为30 GB,由于客户的担忧,我无法扩展其空间。因此,我试图减少排序操作,但这一切都是徒劳的。无论如何都要优化或减少此查询的排序操作。

在以下链接中放置了PLAN表的统计信息。

https://dl.dropboxusercontent.com/u/96203352/Query/PLAN_TABLE_INFO.txt

由于查询和解释计划的大小是要在此问题中发布的大型,因此我必须在使用链接时共享它。很抱歉给您带来不便。

由于返回的数据存在重复,我无法从select语句中删除另外一项内容。

请帮忙。

1 个答案:

答案 0 :(得分:0)

查询计划在最顶层说明了所有内容:DISTINCT操作正在使用所有临时空间。操作需要这么多内存的原因是你的查询行很胖......每个大约10,000个字节!!!

我不确定为什么你的查询行如此胖,但我想尝试的一个建议是更改查询以执行DISTINCT操作,然后在稍后的步骤中{{1 }} {} {}}的必要列。逻辑上不应该影响它,但多年来我一直看到CAST的奇怪行为。我不会相信它,至少不要尝试我的建议。