如何检查分配给架构的对象的特权(DDL,DML,DCL),oracle数据库中的角色?

时间:2018-04-15 10:09:50

标签: sql oracle sqlplus privileges

大多数时候,我们都在努力获取有关Schema,Role及其Objects的特权的详细信息,并尝试找到一些简单的方法来获取有关它的所有细节以及伪查询代码以生成grant语句批量进一步执行。所以我们在这里得到它。

1 个答案:

答案 0 :(得分:2)

关于数据字典视图前缀的简短说明:

ALL_    -Describes PUBLIC Object grants.
USER_   -Describes current user Object grants.
DBA_    -Describes all object grants in the database.

有用的观看次数信息:

ROLE_ROLE_PRIVS     -describes the roles granted to other roles. 
ROLE_SYS_PRIVS      -describes system privileges granted to roles.
ROLE_TAB_PRIVS      -describes table privileges granted to roles. 
DBA_ROLE_PRIVS      -describes the roles granted to all users and roles in the database.
DBA_SYS_PRIVS       -describes system privileges granted to users and roles.
DBA_TAB_PRIVS       -describes all object grants in the database.
DBA_COL_PRIVS       -describes all column object grants in the database.

要了解有关 PRIVS 视图的详情,请访问here

<强>查询:

- 关于用户/架构状态

select username,account_status, created from dba_users where username in ('SCOTT');

- 将分配的角色检查为角色和架构

select * from DBA_ROLE_PRIVS where grantee in ('SCOTT','RESOURCE');

- 检查角色权限

select * from ROLE_ROLE_PRIVS where role in ('RESOURCE','CONNECT');    
select * from ROLE_TAB_PRIVS  where role in ('RESOURCE','CONNECT');
select * from ROLE_SYS_PRIVS  where role in ('RESOURCE','CONNECT');

Pseudo Code:
select 'grant '||privilege||' to ROLE_SLAVE;' from ROLE_SYS_PRIVS where role in ('RESOURCE','CONNECT');
select 'grant '||privilege||' to ROLE_SLAVE;' from ROLE_TAB_PRIVS where role in ('RESOURCE','CONNECT');

- 检查架构的已授予对象的权限

select * from DBA_SYS_PRIVS where grantee in ('SCOTT');
select * from DBA_TAB_PRIVS where grantee in ('SCOTT');
select * from DBA_COL_PRIVS where grantee in ('SCOTT');

Pseudo Code: 
select 'grant '||privilege||' to SCOTT_SLAVE;' from DBA_SYS_PRIVS where grantee in ('SCOTT');
select 'grant '||privilege||' on '||owner||'.'||table_name||' to SCOTT_SLAVE;' from DBA_TAB_PRIVS where grantee in ('SCOTT');
select 'grant '||privilege||' ('||column_name||') '||' on '||owner||'.'||table_name||' to SCOTT_SLAVE;' from DBA_COL_PRIVS where grantee in ('SCOTT');

谢谢!