データウェアハウス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列を有効にする方法についてのアドバイスはありますか?
このTempSpc列は、大量のレコードを並べ替えて表示する場合など、クエリで一時スペースが必要な場合にのみ表示されます。
クエリで一時スペースが必要ない場合、この列は表示されません。これはクエリごとの説明プランによって異なるため、すべての説明プランの結果でそれが見つかるわけではありません。
このように Oracleページ ;
クエリオプティマイザーのアプローチによって推定される、操作で使用される一時スペース(バイト単位)。ルールベースのアプローチを使用するステートメント、または一時スペースを使用しない操作の場合、この列はnullです。