红 石 那一年

常用链接

统计

最新评论

oracle 的数据字典

        数据字典是整个数据库的核心,它描述了数据库自身的信息以及数据库里记录对象的信息。它由两部分组成:数据字典基本表和数据字典视图。 
        数据字典基本表与普通用户创建的表没什么区别,只不过其中存放了数据字典的数据。其所有者是用户sys,存放在system表空间里。用户只能读取数据字典表,而不能用dml语句去修改这些数据字典表,尽管它们与普通表一样也是可以被dml语句修改的。因为一方面,数据字典基本表里的数据很隐讳,没有文档记录其中包含数据的含义。另一方面易造成表信息不一致,导致数据库崩溃。一旦数据字典基本表的数据发生损坏,则数据库就必须从备份中进行恢复了。
        由于基本表之间的关系过于复杂,同时数据含义难懂,不便于查询。因为Oracle提供了数据字典视图来简化数据字典。这些视图隐藏了基本表之间的复杂关系,并为隐讳的列名提供了含义清楚的列名,使得我们从视图的列名就能知道该列的含义。
        数据字典视图分为三个层面:DBA、ALL以及USER。所谓DBA层面,表示以DBA_开头的视图,其中包含了整个数据库范围的数据。比如dba_tables视图就包含了数据库里所有表的信息。用户需要一下的授权才能访问DBA层面的视图;ALL层面表示以ALL_开头的视图,其中包含了当前登录用户有权看到的数据。它是DBA_视图的子集。比如ALL_TABLES记录了当前登录用户有权访问的所有表的信息;USER层面表示以USER_开头的视图,其中包含了当前登录用户所拥有的所有表的信息。它是ALL_视图的子集。
 
        例:dba_tables 记录了所有表的信息;
                dba_tab_columns 存放了所有表的所有列的信息
        我们不需要一一记住,但是有一个视图,我们必须知道,那就是dictionary视图。因为该视图记录了所有的数据字典视图的名称。所以当我们需要查找某个数据字典信息而又不知道这个信息记录在哪个视图里的时候,可以到dictionary视图里找。该视图还有个同名词:dict;
        oraclej里数据字典视图的组织方式是:先基于数据字典基本表创建视图,然后为视图创建一个同名的同名词,并将该同名词赋给了PUBLIC,从而使得所有用户可以通过同名词来查看数据字典的信息。

posted on 2008-08-25 21:45 红石 阅读(204) 评论(0)  编辑  收藏 所属分类: 数据库