oracle privilege不得不说的11一个数据字典视图
dba_roles
数据库定义的所有的角色。
SQL> select count(*) from dba_roles;
COUNT(*)
----------
41
我本没有创建什么角色,oracle预置了很多角色,但是oracle不建议简单依赖这些
预定义的角色,而应该根据自己需求自定义角色。
role_tab_privs
分配给角色的表权限。这里的包含的角色是可分配给用户的。
(Information is provided only about roles to which the user has access.)
表结构解释:
role:角色名。
owner:对象的属主。
table_name:对象名。
column_name:列名,如果适用的话。
privilege:授予该角色的对象特权。
grantable:如果该角色带有with admin option,该列是yes,否则是no。
查看OEM_MONITOR的表权限。下面是查询的部分输出。
SQL> select role,table_name,privilege,grantable
2 from role_tab_privs
3 where role='OEM_MONITOR';
ROLE TABLE_NAME PRIVILEGEGRANTABLE
------------------------------ ------------------------------ ---------------------------------------- ---------
OEM_MONITORMGMT_HISTORYSELECT NO
OEM_MONITORBSLN_OBSERVATION_SETEXECUTE NO
OEM_MONITORBSLN_TIMEGROUPS SELECT NO
OEM_MONITORBSLN_STATISTICS SELECT NO
OEM_MONITORBSLN EXECUTE NO
OEM_MONITORMGMT_BSLN_DATASOURCESSELECT NO
OEM_MONITORMGMT_BSLN_THRESHOLD_PARMS SELECT NO
role_sys_privs
角色拥有的系统权限
先创建一个测试角色
SQL> create role testrole;
Role created
SQL> grant create session,alter session,create table,
2 create view,create synonym,create sequence
3 to testrole;
Grant succeeded
查询role_sys_privs确定角色testrole的系统权限。
SQL> select * from role_sys_privs
2 where role='TESTROLE';
ROLE PRIVILEGEADMIN_OPTION
------------------------------ ---------------------------------------- ------------
TESTROLE CREATE SESSION NO
TESTROLE CREATE SYNONYM NO
TESTROLE CREATE VIEWNO
TESTROLE CREATE SEQUENCE NO
TESTROLE CREATE TABLENO
TESTROLE ALTER SESSION NO
dba_role_privs
查看角色分配给什么对象了。
先将testrole角色分配给oracle11g用户。
SQL> grant testrole to oracle11g;
Grant succeeded
SQL> select * from dba_role_privs
2 where grantee='ORACLE11G';
GRANTEE GRANTED_ROLEADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
ORACLE11G TESTROLE NOYES
从查询可以看出oracle11g用户获得了testrole角色的特权。
再创建一个角色用于测试
SQL> create role testrole1;
Role created
SQL> grant create trigger,create type,create procedure,create operator
2 to testrole1;
Grant succeeded
SQL> grant testrole1 to testrole;
Grant succeeded
查询获得testrole1角色的对象。
SQL> select grantee,granted_role
2 from dba_role_privs
3 where granted_role='TESTROLE1';
GRANTEE GRANTED_ROLE
------------------------------ ------------------------------
TESTROLE TESTROLE1
SYS TESTROLE1
注:以上5个视图的查询只有DBA才能执行。
user_sys_privs
查看当前用户获得的系统特权。
SQL> show user
User is "oracle11g"
SQL> select * from user_sys_privs;
USERNAME PRIVILEGEADMIN_OPTION
------------------------------ ---------------------------------------- ------------
ORACLE11G CREATE SESSION NO
不包括从角色获得的系统特权.create session是最初创建用户的时候授予的。
user_tab_privs
查看当前用户的对象特权
SQL> show user
User is "oracle11g"
SQL> select grantee,table_name,privilege,grantable
2 from user_tab_privs;
GRANTEE TABLE_NAME PRIVILEGEGRANTABLE
------------------------------ ------------------------------ ---------------------------------------- ---------
ORACLE11G EMPLOYEES SELECT NO
从查询可以看出oracle11g拥有hr.employees的查询特权。
user_role_privs
查看用户当前分配到的角色
SQL> select username,granted_role,admin_option,default_role
2 from user_role_privs;
USERNAME GRANTED_ROLEADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
ORACLE11G TESTROLE NOYES
oracle11g用户获得了角色testrole,并且该角色是oracle11g用户的默认角色。
session_roles
当前用户当前启用的角色
SQL> select * from session_roles;
ROLE
------------------------------
TESTROLE
TESTROLE1
testrole1是分配给testrole的。
session_privs
查看当前用户具有的特权。
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
ALTER SESSION
CREATE TABLE
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
role_tab_privs
查看当前用户具有的通过角色获得的表特权。
先通过角色授权表特权.
SQL> create role tab_role;
Role created
SQL> grant select,update on hr.employees to tab_role;
Grant succeeded
SQL> grant tab_role to oracle11g;
Grant succeeded
查看通过角色获得的表特权
SQL> select role,table_name,privilege
2 from role_tab_privs;
ROLE TABLE_NAME PRIVILEGE
------------------------------ ------------------------------ ----------------------------------------
TAB_ROLE EMPLOYEES UPDATE
TAB_ROLE EMPLOYEES SELECT
如果觉得《oracle 数据字典画报 oracle privilege不得不说的11一个数据字典视图》对你有帮助,请点赞、收藏,并留下你的观点哦!