Olá pessoal, a finalidade aqui é somente documentar o procedimento necessário para autorizar um usuário como participante no Realm do Oracle Database Vault e depois desautorizá-lo. Todo este procedimento é possível de ser efetuado através do Enterprise Manager, mas como nem sempre ele está disponível vou deixar aqui documentado para quando alguém, incluindo eu, precisar.
Consultar com o usuário DV_MANAGER em qual Realm a tabela protegida está:
SQL> col NAME for a30 SQL> col OWNER for a30 SQL> col OBJECT_NAME for a20 SQL> SELECT r.name, r.audit_options, r.realm_type, r.enabled, ro.owner, ro.object_name, ro.object_type FROM dvsys.dba_dv_realm r LEFT OUTER JOIN dvsys.dba_dv_realm_object ro ON r.name = ro.realm_name WHERE ro.object_name = 'TABELA_PROTEGIDA'; NAME AUDIT_OPTIONS REALM_TYP E OWNER OBJECT_NAME OBJECT_TYPE ------------------------------ ------------- --------- - ------------------------------ -------------------- ----------- SENSITIVE_DATA_REALM 3 REGULAR Y APP TABELA_PROTEGIDA TABLE
Autorizar o usuário SYSTEM no REALM em questão:
SQL> BEGIN DBMS_MACADM.ADD_AUTH_TO_REALM( realm_name => 'SENSITIVE_DATA_REALM', grantee => 'SYSTEM', auth_options => DBMS_MACUTL.G_REALM_AUTH_PARTICIPANT); END; / PL/SQL procedure successfully completed.
Com o usuário SYSTEM realizar as operações:
SQL> delete from APP.TABELA_PROTEGIDA where ID=200; 1 row deleted;
Novamente com o usuário DV_MANAGER, desautorizar o usuário após realizar as operações necessárias:
SQL> BEGIN DBMS_MACADM.DELETE_AUTH_FROM_REALM( realm_name => 'SENSITIVE_DATA_REALM', grantee => 'SYSTEM'); END; / PL/SQL procedure successfully completed.
O Database Vault é um recurso bastante complexo do Oracle, para saber mais consulte a documentação.
Se tiver dúvidas é só deixar um comentário.
Abraços,
Franky
Referências:
http://www.oracle.com/technetwork/pt/articles/idm/realm-oracle-database-vault-3076147-ptb.html