代码改变世界

Data Dictionary(数据字典)

2009-08-21 11:51  hyddd  阅读(5978)  评论(0编辑  收藏

前言

在创建数据库的同时,Oracle也会创建一些其他的Objects/Structures,包括:

1.Data Dictionary(数据字典)

2.Performance tables(动态性能表)

3.PL/SQL packages(PL/SQL程序包)

4.数据库时间触发器


一.Data Dictionary

数据字典是Oracle 数据库最重要的部分之一,它是一组只读表和视图,提供有关其相关数据库的信息(这些信息相对稳定)。

1.数据字典的组成

(1).基表<Base tables>(核心,但一般我们不和他打交道)

  【1】作用:存储数据库的说明(description)。

  基表是存储有关数据库的信息的底层表。基表是在任何Oracle 数据库中首先创建的对象。在使用CREATE DATABASE 创建数据库时,只要Oracle 服务器运行sql.bsq 脚本,就会自动创建这些对象。只有Oracle 服务器才能对这些基表执行写入操作。用户很少直接访问基表,因为其中的数据大多数都是以隐含格式存储的。

  【2】“基表”在使用Create Database时候创建,这时Oracle调用了admin/sql.bsq脚本进行创建。

(2).数据字典视图<Data Dictionary views>

  【1】简化“基表”信息。

  数据字典视图是基表的汇总,可以更有效地显示基表信息。

  【2】“数据字典视图”是在运行CREATE DATABASE命令之后使用catalog.sql脚本创建的。

 

2.数据字典存储以下内容

(1).逻辑(logical)和物理(physical)数据库结构

    数据库内所有方案对象的定义,这些对象包括表、视图、索引、簇、同义词、
序列、过程、函数、程序包、触发器等等。

(2).对象的定义(definition)和空间分配(space allocation)

    已为方案对象分配的空间量以及它们当前使用的空间量。

(3).完整性约束(integrity constraints)

    列的缺省值,完整性约束信息。

(4).用户(users),角色(roles),权限(privileges)

    已授予每个用户的权限和角色。

(5).审计(Auditing)

    审计信息,如有哪些人访问或更新了各种方案对象。

从以上的内容看,数据字典非常重要,存储数据库正常工作所必要的信息。

 

3.数据字典主要用途

Oracle Server使用它来查找有关以下内容的信息:
(1). 用户(Users)
(2). 方案对象(Schema object)
(3). 存储结构(Storage structures)

在实行DDL语句时,Oracle服务器会对数据字典进行修改,Oracle通过不断地维护数据字典,及时反映数据库结构方面的变化。数据字典/数据字典视图一般作为参考资料供我们使用。

 

二.Data Dictionary View

数据字典视图是静态视图,从这些视图中用户可以知道:
• 是否曾经创建了某个对象?
• 该对象是什么的一部分?
• 谁拥有该对象?
• 用户具有哪些权限?
• 对该对象有哪些限制?

1.Data Dictionary View的3类静态视图

(1).DBA_XXX:

    带有DBA 前缀的视图显示整个数据库的全局视图,只有数据库管理员才能查询它们。如果用户被授予了系统权限SELECT ANY TABLE,则也可以查询数据字典中前缀为DBA 的视图。

(2).ALL_XXX:

    带有ALL前缀的视图指的是从用户角度看到的完整数据库视图。这些视图返回有关Schema object的信息,除了用户所拥有的Schema object外,还包括那些通过公开或显式授予权限和角色的方式让用户获得访问权限的Schema object。

(3).USER_XXX:

    带有USER前缀的视图,这些视图:
        • 涉及数据库中用户自己独有的环境。
        • 通常涉及当前用户所拥有的对象。
        • 除OWNER列暗指当前用户外,具有与其它视图一致的列。
        • 返回ALL视图中信息的子集。
        • 为方便起见,可具有缩写的公共同义词(pubic synonyms)。

 

2.重要的Data Dictionary表

(1).总览表(General overview)
    – DICTIONARY,DICT_COLUMNS
(2).方案对象(Schema objects)
    – DBA_TABLES,DBA_INDEXES,DBA_TAB_COLUMNS,DBA_CONSTRAINTS
(3).空间分配(Space allocation)
    – DBA_SEGMENTS,DBA_EXTENTS
(4).数据库结构(Database structure)
    – DBA_TABLESPACES,DBA_DATA_FILES

可以通过select * from xxxx;了解以上各表的结构。