2022年3月28日月曜日

SQLコマンドで実行計画を表示しようとするとエラーが発生する

 Autonomous DatabaseのSQLコマンド実行計画を確認しようとしたところ

ORA-02404: 指定したPLAN_TABLE表が見つかりません。

が発生しました。

以下、対処方法です。

SQLコマンドで以下を実行して、表HTMLDB_PLAN_TABLEを作成します。

create table HTMLDB_PLAN_TABLE sharing=none (
statement_id varchar2(30),
plan_id number,
timestamp date,
remarks varchar2(4000),
operation varchar2(30),
options varchar2(255),
object_node varchar2(128),
object_owner varchar2(128),
object_name varchar2(128),
object_alias varchar2(261),
object_instance numeric,
object_type varchar2(30),
optimizer varchar2(255),
search_columns number,
id numeric,
parent_id numeric,
depth numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2(255),
partition_start varchar2(255),
partition_stop varchar2(255),
partition_id numeric,
other long,
distribution varchar2(30),
cpu_cost numeric,
io_cost numeric,
temp_space numeric,
access_predicates varchar2(4000),
filter_predicates varchar2(4000),
projection varchar2(4000),
time numeric,
qblock_name varchar2(128),
other_xml clob
) NOCOMPRESS;

元はOracle Database 21c Express Edtionの$ORACLE_HOME/rdbms/admin/utlxplan.sqlに記述されている表PLAN_TABLEを作成するDDLです。

Oracle APEXのSQLコマンドでは、表HTMLDB_PLAN_TABLEをプランを保存する表として使用しています。そのため、表の名前をHTMLDB_PLAN_TABLEに変更しています。

Autonomous Databaseのバージョンは19cなので、21cのスクリプトを流用するのは問題があるかもしれません。動いているので良しとしています。


表HTMLDB_PLAN_TABLEが作成されていると、ORA-2404は発生しません。


以上になります。