開発時に発生するエラー

ORA-02030: 固定表/固定ビューでは選択のみ可能です。

原文:ORA-2030: can only select from fixed tables/views

たとえば V$SESSION ビュー(※) は SELECT 以外のことはできません ということ。

(※) ほとんど見かけないが 動的パフォーマンス・ビューには別の呼称もあり、 固定ビュー と表記されることがある。

 

ほぼ無いとは思う原因

動的パフォーマンス・ビュー の内容を消そうとした

SQL> delete from v$session;
delete from v$session
            *
行1でエラーが発生しました。:
ORA-02030: 固定表/固定ビューでは選択のみ可能です。

対応

そんな危ないことを試そうとしないでください

 

原因

V$SESSION などの動的パフォーマンスビューを PL/SQL から参照しようとし、SELECT ... INTO ... FROM V$SESSION と書いたがエラーになるため
SYS から GRANT SELECT ON V$SESSION TO username で参照権限を与えようとした。

SQL> GRANT SELECT ON V$SESSION TO rivus ;
GRANT SELECT ON V$SESSION TO rivus
                *
行1でエラーが発生しました。:
ORA-02030: 固定表/固定ビューでは選択のみ可能です。

対応

V$SESSION などの動的パフォーマンスビューは実はビューの実体ではなく SYS が所有する FIXED VIEW に対する PUBLIC シノニム である。
参照権限を付与したい場合には、以下のようにビューの本体である、アンダースコア付きの 「SYS.V_$SESSION」 に対して権限を付与する。

SQL> GRANT SELECT ON SYS.V_$SESSION TO rivus;
 
権限付与が成功しました。

補足 : 固定ビューのオーナーと実体名

select owner, synonym_name, '==>', table_owner, table_name from dba_synonyms 
where synonym_name like 'V$%' or synonym_name like 'GV$%' ;

関連事項

一覧ページへ戻る

OTN (Oracle Technology Network)によるエラーメッセージによる情報だけでは、対処に困ったエラーについてのプラクティスです。
ベスト・プラクティスというわけではないので、書いてあることに固執しないで広い視野でエラー対応してください。

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)