今天我注意到一件有趣的事情。考虑一个生产和测试数据库配备相同权限的系统。在生产数据库中,一个用户可以选择另一个用户下的表,而没有选择能力。但是,这个过程不会发生在测试数据库中。生产数据库中出现这种情况的原因可能是什么?
生产数据库权限:
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
但是 USER1 可以选择这个表。
此致,
EXP_FULL_DATABASE
角色包括SELECT ANY TABLE
特权。