データベース ディクショナリ関連またはシステム テーブル (この場合は v_$sql) は、Oracle sys
によって所有されます。 ユーザーであり、それらにアクセスするには特別な権限が必要です。 sysdba user
として Oracle データベースにログインする必要があります。 または、これらの権限を取得して (DBA がこれを支援してくれる場合があります)、データ ディクショナリ ビューへのアクセス権を取得します。
この記事 に記載されているとおり
The problem is that procedures don't respect roles; only directly granted rights
are respected. So, that means that table_owner has to regrant the right to select
したがって、以下を試して、すべてのディクショナリ ビューで SELECT を許可し、pl/sql ブロックで使用できるようにしてください。
grant select any dictionary to USERNAME