• ベストアンサー

AUTOTRACE機能を使いたい。

こんにちわ。 いまOracle10gを触っている者です。 autotrace機能を使おうと思い,ネットで調べて plustrce.sqlを実行し、PLUSTRACEロールを作成しようとしました。 ところがplustrce.sqlのなかにある, 「v_$sesstat」,「v_$statname」,「v_$mystat」がない, ということでそれぞれの実行箇所で 「ORA-00942: 表またはビューが存在しません。」というエラーが 出てしまいます。 したがって正常にロールが生成されていないようで, このままあるユーザに権限を付与して, "set autotrace on"としても, 「SP2-0618: セッション識別子が見つかりません。PLUSTRACEロールが有効かを確認してください。 SP2-0611: STATISTICSレポートを使用可能にするときにエラーが発生しました。」というエラーが出てしまいます。 おそらくはじめのエラーが障っていると思います。 どうすればエラーが取れるでしょうか? 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

plustrce.sqlを実行したユーザは何ですか? plustrce.sqlはsysで実行して使用するユーザに付与するようにします。 AUTOTRACEを使う手順は以下の方法で実行します。 (1),(2)はsysユーザで実行、(3)はPLUSTRACEを使用するユーザで実行 (1) SQL> @?/sqlplus/admin/plustrce.sql (2) SQL> grant plustrace to hoge; ※hogeはユーザ名 (3) SQL> @?/rdbms/admin/utlxplan.sql

tatsurou
質問者

補足

ossan_hiroさん 回答ありがとうございます。 plustrce.sqlを実行したユーザは"SYS"です。 (1)を実行しようとしたときに, 「v_$sesstat」,「v_$statname」,「v_$mystat」がない, といったエラーが出ます。 何か事前準備が要るのでしょうか?

その他の回答 (3)

  • gdcootie
  • ベストアンサー率42% (3/7)
回答No.4

x$やv_$はsystem表領域が作成されるときに自動的に作成されるためないことはありえません。 権限がただ単にないだけと推定されますがいかがでしょうか? v_$はsysユーザしかセキュリティの観点からアクセスできません。

tatsurou
質問者

お礼

gdcootieさん 回答ありがとうございました。

回答No.3

(1)そのDBはどうやって(インストール時 or DBCA or スクリプト)作成しましたか? (2)Oracleのパッチを当てましたか? (3)sysユーザで以下のSQLを実行して、本当に無いのか確認してみてください。 col object_name format a30 col status format a12 select object_name,STATUS from dba_objects where lower(object_name) like '%sesstat%'; ステータスがinvalidである場合。sysユーザで以下のコマンドで コンパイルしなおしてください。 SQL> @?/rdbms/admin/utlrp.sql 無い場合は・・・CATALOG.SQLを実行してないとか? 再度DBを作成しなおすか、サポートセンターに問い合わせした方が よいと思います。 >「v_$sesstat」はありませんが,「v$sesstat」はあります。 「v$sesstat」ではgrantすることはできません。

tatsurou
質問者

お礼

ossan_hiroさん 回答ありがとうございました。

  • gou2199
  • ベストアンサー率55% (5/9)
回答No.2

こんにちは。 こちらの10g環境では、何の事前準備をしなくても実行できましたよ。 本当にsysユーザーで実行して、エラーが出ているようなら、 サポートに連絡する必要があるかもしれません。 #実行ログ % sqlplus /nolog SQL> connect /as sysdba Connected. SQL> @?/sqlplus/admin/plustrce.sql SQL> SQL> drop role plustrace; drop role plustrace * ERROR at line 1: ORA-01919: role 'PLUSTRACE' does not exist SQL> create role plustrace; Role created. SQL> SQL> grant select on v_$sesstat to plustrace; Grant succeeded. SQL> grant select on v_$statname to plustrace; Grant succeeded. SQL> grant select on v_$mystat to plustrace; Grant succeeded. SQL> grant plustrace to dba with admin option; Grant succeeded. SQL> SQL> set echo off

tatsurou
質問者

補足

gou2199さん 回答ありがとうございます。 そうですか… ちなみにこちらのデータベースには 「v_$sesstat」はありませんが,「v$sesstat」はあります。 でもplustrce.sqlには grant select on v_$sesstat to plustrace; となっているんです。 「v_$sesstat」がない,というのはそもそもインストール時に 不備があったなどが原因で異常なんでしょうか?

関連するQ&A