数据字典概述
数据字典包含如下信息:
-
在数据库中每个模式对象的定义,包括列的默认值和完整性约束信息
-
分配给模式对象的空间量及当前已使用量
-
Oracle 数据库用户的名称、 授予用户的权限和角色、 和与用户相关的审计信息
-
访问数据字典来查找有关用户、 模式对象、 和存储结构的信息
-
每次发出 DDL 语句时, 修改数据字典
数据字典的内容
数据字典包含基表和视图。
这些对象的定义如下:
-
基表
它们存储有关数据库的信息。只应该由数据库写入和读取这些表。用户很少直接访问基础表,因为他们已被规范化, 且大多数数据存储为一种神秘的格式。
-
视图
它们通过使用联接和 WHERE 子句来简化信息,将基础表的数据解码成有用的信息(如用户或表名等) 。这些视图包含数据字典中的所有对象的名称和描述。 一些视图可以被所有数据库用户访问, 而其他一些则仅供管理员访问。
表 6-1 数据字典视图集
前缀 | 用户访问 | 内容 | 注意 |
---|---|---|---|
|
数据库管理员
| 所有对象 |
一些 DBA_ 视图具有更多的列,其中包含对管理员有用的信息。
|
| 所有用户 |
用户具有访问权限的对象
|
包括用户所拥有的对象。这些视图服从当前已启用的角色集合。
|
| 所有用户 |
用户所拥有的对象
|
以 USER_为前缀的视图通常不包括 OWNER 列。此列隐含为对该 USER_ 视图发出查询的用户。
|
SQL> SELECT * FROM DICTIONARY
2 ORDER BY TABLE_NAME;
TABLE_NAME COMMENTS
------------------------------ ----------------------------------------
ALL_ALL_TABLES Description of all object and relational
tables accessible to the user
ALL_APPLY Details about each apply process that
dequeues from the queue visible to the
current user
.
.
.
另见:
-
《Oracle Database Reference》关于数据字典视图及其列的完整列表
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM DBA_OBJECTS
ORDER BY OWNER, OBJECT_NAME;
另见:
《Oracle Database Administrator’s Guide》关于管理权限的详细信息
具有 ALL_ 前缀的视图
具有 ALL_前缀的视图,是站在用户角度,从整体上看待数据库。
例如,如下的查询将返回有关您有权访问的所有对象的信息:
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM ALL_OBJECTS
ORDER BY OWNER, OBJECT_NAME;
SQL> SET ROLE ALL;
Role set.
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*)
----------
68295
SQL> SET ROLE NONE;
Role set.
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*)
----------
53771
具有 USER_ 前缀的视图
这些视图:
-
指的是用户在数据库中的私有环境,包括用户所创建的模式对象的元数据, 对该用户的授权等等
-
只显示与该用户相关的行,仅返回 ALL_视图中的信息的一个子集
-
除隐含的 OWNER 列外, 与其他视图具有相同的列
-
为了方便,可能具有简洁的 PUBLIC 同义词
例如, 以下查询将返回包含在你的模式中的所有对象:
SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS
ORDER BY OBJECT_NAME;
DUAL 表
DUAL 是数据字典中的一个很小的表, 数据库和用户编写的程序可以引用它, 以保证一个已知的结果。
SQL> SELECT ((3*4)+5)/3 FROM DUAL;
((3*4)+5)/3
-----------
5.66666667
另见:
《Oracle Database SQL Language Reference》有关 DUAL 表的详细信息
数据字典存储
数据字典基表是在任何 Oracle 数据库中创建的第一批对象。
另见:
"The SYSTEM Tablespace"有关 SYSTEM 表空间的详细信息
Oracle 数据库如何使用数据字典
另见:
数据字典视图的公共同义词
另见:
Data Dictionary Cache
另见:
动态性能视图概述
这些视图是动态的,因为他们在数据库处于打开状态和在使用过程中会不断更新。这些视图有时也称为 V$ 视图,因为它们的名字以V$起始。
动态性能视图包含如下所示的信息:
-
系统和会话参数
-
内存使用和分配
-
文件状态(包括 RMAN 备份文件)
-
工作和任务的进度
-
SQL 运行
-
统计和度量
动态性能视图有以下主要用途:
-
Oracle 企业管理器使用这些视图, 来获取有关数据库的信息
-
理员可以使用这些视图, 用于性能监控和调试。
另见:
-
《Oracle Database Reference》关于动态性能视图的完整列表
动态性能视图的内容
SYS 拥有其名称以 V_$ 开头的动态性能表。 动态性能视图基于这些表创建,然后在视图上创建以 V$作为前缀的公共同义词。例如, V$DATAFILE 视图包含有关数据文件的信息。 V$FIXED_TABLE 视图包含有关所有动态性能表和视图的信息。
另见:
-
《Oracle Database Administrator’s Guide》了解如何手动运行 catalog.sql
-
《Oracle Real Application Clusters Administration and Deployment Guide》了解如何使用在 Oracle RAC 中的性能视图
数据库对象的元数据
DBMS_METADATA 软件包提供了用于提取数据库对象的完整定义的接口。
另见:
《Oracle Database PL/SQL Packages and Types Reference》关于 DBMS_METADATA的更多信息