Dar permisos de lectura a un usuario en todos sus objetos

PROBLEMA:

Hemos creado un usuario en Oracle y queremos darle permisos de SELECT en todos los objetos del esquema. Esto supondria tener que ir uno por uno dando permisos de grant.

Solución:

Para ello lo que vamos ha hacer es con una query sacar un fichero txt con todos los grant que luego ejecutaremos directamente.

Por ejemplo nuestro usuario se llama read_user

CREATE USER read_user IDENTIFIED BY lectura;

A continuación ejecutamos la siguiente consulta

 SELECT 'GRANT SELECT ON MySchema.'||object_Name||' TO read_user;' From dba_objects where object_type = 'TABLE' and owner = 'Usuario_propiertario'

Quedando algo de esta manera

RANT SELECT ON Usuario_propiertario.USERPICKERFILTER TO read_user;
GRANT SELECT ON Usuario_propiertario.USERPICKERFILTERGROUP TO read_user;
GRANT SELECT ON Usuario_propiertario.USERPICKERFILTERROLE TO read_user;
GRANT SELECT ON Usuario_propiertario.PROJECTVERSION TO read_user;
GRANT SELECT ON Usuario_propiertario.VERSIONCONTROL TO read_user;
GRANT SELECT ON Usuario_propiertario.VOTEHISTORY TO read_user;
GRANT SELECT ON Usuario_propiertario.WORKFLOWSCHEME TO read_user;
GRANT SELECT ON Usuario_propiertario.WORKFLOWSCHEMEENTITY TO read_user;
GRANT SELECT ON Usuario_propiertario.JIRAWORKFLOWSTATUSES TO read_user;
GRANT SELECT ON Usuario_propiertario.APP_USER TO read_user;

Con esto nos ahorraríamos bastante tiempo