引言
Oracle 数据字典由一系列表和视图构成,在创建数据库时生成,记录了数据库系统信息以及数据库中所有的对象信息。数据字典拥有者为 SYS 用户,物理存储在 SYSTEM 表空间中。数据字典的表和视图对于所有用户(包括 DBA )都是只读的,用户只能通过 SELECT 语句访问查询数据,数据的维护与管理由 Oracle 数据库服务器内部完成。
Oracle 数据字典主要包括以下内容:
●数据库中所有模式对象的信息,如表、视图、索引和簇等。
●逻辑和物理的数据库结构。
●对象的定义和空间分配。
●用户、角色和权限。
●用户访间或使用的审计信息。
●列的缺省值、约東信息的完整性。
●其他产生的数据库信息。
Oracle 数据字典除了用于 Oracle 数据库系统管理外,对于 DBA 及普通数据库用户也有着非常重要的作用。
数据字典主要有以下用途:
● Oracle 通过访问数据字典获取用户、模式对象、数据库对象定义与存储等信息,以判断用户权限的合法性、模式对象存在性及存储空间的可用性等。
●使用 DDL 语句修改数据库对象后,0racle将在数据字典中记录所做的修改。
●任何数据库用户都可以从数据字典只读视图中获取各种数据库对象的信息。
● DBA 可以从数据字典动态性能视图中获取数据库的运行状态,作为性能调整的依据。
Oracle 数据字典有静态数据字典和动态数据字典两种,静态数据字典在用户访问数据字典时不会发生改变;动态数据字典依赖于数据库运行的性能,反映数据库运行的一些内在信息,因此数据是动态变化的。
1.静态数据字典
静态数据字典主要由表和视图组成,这里的表是基表,表中存储的信息用户不能直接访问,因此对于数据字典的使用,主要是使用数据字典视图。
静态数据字典中的视图根据所查询的范围不同可以分为三类: USER 视图、 ALL 视图和 DBA 视图。
● USER 视图: USER 视图的名称以“ USER _”为前缀,该视图记录了当前用户所拥有的对象的信息。例如, USER _ TABLES 视图记录了用户拥有的表信息。
● ALL 视图: ALL 视图的名称以“ ALL ”为前缀,用来记录当前用户能够访问的对象的信息,包括被授权访问的对象信息,范围比 USER 视图更广。例如, ALL _ TABLES 视图,通过它可以访问用户所能访问的所有表信息。
● DBA 视图: DBA 视图的名称以“ DBA ”为前缀,用来记录数据库实例的所有对象的信息,一般具有管理员权限的用户才具有访问这些信息的权限。例如, DBA TABLES 视图,通过它可以访问所有用户的表信息。上述三类视图根据用户的权限不同,从而能够查询的数据范围也不同。具体来说,由于数据字典视图是由 SYS 用户所拥有的,所以在默认情况下,只有 SYS 和拥有 DBA 系统权限的用户才能看到所有的视图,没有 DBA 权限的用户只能看到 USER 和 ALL 视图。
2.动态数据字典
动态数据字典包括动态性能表和动态性能视图,由 Oracle 内部维护。这些表和视图记录了当前数据库的行为,在数据库运行的时候会不断进行更新,所以称为动态数据字典。动态性能表在数据库实例启动后动态创建,用于存放数据库运行过程中与性能相关的信息, Oracle 使用这些表生成动态性能视图。默认情况下,只有 SYS 用户和拥有 DBA 权限的用户可以访问动态性能视图,并且在数据库启动的不同阶段只能访问不同的动态性能视图。
动态性能视图以“ V $”或“ GV $”开头, V $视图用来记录与数据库活动相关的性能统计动态信息; GV $视图用来记录分布式环境下所有实例的动态信息。 DBA 可使用动态性能视图监视和调优数据库。
一、基本的数据字典
字典名称 | 说 明 |
---|---|
DBA_TABLES | 所有用户的所有表的信息 |
DBA_TAB_COLUMNS | 所有用户的表的字段信息 |
DBA_VIEWS | 所有用户的所有视图信息 |
DBA_SYNONYMS | 所有用户的同义词信息 |
DBA_SEQUENCES | 所有用户的序列信息 |
DBA_CONSTRAINTS | 所有用户的表的约束信息 |
DBA_INDEXES | 所有用户的表的索引简要信息 |
DBA_IND_COLUMNS | 所有用户的索引的字段信息 |
DBA_TRIGGERS | 所有用户的触发器信息 |
DBA_SOURCES | 所有用户的存储过程信息 |
DBA_SEGMENTS | 所有用户的段的使用空间信息 |
DBA_EXTENTS | 所有用户的段的扩展信息 |
DBA_OBJECTS | 所有用户对象的基本信息 |
CAT | 当前用户可以访问的所有基表 |
TAB | 当前用户创建的所有基表、视图和同义词等 |
DICT | 构成数据字典的所有表的信息 |
二、与数据库组件有关的数据字典
数据库组件 | 数据字典中的表或视图 | 说明 |
---|---|---|
数据库 | V$ DATAFILE | 记录系统的运行情况 |
表空间 | DBA_TABLESPACES | 记录系统表空间的基本信息 |
表空间 | DBA_FREE_SPACE | 记录系统表空间的空闲空间的信息 |
控制文件 | V$ CONTROLFILE | 记录系统控制文件的基本信息 |
控制文件 | V$ CONTROLFILE_RECORD_SECTION | 记录系统控制文件中记录文档段的信息 |
控制文件 | V$PARAMETER | 记录系统各参数的基本信息 |
数据文件 | DBA _ DATA_FILES | 记录系统数据文件以及表空间的基本信息 |
数据文件 | V$ FILESTAT | 记录来自控制文件的数据文件信息 |
数据文件 | V$DATAFILE_HEADER | 记录数据文件头部分的基本信息 |
段 | DBA_SEGMENTS | 记录段的基本信息 |
数据区 | DBA_EXTENTS | 记录数据区的基本信息 |
曰志 | V$THREAD | 记录曰志线程的基本信息 |
曰志 | V$LOG | 记录曰志文件的基本信息 |
曰志 | V$LOGFILE | 记录曰志文件的概要信息 |
归档 | V$ ARCHIVED_LOG | 记录归档曰志文件的基本信息 |
归档 | V$ ARCHIVE_DEST | 记录归档曰志文件的路径信息 |
数据库实例 | V$ INSTANCE | 记录实例的基本信息 |
数据库实例 | V$ SYSTEM_RARA M ETE R | 记录实例当前有效的参数信息 |
内存结构 | V$SGA | 记录SGA区的大小信息 |
内存结构 | V$ SGASTAT | 记录SGA的使用统计信息 |
内存结构 | V$ DB_OBJ ECT_CACHE | 记录对象缓存的大小信息 |
内存结构 | V$SQL | 记录SQL语句的详细信息 |
内存结构 | V$SQLTEXT | 记录SQL语句的语句信息 |
内存结构 | V$ SQLAREA | 记录SQL区的SQL基本信息 |
后台进程 | V$BGPROCESS | 显示后台进程信息 |
后台进程 | V$ SESSION | 显示当前会话信息 |
三、常用动态性能视图
视图名称 | 说 明 |
---|---|
V$ FIXED_T ABLE | 显示当前发行的固定对象的说明 |
V$ INSTANCE | 显示当前实例信息 |
V$ LATCH | 显示锁存器的统计数据 |
V$ LIBRARYCACHE | 显示有关库缓存性能的统计数据 |
V$ ROLLSTAT | 显示联机的回滚段的名字 |
V$ ROWCACHE | 显示活动数据字典的统计 |
V$SGA | 显示有关系统全局区的总结信息 |
V$ SGASTAT | 显示有关系统全局区的详细信息 |
V$SORT_USAGE | 显示临时段的大小及会话 |
V$SQLAREA | 显示SQL区的SQL信息 |
V$SQLTEXT | 显示在SGA中属于共享游标的SQL语句内容 |
V$STSSTAT | 显示基本的实例统计数据 |
V$SYSTEM_EVENT | 显示一个事件的总计等待时间 |
V$WAITSTAT | 显示块竞争统计数据 |