第七章:数据字典
 
7.1.概念:
         基表;基表(base table):用于存储相关的数据库信息。只有 Oracle 才能读写这些表。用户很少直接访问她们,因为这些表是规范化的(normalized),且其中的大部分数据的含义是普通用户无法理解的。
7.2.数据字典有三个主要用途:
 1、Oracle 利用数据字典来获取关于用户,方案对象,及存储结构(storage structure)的信息。
  2、每当数据库中执行了 DDL 语句后,Oracle 将对数据字典进行修改。
 3、所有 Oracle 用户都可以使用数据字典来获取关于数据库的信息。
 
7.3.数据字典内容:
n 数据库中所有模式对象的信息,如表、视图、簇、及索引等。
n 分配多少空间,当前使用了多少空间等。
n 列的缺省值。
n 约束信息的完整性。
n Oracle用户的名字。
n 用户及角色被授予的权限。
n 用户访问或使用的审计信息。
n 其它产生的数据库信息。
 
7.4.数据字典视图及分类:
7.4.1.DBA_*该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
7.4.2.ALL_*该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
7.4.3.USER_*该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
7.5.数据字典视图的使用:
数据字典示例
总览
- DICTIONARY, DICT_COLUMNS
方案对象
- DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS,
DBA_CONSTRAINTS
空间分配
- DBA_SEGMENTS, DBA_EXTENTS
数据库结构
- DBA_TABLESPACES, DBA_DATA_FILES
数据字典示例
要获取数据字典视图的概览,可以查询DICTIONARY 视图或其同义词DICT 视图。
例如:
SELECT * FROM dictionary;
用where 子句来缩小查询范围:
SELECT * FROM dictionary WHERE table_name LIKE ‘dba_seg%’
要获得视图中各列的列表,请使用DESCRIBE 关键字:
DESCRIBE dba_users;
要获得数据字典视图中各列的概览,可以查询DICT_COLUMNS 视图。
要查看数据字典视图的内容,请使用SELECT 命令。
SELECT * FROM dba_users;
7.6.动态性能视图的使用:
在Oracle 服务器的整个操作过程中,它将当前数据库活动记录在称为动态性能视图的一组虚拟表中。只有数据库处于运行状态时,这些虚拟表才驻留在内存中,反映数据库操作的实时状况。它们指向内存和控制文件中的实际信息源。这些表不是真正的表,大多数用户都无法访问它们;但是数据库管理员可以在这些视图上查询、授予SELECT 权限并创建视图。这些视图有时称为固定视图,因为数据库管理员无法更改或删除这些视图。动态性能表由SYS 拥有,它们的名称均以V_$ 开头。在这些表上先创建视图,然后再为这些视图创建公共同义词。同义词名以V$ 开头。例如,V$DATAFILE 视图包含有关数据库中数据文件的信息,而V$FIXED_TABLE 视图包含有关数据库中所有动态性能表和视图的信息。
V$CONTROLFILE:列出控制文件的名称
V$DATABASE:包含控制文件中的数据库信息
V$DATAFILE:包含控制文件中的数据文件信息
V$INSTANCE:显示当前例程的状态
V$PARAMETER:列出会话的当前有效参数和值
V$SESSION:列出当前每个会话的会话信息
V$SGA:包含有关系统全局区(SGA) 的摘要信息
V$SPPARAMETER:列出SPFILE 的内容
V$TABLESPACE:显示控制文件中的表空间信息
V$THREAD:包含控制文件中的线程信息
V$VERSION:Oracle 服务器中核心库组件的版本号