当前位置:首页 > 开发 > 数据库 > 正文

数据字典和动态视图

发表于: 2014-09-27   作者:百合不是茶   来源:转载   浏览:
摘要: 数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭   数据字典中包含   数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等) 数据库为一

数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。随着数据库的启动而启动,数据库关闭时数据字典也关闭   数据字典中包含

 

  • 数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
  • 数据库为一个方案对象分配了多少空间,以及该对象当前使用了多少空间
  • 列的默认值
  • 完整性约束(integrity constraint)信息
  • 数据库用户名
  • 每个用户被授予(grant)的权限(privilege)与角色(role)
  • 监控(audit)信息,例如哪个用户对某个方案对象进行了访问或更新操作
  • 数据库中的其他概要信息

 

 

数据字典;

   数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。 普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息

数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型。 
 user_tables; 
用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表 
比如:查询当前用户的表名

 

select table_name from user_tables; 

 

 

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

 

 

比如:

 

select table_name from all_tables; 

 

 

 

 


 dba_tables; 
它会显示所有方案拥有的数据库表。但是查询这种数据库字典视图,要求用户必须是dba角色或是有select any table系统权限。 
例如:当用system用户查询数据字典视图dba_tables时,会返回system,sys,scott...方案所对应的数据库表。 

 

 

 

 

用户名 , 角色 ,权限 全部都存储在数据字典中;

 

建立用户时会自动的存储在数据字典中,当给该用户授予权限和赋予某项角色时,oracle也会自动的写入数据字典中

 

oracle的权限:

 

   

 

   系统权限

: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等

 

  对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等

 

 

 

 

 

通过查询dba_users可以显示所有数据库用户的详细信息;
select * from dba_users;
  
 
通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限; 
通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限; 
通过查询数据字典dba_col_privs可以显示用户具有的列权限; 
select * from dba_col_privs;
  
 
通过查询数据库字典视图dba_role_privs可以显示用户所 
具有的角色。
select * from dba_role_privs;
  

 

 

 

 

 

 

要查看scott具有的角色,可查询dba_role_privs; 

 

 

<!--EndFragment-->

 

 

select * from dba_role_privs where role ="SCOTT";

 

 

 

 

 

<!--EndFragment-->

查询系统的角色;

 

 

select * from dba_roles;

 

 

 

查询系统中的权限

 

 

 

 

select * from dba_sys_privs;

 

查询对象中的权限

 

select * from dba_tab_privs;

 

 

 

查询数据库的表空间 

select tablespace_name from dba_tablespaces;

 

 

 

 

显示当前数据库的全称 

 

 

 

 

select * from global_name;

 

 

 

 

数据字典记录有oracle数据库的所有系统信息。通过查询数据字典可以取得以下系统信息:比如 
1.对象定义情况 
2.对象占用空间大小 
3.列信息 
4.约束信息 

 

 

 

 

动态视图;

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

<!--EndFragment--> 

1,  以 USER 为前缀的视图

  

  • 反映了数据库中某个用户的全部情况,包括由此用户创建的方案对象,此用户所做的授权行为,等等。
  • 只展示和某个用户相关的信息
  • 与其他视图拥有相同的列,只有 OWNER 信息是隐含的
  • 其内容是以 ALL 为前缀的视图的子集
  • 可以在其上创建经过缩写(abbreviated)的 PUBLIC 同义词(synonym)以便于使用

 2,以all为前缀的视图

 ALL 为前缀的视图反映了某个用户所能看到的全部数据库内容

 

3, DBA 为前缀的视图能够展现整个数据库的全部内容

数据字典和动态视图

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/9348397 答案A是对的,来自己官方
一、数据字典 不仅是每个Oracle数据库的核心组件之一,也是所有数据库用户重要的信息资源;描述数据
一、数据字典 不仅是每个Oracle数据库的核心组件之一,也是所有数据库用户重要的信息资源;描述数据
数据通过控制器以一个数组或是对象的形式传入视图 , 这个数组或对象作为视图载入函数的第二个参数
重要性: 因为数据字典中有用户的信息,我们登录的时候要查询数据字典,有权限信息,我们做操作的时
作者:KIMLIM 本文讲的是如何用一个数据字典在不同的业务场景中显示不同的可选值,而不用建立多个数
§1.1.1关系模型 一个描述两个集合的元素如何相互联系或如何一一对应的数学概念,对于数据库来说,
§1.1.1关系模型 一个描述两个集合的元素如何相互联系或如何一一对应的数学概念,对于数据库来说,
§1.1.1关系模型 一个描述两个集合的元素如何相互联系或如何一一对应的数学概念,对于数据库来说,
官方文档:Book => REF => Reference => Part II Static Data Dictionary Views 数据字典
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号