インフラ課の橋本です。

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

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

対処法

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

解説

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

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