Para ambientes que utilizam o SGBD Oracle, a criação de um usuário deve ter os seguintes GRANTS:
- CONNECT
- RESOURCE
- ALTER SYSTEM
- CREATE VIEW
- ALTER SYSTEM DISCONNECT SESSION
- SELECT ON SYS.COL$
- SELECT ON SYS.OBJ$
- SELECT ON SYS.IND$
- SELECT ON SYS.ICOL$
- SELECT ON SYS.ALL_ARGUMENTS
- SELECT ON SYS.ALL_INDEXES
- SELECT ON SYS.ALL_IND_COLUMNS
- SELECT ON SYS.ALL_OBJECTS
- SELECT ON SYS.ALL_PROCEDURES
- SELECT ON SYS.ALL_SEQUENCES
- SELECT ON SYS.ALL_TABLES
- SELECT ON SYS.ALL_TAB_COLUMNS
- SELECT ON SYS.ALL_TRIGGERS
- SELECT ON SYS.ALL_VIEWS
- SELECT ON SYS.V_$PARAMETER
- SELECT ON SYS.GV_$PARAMETER
- SELECT ON SYS.V_$SESSION
- SELECT ON SYS.GV_$SESSION
- SELECT ON SYS.DATABASE_PROPERTIES
- SELECT ON SYS.NLS_SESSION_PARAMETERS
- SELECT ON SYS.V_$VERSION
- SELECT ON SYS.NLS_SESSION_PARAMETERS
- SELECT ON SYS.V_$NLS_PARAMETERS
- SELECT ON SYS.GV_$NLS_PARAMETERS
- SELECT ON SYS.DBA_ROLE_PRIVS
- SELECT ON SYS.DBA_TAB_PRIVS
- SELECT ON SYS.ROLE_TAB_PRIVS
- UNLIMITED TABLESPACE
Esses grants são necessários quando a chave UseSysTables está ligada.
Esses grants são necessários para verificar se o usuário possui os grants mínimos para uso do DBAccess.
Esse grant não pode ser aplicado em uma ROLE, somente para um usuário.
Esse grant deve ser liberado para o uso da funcionalidade de encerramento de conexão - kill
Uma forma de dar os mesmos grants para vários usuários é criar uma ROLE, dar os grants acima citados para a ROLE e associar a ROLE com o usuário, como no exemplo abaixo:
Criando uma ROLE chamada C##DBROLE:
CREATE ROLE C##DBROLE NOT IDENTIFIED;
Concedendo GRANTS para a ROLE:
GRANT CONNECT TO C##DBROLE; GRANT RESOURCE TO C##DBROLE; GRANT ALTER SYSTEM TO C##DBROLE; GRANT CREATE VIEW TO C##DBROLE; GRANT SELECT ON SYS.COL$ TO C##DBROLE; GRANT SELECT ON SYS.OBJ$ TO C##DBROLE; GRANT SELECT ON SYS.IND$ TO C##DBROLE; GRANT SELECT ON SYS.ICOL$ TO C##DBROLE; GRANT SELECT ON SYS.ALL_ARGUMENTS TO C##DBROLE; GRANT SELECT ON SYS.ALL_INDEXES TO C##DBROLE; GRANT SELECT ON SYS.ALL_IND_COLUMNS TO C##DBROLE; GRANT SELECT ON SYS.ALL_OBJECTS TO C##DBROLE; GRANT SELECT ON SYS.ALL_PROCEDURES TO C##DBROLE; GRANT SELECT ON SYS.ALL_SEQUENCES TO C##DBROLE; GRANT SELECT ON SYS.ALL_TABLES TO C##DBROLE; GRANT SELECT ON SYS.ALL_TAB_COLUMNS TO C##DBROLE; GRANT SELECT ON SYS.ALL_TRIGGERS TO C##DBROLE; GRANT SELECT ON SYS.ALL_VIEWS TO C##DBROLE; GRANT SELECT ON SYS.V_$PARAMETER TO C##DBROLE; GRANT SELECT ON SYS.GV_$PARAMETER TO C##DBROLE; GRANT SELECT ON SYS.V_$VERSION TO C##DBROLE; GRANT SELECT ON SYS.GV_$SESSION TO C##DBROLE; GRANT SELECT ON SYS.DATABASE_PROPERTIES TO C##DBROLE; GRANT SELECT ON SYS.NLS_SESSION_PARAMETERS TO C##DBROLE; GRANT SELECT ON SYS.V_$NLS_PARAMETERS TO C##DBROLE; GRANT SELECT ON SYS.GV_$NLS_PARAMETERS TO C##DBROLE; GRANT SELECT ON SYS.DBA_ROLE_PRIVS TO C##DBROLE; GRANT SELECT ON SYS.DBA_TAB_PRIVS TO C##DBROLE; GRANT SELECT ON SYS.ROLE_TAB_PRIVS TO C##DBROLE;
Associando a ROLE ao usuário C##DBACCESS:
GRANT C##DBROLE TO C##DBACCESS;
Concedendo GRANT de UNLIMITED TABLESPACE ao usuário C##DBACCESS
GRANT UNLIMITED TABLESPACE TO C##DBACCESS;