Oracle数据字典

来源:互联网 发布:皇室战争小闪电数据 编辑:程序博客网 时间:2024/05/16 15:36

数据字典

主要用来查询Oracle的系统级别的信息。用户,角色,权限。

数据字典是Oracle数据库中最主要的组成部分,它提供了数据库的一些系统信息。

数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户,用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。数据字典包括数据字典基表和数据字典视图(动态视图)。其中数据字典基表,静态,不经常变化;数据字典动态试图记载了例程启动后的相关信息,动态变化的。

数据字典基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表;数据字典动态视图是基于动态字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型,

eg:user_tables,当前用户的所有表

select   table_name from  user_tables;

all_tables,当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表

select   table_name from  all_tables;

dba_tables,它会显示所有方案拥有的数据库表,但是查询这种数据库字典视图,要求用户必须是dba角色或是有select  any  table 系统权限。

select   table_name from  dba_tables;

用户名,权限,角色

在创建用户时,Oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典(相当于表)

通过查询dba_users 可以显示所有数据库用户的详细信息

eg:select *  from   dba_users;

通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限

通过查询数据字典视图dba_tab_privs可以显示用户具有的对象权限

通过查询数据字典dba_col_privs可以显示用户具有的列权限

通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色

查询Oracle中的所有角色,一般是dba:

selcet  * from   dba_roles;

查询某个角色包括哪些系统权限:

select  *  from  dba_sys_privs  where  granteee='DBA'(角色名称)或是select  *  from  role_sys_privs  where role='DBA'(角色名称)

查询某个角色包括哪些对象权限:

select  *  from  dba_tab_privs  where  granteee='DBA'(角色名称) 

查看某个用户,具有什么样的角色:

select  *  from    dba_role_privs  where  grantee='用户名'

查询Oracle中所有的系统权限,一般是dba:

select   *  from   system_privilege_map  order by name;

查询Oracle中所有的对象权限,一般是dba:

select  distinct  privilege  from  dba_tab_privs;

查询数据库的表空间:

select  tablespace_name  from  dba_tablespaces;


显示当前用户可以访问的所有数据字典视图:

select  *  from  dict  where  comments  like  '%grant%';

显示当前数据库的全称:(即显示当前数据库名称)

select   *  from  global_name;


动态性能视图

动态性能视图用于记录当前例程的活动信息,当启动Oracle  server时,系统会创建动态性能视图;当停止时,系统会删除动态性能视图。oracle的所有动态性能视图都是以v_$开始的,并且oracle为每个动态性能视图都提供了相应的同义词,并且其同义词是以v$开始的

例如:v_$datafile的同义词为v$datafile

动态性能视图的所有者为sys,一般情况下,由dba或是特权用户来查询动态性能视图。





0 0
原创粉丝点击