数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。
数据字典中包 含:
● 数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
● 数据库为一个方案对象分配了多少空间,以及该对象当前使用了多少空间
● 列的默认值
● 完整性约束(integrity constraint)信息
● 数据库用户名
● 每个用户被授予(grant)的权限(privilege)与角色(role)
● 监控(audit)信息,例如哪个用户对某个方案对象进行了访问或更新操作
● 数据库中的其他概要信息与数据库内的其他数据相同,数据字典也是以表及视图的形式组织的。一个数据库全部的数据字典表与数据字典视图都存储在该数据库的 SYSTEM 表空间内。数据字典不仅是 Oracle 数据库的基础组成部分,她也为所有用户--从终端用户,到应用程序设计者,再到数据库管理员--提供了一个重要的工具。数据字典可以通过 SQL 语句进行访问。由于数据字典是只读的,用户只能对这些表和视图执行查询操作(SELECT语句)。
数据字典由以下两种结构组成:
基表(base table)用于存储相关的数据库信息。只有 Oracle 才能读写这些表。用户很少直接访问她们,因为这些表是规范化(normalized),且其中的大部分数据的含义是普通用户无法理解的。
用户访问视图(user-accessible view)用于对数据字典基表内存储的数据进行汇总与展示。这些视图利用连接(join)及 WHERE
子句简化基表中的数据,将其解码(decode)为用户可理解的信息,例如用户名,表名等。大多数数据库用户只能访问这些视图,而不能访问基表。
警告:
修改或操作数据字典表中的数据可能会给数据库的运行带来不可恢复的损害。
数据字典有三个主要用途:
● Oracle 利用数据字典来获取关于用户,方案对象,及存储结构(storagestructure)的信息。
● 每当数据库中执行了 DDL 语句后,Oracle 将对数据字典进行修改。
● 所有 Oracle 用户都可以使用数据字典来获取关于数据库的信息。