Le tabelle di sistema o relative al dizionario del database (v_$sql in questo caso) sono di proprietà di Oracle sys
utente e necessita di privilegi speciali per accedervi. Devi accedere al database Oracle come sysdba user
o ottieni quei privilegi (il tuo DBA potrebbe aiutarti in questo) per ottenere l'accesso alle viste del dizionario dei dati.
Come menzionato in questo articolo
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
Quindi, prova quanto segue per concedere SELECT su tutta la vista dictionay in modo da poterlo utilizzare nei tuoi blocchi pl/sql.
grant select any dictionary to USERNAME