您的位置:首页 > 数据库 > Oracle

oracle数据字典

2015-10-09 11:08 405 查看
了解数据字典的目的:

oracle数据字典,就好像字典的目录一样,了解数据字典有助于把握大致的oracle数据库中数据存放的位置。

让我们进一步了解:

数据字典:使用oracle自动创建并更新的一组表,它是oracle数据库的重要的组成部分,提供了数据库结构、数据库对象空间分配和数据库用户等有关的信息。数据字典的所有者sys用户,而数据字典表和数据字典视图都被保存在system表空间中。

oracle数据字典是存储在数据库中的所用对象信息的知识库,oracle数据库管理系统使用数据字典获取对象信息和安全信息,而用户和数据系统管理员再用数据库字典来查询数据库信息。

oracle数据字典保存有

数据库中对象和段的信息,例如表、视图、索引、包、存储过程以及用户、权限、角色、审计和约束等相关的信息。

 Oracle中的数据字典有静态和动态之分:

静态数据字典主要是:

在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。(动态数据字典就是动态性能视图)

查看有哪些数据字典在dict表中:

select * from dict;

查看有哪些动态性能视图在v$fixed_table中:

(动态性能视图又叫fixed_table)

v$fixed_table不包括静态视图,而dict既包括动态视图也包括静态视图

一、 静态数据字典
这类数据字典主要是

由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。

1)All_视图:用户可以访问的所有视图

2)DBA_视图:只有sysdba才能访问的视图

3)USER_视图:只有当前用户可以访问的视

user_*

该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)

all_*

该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)

dba_*

该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
 介绍几个常用的静态数据字典:

 user_users视图

主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。例如执行下列命令即可返回这些信息。

 

user_tables视图

主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。

user_objects视图

  主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。该视图比user_tables视图更加全面。例如, 需要获取一个名为“package1”的对象类型和其状态的信息,可以执行下面命令:

user_tab_privs视图

  该视图主要是存储当前用户下对所有表的权限信息。比如,为了了解当前用户对table1的权限信息,可以执行如下命令:

   user_sys_privs 视图

   查看当前用户的系统权限。
二动态数据字典(动态性能视图)

 Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。

  分为3个层次(此处仅简单的说明有3个层次)

    1.1 X$表

    1.2 GV$和V$视图

    1.3 GV_$,V_$视图和V$,GV$同义词

  介绍几个常用的动态数据字典

   Oracle中这些动态性能视图都是以v$开头的视图。

      v$access

  该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。

      v$session

  该视图列出当前会话的详细信息。由于该视图字段较多,这里就不列详细字段,为了解详细信息,可以直接在sql*plus命令行下键入:desc v$session即可。

    v$active_instance

  该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。

    v$context

  该视图列出当前会话的属性信息。比如命名空间、属性值等。

  

 

三、静态数据字典视图 和 动态数据字典视图(动态性能视图)的区别

 

a:数据字典视图名一般用复数,而动态性能视图名一般用单数,比如dba_tablepsaces vs v$tablespace。

b:数据字典视图只有在数据库opn的情况下才可以访问,而部分动态性能视图可以数据库非open状态下使用。

c:数据字典视图里看到的列信息一般都是大写,而动态性能视图里看到的一般都是小写。

d:数据字典视图里的信息是静态的,在数据库关闭后不丢失;而动态性能视图里的信息是动态的,关闭instance后信息丢失。

获取动态性能视图的定义:select * from V_$FIXED_VIEW_DEFINITION;

或:select * from v$fixed_table;

获取数据字典视图的定义:select * from dba_views where view_name='DBA_TABLES'; 

或 select dbms_metadata.get_ddl('VIEW','DBA_TABLES') from dual;

在Oracle 10g中,也可以通过EM来显示metadata information。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: