表空间
默认表空间
SYSTEM
:管理任何其他表空间。它包含数据字典,有关数据库管理信息的表和视图,编译的存储对象(如触发器,过程等)。SYSAUX
:辅助表空间。UNDOTBS1
:撤销表空间。存储的是撤销信息,可以用于恢复操作。TEMP
:临时表空间。可用于排序操作等。USERS
:存储用户的表和索引数据。
表空间的类型有如下三种:
永久表空间:永久表空间包含持久性模式对象。永久表空间中的对象存储在数据文件中。
撤销表空间:撤消表空间是在自动撤消管理模式下运行数据库时,管理撤消数据的一种永久性表空间。
临时表空间:临时表空间仅包含会话期间的模式对象。临时表空间中的对象存储在临时文件中。
数据表
数据字典:记录所有对象的信息。
用户级别:user_*,指一个用户可以使用的数据字典。
管理员级别:dba_*,指由数据库管理员使用的数据字典。
全部级别:all_* ,指不管是用户还是管理员都可以使用。
Oracle 结构
物理存储结构
归档的日志文件
数据库有两种操作模式:ARCHIVELOG
和 NOARCHIVELOG
模式。如果选择了 ARCHIVELOG 模式,也就是归档模式,就会有归档的日志文件,是重做日志文件的备份,可以用来将数据库的内容恢复到某个时间点。
内存结构
主要了解共享内存中的 SGA (系统全局区域)部分。为了便于理解,把它单独提出来,用一个更简单的图表示:
共享池
共享池(share pool)的大小由初始参数 SHARED_POOL_SIZE
确定,它的大小可调节。共享池包含两个主要的子缓存:
库缓存(Library cache):存储数据库运行的 SQL 和 PL/SQL 语句有关信息。
数据字典缓存(Data dictionary cache):数据字典高速缓存也被称为行高速缓存,因为它将数据保存为行而不是保存整个数据块的缓冲区。它是数据库表和视图的只读集合,其中包含有关数据库及其结构和用户的参考信息。
进程结构图
SMON
SMON 是系统监控器(System Monitor)进程。它负责
清理未使用的临时段。
通过将联机重做日志文件中的条目应用与数据文件,为一个失败的实例进行实例恢复。
合并字典管理表空间的连续可用范围。
PMON
PMON 是进程监控器(Process Monitor)进程。它负责检测其他后台进程的终止。如果一台服务器或调度进程异常终止,那么 PMON 负责执行进程恢复。
DBWn
DBWn 是数据库写入程序(database writer)的进程。它负责将脏数据(缓冲区缓存中新增或改动的数据块)写入数据文件。
LGWR
LGWR 是日志写入程序(log writer)的进程。它负责管理联机重做日志缓冲区。当 LGWR 已经成功写入重做信息到重做日志文件后,才可以通过 DBWn 将脏数据写入数据文件。
ARCn
ARCn 是归档程序进程,跟我们前面说到的归档重做日志文件相关。它将重做日志文件备份到一个地方。它的进程数量由初始参数 LOG_ARCHIVE_MAX_PROCESSES
控制。
逻辑存储结构
表空间将逻辑存储从物理存储中抽象出来,在逻辑上,表空间是段的逻辑存储容器,在物理上,表空间将数据存储在一个或多个数据文件或临时文件中。数据库必须具有 SYSTEM 和 SYSAUX 这两个表空间。
SYSTEM 表空间:管理任何其他表空间。它包含数据字典,有关数据库管理信息的表和视图,编译的存储对象(如触发器,过程等)。
SYSAUX 表空间:辅助 SYSTEM 的表空间,减少了 SYSTEM 表空间的负载。了解更多有关 SYSAUX 可以参考 SYSAUX 表空间
了解更多有关表空间信息可参考 表空间
段是为用户对象(例如表或索引),撤消数据或临时数据分配的一组扩展区。
盘区是逻辑上连续的特定数量的数据块,在单个分配中获得,用于存储特定类型的信息。
块是 Oracle 数据库中最小的存储单位。一个数据块对应于磁盘上特定数量的字节。
表空间(Tablespace),段(Segment),盘区(Extent),块(Data block)的关系如下图所示:
连接线表示一对多的关系。
视图
视图(View)是从一个或多个表(这里的表指基本表和视图)导出的表。为了区分视图和表,所以表有时又被称为“基本表”。
对于视图来说,数据库中只保存有视图的定义,而通过视图获得的数据,都来自与它相关的基本表,视图本身是没有数据的。因此,如果我们对视图的数据进行操作,其实也就是对基本表的数据进行操作,而这种操作也是有一定的限制。