Las tablas del sistema o relacionadas con el diccionario de la base de datos (v_$sql en este caso) son propiedad de Oracle sys
usuario y necesita privilegios especiales para acceder a ellos. Debe iniciar sesión en la base de datos Oracle como sysdba user
u obtenga esos privilegios (su DBA podría ayudarlo con esto) para obtener acceso a las vistas del diccionario de datos.
Como se menciona en este artículo
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
Entonces, intente lo siguiente para otorgar SELECCIONAR en todas las vistas de diccionario para que pueda usarlo en sus bloques pl/sql.
grant select any dictionary to USERNAME