我有一个以result结尾的查询的问题:"unable to extend segment by 128 in tablespace TEMP“。我对它进行了一些优化,但我仍然需要检查这种优化是否足够。有没有办法检查在优化前后它使用了多少表空间?Explain Plan告诉我现在好多了,但不幸的是它不会告诉我关于表空间的信息。
我的数据库是oracle 11g。
发布于 2020-04-11 04:57:41
有时解释计划会显示估计使用了多少临时空间,但根据我的经验,这些估计有时会比使用的高出许多倍。而且有很多因素会影响从一次执行到下一次执行需要多少空间。但您可以对各种更改执行EXPLAIN PLAN,并在很少或没有临时空间的情况下查找结果。请注意,即使计划输出没有说明它将使用临时空间,但在实际调用时可能会使用临时空间。
如果您将数据库参数pga_aggregate_target设置为非零值,则可以使用dbms_xplan程序包请求内存使用量:
select * from table(
dbms_xplan.display_cursor(sql_id=>'dwgxfu778vgn8',
format=>'allstats, memstats'));最好的方法是寻找可能的方法来消除TEMP的使用,例如如果可能的话,不使用ORDER BY子句。此外,哈希连接可能会占用大量内存。
发布于 2020-04-14 11:02:10
我不确定这是否有帮助,但我正在使用Toad for Oracle来管理表空间的使用情况。从那里,您可以看到每次的使用情况,如果需要,只需扩展大小。
https://stackoverflow.com/questions/61136436
复制相似问题