FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

動的パフォーマンス・ビューでORA-00942が出たときの対処法

インフラ課の橋本です。

OracleDBの操作で、V$●●系テーブル(ビュー)をselectしようとした時、ないしはV$●●系テーブルに対する権限付与を行う際に

ORA-00942: 表またはビューが存在しません。

というエラーが返った場合の対処法です。

対処法

sysユーザでログインし、以下のようにテーブル(ビュー)名に『_』を付けて権限付与を行う。

grant select on V_$●● to 一般ユーザ名

解説

  • V$●●系テーブルは動的パフォーマンス・ビューというもの。200以上の種類があります。
    • 一例としてV$SESSIONテーブルなどが、参照権限の付与の要望を受けやすいでしょう。
  • パフォーマンス・ビューにはデータベース管理者(sysユーザ)がアクセス可能です。
  • データベースの状態によって『動的』に更新され続ける性質があり、主に『パフォーマンス』に関連した情報のため「動的パフォーマンス・ビュー」と呼ばれます。
  • V$●●系の動的パフォーマンス・ビューはパブリック・シノニム(特定のユーザが所有しているわけではないエイリアス、別名)であり、実体はV_$●●というテーブルです。
  • そのため、V_$●●に権限を設定してやる必要があります。これは、シノニムを介して権限を設定できないためです。
grant select on V$●● to 一般ユーザ名

行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。

シノニムを介して権限付与ができないので、エラーとなります。