web-dev-qa-db-ja.com

Oracle Explain Planで欠落しているTempspc列を有効にする方法

データウェアハウスETLバッチジョブから「ORA-01652:一時セグメントを拡張できません」をデバッグしようとしていますが、Explainプランのplan_table_outputビューに「Tempspc」列が表示されません。しかし、「「PLAN_TABLE」は古いバージョンです」という問題はないようです。

バージョン:Oracle Database 12c Enterprise Edition Release 12.1.0.1.0

クエリ:select * from table(dbms_xplan.display_awr(sql_id, null, null, 'ALL'));

返される列:Id, Operation, Name, Rows, Bytes, Cost (%CPU), Time

返されたメモ:- dynamic statistics used: dynamic sampling (level=2)

次のクエリは、グローバル一時plan_tableのすべての列が@catplan.sql管理スクリプトと一致することを示しています。

select * from all_tab_columns where owner = 'SYS' and table_name = 'PLAN_TABLE$' order by column_name;

そして、このクエリは、パブリックシノニムが問題ないことを示しています。

select owner, object_type, object_name from all_objects where object_name like 'PLAN_TABLE%';

OWNER   OBJECT_TYPE  OBJECT_NAME  
------  -----------  -----------  
SYS     TABLE        PLAN_TABLE$  
PUBLIC  SYNONYM      PLAN_TABLE

Explainプランで欠落しているTempspc列を有効にする方法についてのアドバイスはありますか?

2
aptcat

このTempSpc列は、大量のレコードを並べ替えて表示する場合など、クエリで一時スペースが必要な場合にのみ表示されます。

クエリで一時スペースが必要ない場合、この列は表示されません。これはクエリごとの説明プランによって異なるため、すべての説明プランの結果でそれが見つかるわけではありません。

このように Oracleページ ;

クエリオプティマイザーのアプローチによって推定される、操作で使用される一時スペース(バイト単位)。ルールベースのアプローチを使用するステートメント、または一時スペースを使用しない操作の場合、この列はnullです。

2
emarshah