As tabelas de sistema ou relacionadas ao dicionário de banco de dados (v_$sql neste caso) são de propriedade do Oracle
sys
usuário e precisa de privilégios especiais para acessá-los. Você precisa fazer login no banco de dados Oracle como sysdba user
ou obtenha esses privilégios (seu DBA pode ajudá-lo com isso) para obter acesso às visualizações do dicionário de dados. Conforme mencionado este artigo
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
Portanto, tente o seguinte para conceder o SELECT em todas as visualizações de dicionário para que você possa usá-lo em seus blocos pl/sql.
grant select any dictionary to USERNAME