oracle 11g 学习笔记 10_30(2)
数据字典和动态性能视图
数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息
动态性能视图记载了例程启动后的相关信息。
一、数据字典
数据字典记录了
数据库的系统信息,它是只读表和视图的集合,数据字典的
所有者为sys用户。
用户
只能在数据字典上执行
查询操作(select语句),而其维护和修改是由
系统自动完成的。
数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息(可以理解为静态数据),普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user.xxx,
all.xxx, dba,xxx三种类型。
*user_tables
用于显示当前用户的所拥有的所有表,它只返回用户所对应方案的所有表。
select table_name from user_tables;
*all_tables
用于显示当前用户可以访问到的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问到的其它方案的表。
select table_name from all_tables;
*用户名,权限,角色
在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典,通过查询dba.users可以显示所有数据库用户的详细信息;
通过查询数据字典视图
dba_sys_privs,可以显示用户所具有的
系统权限
通过查询数据字典视图
dba_tab_privs可以显示用户具有的
对象权限
通过查询数据字典dba_col_privs可以显示用户具有的列权限
通过查询数据字典视图
dba_role_privs可以显示
用户所具有的角色
查询看scott具有的角色,可以查询dba_role_privs;
//1、先查看一下dba_role_privs表结构
desc dba_role_privs;
Name Type Nullable Default Comments
------------ ------------ -------- ------- -------------------------------------------------
GRANTEE VARCHAR2(30) Y Grantee Name, User or Role receiving the grant
GRANTED_ROLE VARCHAR2(30) Granted role name
ADMIN_OPTION VARCHAR2(3) Y Grant was with the ADMIN option
DEFAULT_ROLE VARCHAR2(3) Y Role is designated as a DEFAULT ROLE for the user
//2、
select * from dba_role_privs where grantee='SCOTT';
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
------------------------------ ------------------------------ ------------ ------------
SCOTT RESOURCE NO YES
SCOTT CONNECT NO YES
二、角色和权限
一个角色里拥有很多权限,其实角色就是由权限构成的。角色可以分配给用户,那么该用户就拥有了该角色的权限。一个用户可能有多个角色。
1、如何查询一个角色包含的权限?
//这个问题包含了两小问题:
a、一个角色包含的系统权限;
select * from dba_role_privs where grantee='DBA' //DBA是用户名
或者是:
select * from dba_sys_privs where role='DBA'
b、一个角色包含的对象权限