Una buena práctica en Oracle es crear roles para los usuarios y de esta manera facilitar la administracion de usuarios y permisos.
En mi caso yo inicialmente creo 3 roles :
Administracion de datos: Este aplica para las personas que brindan soporte, que requieren modificar datos mas no estructuras de base de datos
CREATE ROLE ROLE_ADMDATOS;
— ROLES
GRANT «RESOURCE» TO ROLE_ADMDATOS ;
GRANT «CONNECT» TO ROLE_ADMDATOS ;
— SYSTEM PRIVILEGES
GRANT UPDATE ANY TABLE TO ROLE_ADMDATOS ;
GRANT INSERT ANY TABLE TO ROLE_ADMDATOS ;
GRANT SELECT ANY SEQUENCE TO ROLE_ADMDATOS ;
GRANT SELECT ANY TABLE TO ROLE_ADMDATOS ;
GRANT EXECUTE ANY PROCEDURE TO ROLE_ADMDATOS ;
GRANT UNDER ANY TABLE TO ROLE_ADMDATOS ;
GRANT UNDER ANY VIEW TO ROLE_ADMDATOS ;
GRANT DELETE ANY TABLE TO ROLE_ADMDATOS ;
Desarrollo de Aplicaciones: Este se le asigna a los desarrolladores que requieren la creacion de objetos y modificacion de los mismos, tienen permisos de consulta sobre diferentes vistas del sistema que les permiten ver la estructura de los objtetos de la base de datos.
CREATE ROLE ROLE_DLLO NOT IDENTIFIED
GRANT SELECT ON SYS.ALL_ALL_TABLES TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_ARGUMENTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_CATALOG TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_COL_COMMENTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_CONS_COLUMNS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_CONSTRAINTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_ENCRYPTED_COLUMNS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_EXTERNAL_TABLES TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_OBJECTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_OBJECT_TABLES TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_QUEUE_TABLES TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_SNAPSHOTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_SYNONYMS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_TAB_COLUMNS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_TAB_COMMENTS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_TABLES TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_TAB_PRIVS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_TRIGGERS TO ROLE_DLLO;
GRANT SELECT ON SYS.ALL_USERS TO ROLE_DLLO;
GRANT SELECT ON SYS.SESSION_PRIVS TO ROLE_DLLO;
GRANT SELECT ON SYS.SESSION_ROLES TO ROLE_DLLO;
GRANT SELECT ON SYS.USER_OBJECTS TO ROLE_DLLO;
GRANT SELECT ON SYS.USER_ROLE_PRIVS TO ROLE_DLLO;
GRANT SELECT ON SYS.V_$OPTION TO ROLE_DLLO;
GRANT SELECT ON SYS.V_$PARAMETER TO ROLE_DLLO;
GRANT SELECT ON SYS.V_$SESSION TO ROLE_DLLO;
GRANT SELECT ANY DICTIONARY TO ROLE_DLLO;
GRANT CREATE SESSION TO ROLE_DLLO;
GRANT DROP ANY TABLE TO ROLE_DLLO;
GRANT ALTER ANY TABLE TO ROLE_DLLO;
GRANT CREATE ANY TABLE TO ROLE_DLLO;
GRANT DELETE ANY TABLE TO ROLE_DLLO;
GRANT INSERT ANY TABLE TO ROLE_DLLO;
GRANT SELECT ANY TABLE TO ROLE_DLLO;
GRANT UPDATE ANY TABLE TO ROLE_DLLO;
GRANT CREATE ANY PROCEDURE to ROLE_DLLO;
GRANT UNDER ANY VIEW TO ROLE_DLLO;
GRANT EXECUTE ANY PROCEDURE TO ROLE_DLLO;
GRANT EXECUTE ON UTL_FILE TO ROLE_DLLO;
GRANT RESOURCE TO ROLE_DLLO;
GRANT CONNECT TO ROLE_DLLO;
GRANT ROLE_DLLO TO SYS WITH ADMIN OPTION;
El último es el rol de consulta: Este se le asigna a quienes solo necesitan realizar consultas en la base, y ver la estructura de los objetos, adicional a este rol, a este tipo de usuarios se les dan permisos de consulta sobre tablas o vistas especificas segun la necesidad, para evitar la modificacion o consulta de informacion sensible en la empresa
create role ROLE_CONSULTA;
grant select on ALL_COL_COMMENTS to ROLE_CONSULTA;
grant select on ALL_CONS_COLUMNS to ROLE_CONSULTA;
grant select on ALL_CONSTRAINTS to ROLE_CONSULTA;
grant select on ALL_INDEXES to ROLE_CONSULTA;
grant select on ALL_TAB_COLS to ROLE_CONSULTA;
grant select on ALL_TAB_COLUMNS to ROLE_CONSULTA;
grant select on ALL_TAB_COMMENTS to ROLE_CONSULTA;
grant select on ALL_TABLES to ROLE_CONSULTA;
grant select on ALL_TRIGGERS to ROLE_CONSULTA;
grant select on ALL_VIEWS to ROLE_CONSULTA;
grant select on DUAL to ROLE_CONSULTA;
grant select on USER_INDEXES to ROLE_CONSULTA;
grant select on USER_OBJECTS to ROLE_CONSULTA;
grant select on USER_ROLE_PRIVS to ROLE_CONSULTA;