実行計画の権限
autotraceを実行しようとして次のエラーが発生する場合は、メッセージが示すとおり権限不足。
SQL> set autotrace on SP2-0618: セッション識別子が見つかりません。PLUSTRACEロールが有効かを確認してください。 SP2-0611: STATISTICSレポートを使用可能にするときにエラーが発生しました。
Oracle10gXEだとDBAをつけとけばいけるので、特に権限を気にしない試験環境ならDBAでいいんじゃないかな。ユーザーズ・ガイドおよびリファレンスには次のように書いてるから、ダメだったらPLUSTRACEロールをGRANTする。ロールがなければ作る。その辺も書いてます。
この機能を使用するには、自分のスキーマにPLAN_TABLE表を作成する必要があります。また、PLUSTRACEロールが必要です。DBA権限に、 PLUSTRACEロールを付与する必要があります。
SQL*Plus ユーザーズ・ガイドおよびリファレンス 10g リリース2(10.2)
ログインの時点で権限は決まるので別プロセスからGRANTしても有効になりません。一旦接続を切ってください。なお、権限を持った状態で接続後に別プロセスでREVOKEしても使えます。一応。一応なのはエラーが出るから。
SQL> select * from dual; 統計表示収集中にエラー(ORA-942)が発生しました。 SP2-0612: AUTOTRACEレポートの生成中にエラーが発生しました。 DU -- X SP2-0612: AUTOTRACEレポートの生成中にエラーが発生しました。 実行計画 ---------------------------------------------------------- Plan hash value: 272002086 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------- SP2-0612: AUTOTRACE STATISTICSレポートの生成中にエラーが発生しました。
エラーメッセージが示すとおり、統計表示でエラーが出てるので、統計出さなきゃエラーにはならなかったり。だから何なのかと言われると別になんでもない。
SQL> set autotrace trace exp SQL> select * from dual; 実行計画 ---------------------------------------------------------- Plan hash value: 272002086 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 | --------------------------------------------------------------------------
このエラーは別プロセスでGRANTしてset autotraceしなおせば解消されます。つまり再ログインは不要。正直何の役にも立たない情報。