DMLコードがクエリの場合は、それを説明してから、PLAN_TABLE
またはdbms_xplan.display_cursor
をチェックして、クエリによって参照されているオブジェクトをチェックできます。
SQL> delete from plan_table;
4 rows deleted
SQL> explain plan for select * from scott.emp;
Explained
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2872589290
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 518 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 14 | 518 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected
SQL> SELECT operation, object_owner, object_name FROM plan_table;
OPERATION OBJECT_OWNER OBJECT_NAME
-------------------- ------------------ --------------------
SELECT STATEMENT
TABLE ACCESS SCOTT EMP
明らかに、これにはクエリがデータベースで有効である必要があります(参照されているすべてのオブジェクトがすでに存在しているなど)。分析するコードがPL/SQLブロックの場合、DIYパーサーを作成する以外にどのようにそれを実行できるかわかりません。