Oracle数据库基础与应用教程
上QQ阅读APP看书,第一时间看更新

4.5 数据字典

4.5.1 数据字典简介

数据字典是由Oracle服务器创建和维护的一组只读的系统表,它存储了有关数据库和数据库对象的信息,Oracle服务器依赖这些信息来管理和维护数据库。数据字典是一组表和视图结构,它们存储在SYSTEM表空间中。当用户对数据库中的数据进行操作时,如果遇到问题就可以访问数据字典来查看详细的信息。所有的数据字典的名称都存储在DICTIONARY里。

数据字典中存储了以下数据库信息。

➢ 数据库中所有方案对象的信息,如表、视图、同义词和索引等。

➢ 数据库的逻辑结构和物理结构,如表空间和数据文件的信息。

➢ 列的默认值。

➢ 完整性约束的信息。

➢ Oracle用户的名称。

➢ 用户和角色被授予的权限。

➢ 用户访问或使用的审计信息。

➢ 数据库对象的磁盘空间分配信息,如对象所分配的和当前使用的磁盘空间。

➢ 其他产生的数据库信息。

注意

在创建数据库时会运行catalog.sql和catrpoc.sql脚本文件。首先运行catalog.sql脚本文件来创建数据库的内部字典表。然后再运行catrpoc.sql脚本文件来创建数据库内建的存储过程、包等PL/SQL对象。如果使用DBCA工具来创建数据库,则DBCA会自动调用这两个脚本文件。否则执行CREATE DATABASE命令来创建数据库时,需要手工运行这两个脚本文件。

4.5.2 数据字典内容

数据字典中包含数据字典基表和数据字典视图两种内容。

(1)数据字典基表

数据字典基表存储相关的数据库的信息。只有Oracle数据库才能读写数据字典基表,用户很少直接访问它们,因为大部分数据被存储在一个加密格式中,而且大部分数据太过复杂,是普通用户无法理解的。Oracle服务器在创建数据库时自动生成数据字典基表,在任何数据库中,数据字典基表都是Oracle数据库中创建的第一个对象。

(2)数据字典视图

数据字典视图用于对数据字典基表内存储的数据进行汇总与展示,使用JOIN和WHERE子句来简化数据字典基表中的数据,将数据字典基表数据解码为用户较为容易理解的信息,如用户名或表名。在数据字典中,这些视图包含所有对象的名称和描述。有些数据字典视图所有的用户都可以访问,而另外一些仅用于管理员访问。Oracle数据库为许多数据字典视图创建公用同义词,使用户可以方便地访问它们。

4.5.3 数据字典分类

数据字典组织方式是先基于数据字典基表创建数据字典视图,然后再基于数据字典视图创建同义词,以便用户能够方便地对其进行访问。并将该同义词授权给PUBLIC,从而使得所有用户都可以通过同义词查看数据字典信息。

数据字典主要包括三大类,它们分别用前缀来区别,其前缀分别为USER、ALL和DBA,如表4-2所示。这3类数据字典的列几乎是相同的,只是以前缀为ALL和DBA开始的数据字典比USER多了一些列。

表4-2 数据字典分类

在Oracle数据库中,常用的数据字典如表4-3所示。

表4-3 常用数据字典