インフラ課の橋本です。
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: 表またはビューが存在しません。
シノニムを介して権限付与ができないので、エラーとなります。