失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > oracle 数据字典画报 oracle privilege不得不说的11一个数据字典视图

oracle 数据字典画报 oracle privilege不得不说的11一个数据字典视图

时间:2019-12-14 15:03:10

相关推荐

oracle 数据字典画报 oracle privilege不得不说的11一个数据字典视图

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一个数据字典视图》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。