Fala André!!
Quando uma procedure é executada, o contexto de segurança utilizado não leva
em consideração as roles, isto é, todo o privilégio adquirido através de uma
role é ignorado quando você roda uma procedure.
Você tem que conceder o privilégio diretamente para o owner da procedure,
diria o
Fala André!
A DBA_TAB_PRIVS te mostra todos os privilégios de objeto de um usuário ou
role. Apesar do nome incluir TAB, ela vale pra quaisquer objetos, como views
e procedures.
A DBA_SYS_PRIVS te mostra todos os privilégios de sistema, como SELECT ANY
CATALOG ou UNLIMITED TABLESPACE.