Notei uma coisa interessante hoje. Considere um sistema em que os bancos de dados de produção e teste estejam equipados com os mesmos privilégios. No banco de dados de produção, um usuário pode selecionar a tabela em outro usuário sem a capacidade de selecionar. No entanto, esse processo não acontece no banco de dados de teste. Qual poderia ser o motivo dessa situação no banco de dados de produção?
Privilégios do banco de dados de produção:
ALTER ANY PROCEDURE
CREATE ANY CREDENTIAL
CREATE ANY JOB
CREATE ANY PROCEDURE
CREATE ANY RULE
CREATE ANY SEQUENCE
CREATE ANY TABLE
CREATE ANY TRIGGER
CREATE ANY TYPE
CREATE ANY VIEW
CREATE PROCEDURE
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DEBUG ANY PROCEDURE
EXECUTE ANY PROCEDURE
GRANT ANY PRIVILEGE
GRANT ANY ROLE
AQ_ADMINISTRATOR_ROLE
AUTHENTICATEDUSER
CONNECT
EXP_FULL_DATABASE
JAVA_ADMIN
JAVADEBUGPRIV
JAVA_DEPLOY
JAVAIDPRIV
JAVASYSPRIV
JAVAUSERPRIV
select * from dba_tab_privs where grantee='USER1' and owner='USER2' and table_name='TABLE_NAME_OWNED_BY_USER2' order by table_name, privilege;
no rows selected
Mas USER1 pode selecionar esta tabela.
Cumprimentos,
A
EXP_FULL_DATABASE
função inclui oSELECT ANY TABLE
privilégio.