第2章 Oracle数据库的体系结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库是存储数据的多个物理文件的集合 ,它 是静态的、永久的。 数据库实例是用户访问数据库的中间层,是使 用数据库的手段,它为用户访问数据库提供了 必要的内存空间和多个Oracle进程,它是动态 的、临时的。
因此,Oracle实例是由内存空间和Oracle 进程两部分组成。
Oracle实例结构图
1.系统全局区SGA
数据缓存区(database buffer cache) :最近 使用过的数据 。 重做日志缓冲区(redo log buffer) :记录了 用户对数据库执行的操作,被循环使用 。 共享池(shared pool) :包含了库缓存区( library cache)、数据字典缓存区(dictionary cache)、并行执行消息缓冲区(buffers for parallel execution messages),以及用于系 统控制的各种内存结构。
数据文件又可以分为以下几种:
系统数据文件 回滚数据文件 临时数据文件 用户数据文件 系统辅助数据文件 示例数据文件
2.1.2 日志文件
日志文件记录了用户对数据库的修改信息( 如增加、删除、修改),名字通常为 REDO*.LOG格式。
日志文件也叫重做日志文件或重演日志文件 (Redo Log Files)。 日志组是日志文件的逻辑组织单元,每个日志 组中有一个或多个日志文件。 同一个日志组中的多个日志文件具有相同的信 息,它们是镜相关系
用户进程和服务进程之间的对应关系是由 Oracle数据库的工作模式决定的。数据库通 常有两种工作模式:
专用服务器模式 共享服务器模式
3.后台进程(background process)
Oracle实例启动时,为了保证该实例的正常使 用,系统将为该实例启动一些后台进程。 这些进程是操作数据库的基础,不管有没有用 户连接数据库,这些进程都会被启动。
段虽然不是存储空间的分配单位,但系统会为每 一个被存储的方案对象分配一个段。 段(segment)是以盘区为单位获得磁盘空间的 一可以分为以下几种类型:
数据段 索引段 临时段 回滚段 LOB段
2.2.3 盘区
盘区(extent)是逻辑存储结构中的一个重 要概念,因为它是Oracle最小的磁盘空间分 配单元。
2.2.1 表空间
表空间(tablespace)是Oracle数据库中最大 的逻辑存储结构 。 逻辑结构上的表空间与物理结构上的数据文件 是有关联的。这种关联是:
数据库中的一个表空间至少包含一个或多个数据 文件,而一个数据文件只能属于一个表空间。 一个表空间的大小就等于它包含的所有数据文件 大小之和。
常见的后台进程包括:
数据写进程:DBWn ,将数据缓冲区内修改过 的数据(脏数据)写入数据文件。 日志写进程 :LGWR,将重做日志缓冲区内的 日志信息写入磁盘上的日志文件。 检查点进程 :CKPT,负责更新所有控制文件 和数据文件的文件头来记录检查点事件的详细 信息。 系统监控进程 :SMON)负责在数据库实例启 动时进行数据库的恢复操作。
数据块中可以存储表(table)、索引( index)或簇表(clustered data),但其内 部结构都是类似的,如图2-11所示,主要 包括:
数据块头 表目录区 行目录区 可用空间区 行数据区
2.3 数据库实例结构
一个完整的Oracle数据库包括两个部分: 数据库和数据库实例。
在Oracle中,数据库有两种工作模式:
归档日志模式(archivelog):
• 适用于系统投入使用后 • 当日志组写满后,将日志信息保存到归档日志文件 中,然后再循环使用。
非归档日志模式(noarchivelog):
• 适用于开发环境和测试环境中 • 日志组写满后不会归档到归档日志文件中,直接被 新的日志信息覆盖。
数据文件 日志文件 控制文件 初始化参数文件
2.1.1 数据文件
数据文件是Oracle数据库用来存储各种数据 的地方,如表中的记录、索引数据、系统数 据和临时数据等。 一个数据库有一个或多个数据文件,但一个 数据文件只能属于一个数据库。 数据文件中存储了各种系统和用户的数据, 但它和数据库中的表没有一对一的关系。
表空间、数据文件和方案对象的存储结构
表空间
数据文件 数据文件 用户表
用户表 (方案对象)
索引 用户表
索引
新建的数据库,系统自动添加了:
system表空间 sysaux表空间 temp表空间 users表空间 undotbs1表空间
随着数据库中新数据的不断增加,如果数 据库的存储容量不能容纳新数据时,可以 通过以下三种方式增加数据库的容量:
2.服务进程(server process)
Oracle为用户进程创建一个服务进程或分配一个空闲 的服务进程。 服务进程负责在用户进程和Oracle实例之间调度请求 和响应,主要完成:
• 解析与运行应用程序提交的SQL语句; • 数据处理时用到的数据如果不在SGA 中,负责将所需的数 据块从磁盘上的数据文件读入SGA 的数据缓存区; • 以用户进程能理解的形式返回SQL 语句的执行结果。
查看控制文件的信息:
查询数据字典视图v$controlfile OEM工具—>点击“管理”选项卡—>在“存储 ”选项组中点击“控制文件”
2.1.4 参数文件
参数文件中记录着:
数据库名称 控制文件的路径 SGA的内存结构 可选的Oracle特性和后台进程的配置参数等信息。
为表空间创建新的数据文件。 为数据库创建新的表空间。 增大现有数据文件的容量。
以上操作可以使用CREATE TABLESPACE命 令或ALTER TABLESPACE命令完成,也可以 使用OEM工具完成。
2.2.2 段
一个表空间可以被划分为若干个段(segment ),一个段又可以被划分为若干个盘区。
常见的后台进程包括:
进程监控进程: PMON,负责监视用户进程, 当发现某个用户进程失败后,负责释放该用户 进程占用的资源。 归档进程 :ARCn,在发生日志切换时将重做 日志文件中的日志条目复制到指定的归档日志 设备中。 恢复进程 :RECO,是在分布式数据库系统中 自动解决分布式事务错误的后台进程。只有数 据库实例允许分布式事务时才会启动该进程。 调度进程 :Dnnn,是当数据库运行在共享服务 器模式下需要的一个后台进程 。
在逻辑上定义了一组存储单元,以逐层细 分的思想将数据库对象占用的存储空间依 次划分为表空间、段、盘区和数据块。
表空间是最大的逻辑存储单元,一个数据库从 逻辑结构上划分就包括多个表空间; 一个表空间继续划分为多个段; 一个段又被划分为多个盘区,盘区是最小的磁 盘空间分配单元; 一个盘区又被划分为多个数据块,数据块是 Oracle最小的数据读写单元。
查看日志组的相关信息:
在SQL*Plus工具或iSQL*Plus工具中查询数据 字典视图V$LOG 在OEM工具的重做日志组中查看
2.1.3 控制文件
控制文件(Control File)是Oracle数据库 的物理文件之一,是一个很小的二进制文 件,它记录了:
数据库的名称 数据文件和联机日志文件的名称及位置 当前的日志序列号(Log Sequence Number) 表空间等信息
以SYSDBA身份登录到SQL*Plus工具,执 行ARCHIVE LOG LIST命令可以查看数据 库当前的运行模式,如图2-3所示。
执行ALTER DATABASE ARCHIVELOG | NOARCHIVELOG命令修改数据库的日志 模式。具体步骤如下: (1)关闭运行的数据库实例 (2)备份数据库(可选 ) (3)启动数据库实例到mount状态,但不 要打开数据库 (4)修改数据库的日志模式 (5)打开数据库 (6)查看数据库当前的日志模式
2.3.2 内存结构
数据库实例被启动后,系统将分配若干个内存 区域来存储运行时需要的各种信息:
如程序代码、连接的会话信息、进程间共享的通 信信息、常用数据和日志的缓存等。
Oracle 中的基本内存结构包括:
系统全局区(System Global Area,SGA) 程序全局区(Program Global Areas,PGA)
Java 池(Java pool) :用来存储会话中执行 的Java代码和JVM内的数据 。 大型池(large pool) :供一次性分配大量内 存空间时使用。
2.程序全局区PGA
私有 SQL 区 :包含了SQL语句的绑定信息及 运行时的内存结构等数据。 游标及 SQL 区 会话内存 :存储连接数据库用户的当前会话信 息
对于Oracle数据库来说,数据文件就像一个 仓库,重作日志文件就像该仓库的货物进 出账,控制文件就像该仓库的管理中心, 记录着整个数据库的结构。所以,当数据 库的物理结构改变时,Oracle会自动更新控 制文件。
数据库启动时,各个物理文件使用的顺序:
首先从初始化参数文件中获得控制文件的名称及 位置,然后打开控制文件。 再从控制文件中读取数据文件和联机日志文件的 信息及其他相关信息。 最后打开数据库 。
2.3.1 进程结构
进程是操作系统的基本执行单元,它是具 有独立数据处理功能的正在执行的程序, 是一系列操作步的集合,有时也被称为作 业(job)或任务(task)。 Oracle系统的进程包括三种类型:
用户进程 服务进程 后台进程
1.用户进程(user process)
用户在客户端运行一个应用程序(例如 Pro*C 程序)或 Oracle 工具(如OEM或 SQL*Plus) 时,系统将为该用户创建一个用户进程。 用户进程负责与Oracle服务器建立连接和会话 并向服务器发出数据处理请求,得到处理结果 后再输出给用户。 Oracle允许为一个用户同时创建多个会话 。
启动数据库实例时需要读取参数文件中的信息, 因此它是第一个被访问的物理文件。
参数文件分为:
文本参数文件(pfile) 服务器参数文件(spfile)
有以下几点区别:
名称及路径不同 编辑方式不同 修改后的生效时限不同 启动次序spfile优先于pfile
2.2 逻辑存储结构
Oracle 数据库管理与应用
第2章 Oracle数据库的体系结构
本章要点
1 2 3 4
数据库的物理存储结构 数据库的逻辑存储结构 数据库的实例结构 Oracle网络配置
2.1 物理存储结构
Oracle数据库的物理存储结构是从物理组 成的角度分析一个数据库在存储介质上的实 际构成,它是由操作系统组织和管理的,是 Oracle数据库的外部存储结构。 Oracle数据库主要包括4种类型的文件:
数据文件的扩展名是.dbf,主要包括永久数 据文件和临时数据文件。 可以通过以下方式查看:
静态数据字典视图DBA_DATA_FILES和 DBA_TEMP_FILES 动态数据字典视图v$datafile和v$tempfile OEM工具 中的“管理”选项卡—>在“存储” 选项组中点击“数据文件”
当用户创建新表时,Oracle会为此表的数据段 分配一个包含若干数据块的初始盘区。 创建表时可以指定为其数据段分配多少初始空 间、最多包含多少盘区、盘区的增长量等
2.2.4 数据块
数据块是Oracle最小的逻辑存储单元,是 最基本的数据存取单位。Oracle从数据文件 中存取数据时以数据块为单位进行输入输 出操作。 一个数据块包括数据库中多个字节的物理 空间,其默认大小由该数据库的参数文件 中的db_block_size值指定 。
因此,Oracle实例是由内存空间和Oracle 进程两部分组成。
Oracle实例结构图
1.系统全局区SGA
数据缓存区(database buffer cache) :最近 使用过的数据 。 重做日志缓冲区(redo log buffer) :记录了 用户对数据库执行的操作,被循环使用 。 共享池(shared pool) :包含了库缓存区( library cache)、数据字典缓存区(dictionary cache)、并行执行消息缓冲区(buffers for parallel execution messages),以及用于系 统控制的各种内存结构。
数据文件又可以分为以下几种:
系统数据文件 回滚数据文件 临时数据文件 用户数据文件 系统辅助数据文件 示例数据文件
2.1.2 日志文件
日志文件记录了用户对数据库的修改信息( 如增加、删除、修改),名字通常为 REDO*.LOG格式。
日志文件也叫重做日志文件或重演日志文件 (Redo Log Files)。 日志组是日志文件的逻辑组织单元,每个日志 组中有一个或多个日志文件。 同一个日志组中的多个日志文件具有相同的信 息,它们是镜相关系
用户进程和服务进程之间的对应关系是由 Oracle数据库的工作模式决定的。数据库通 常有两种工作模式:
专用服务器模式 共享服务器模式
3.后台进程(background process)
Oracle实例启动时,为了保证该实例的正常使 用,系统将为该实例启动一些后台进程。 这些进程是操作数据库的基础,不管有没有用 户连接数据库,这些进程都会被启动。
段虽然不是存储空间的分配单位,但系统会为每 一个被存储的方案对象分配一个段。 段(segment)是以盘区为单位获得磁盘空间的 一可以分为以下几种类型:
数据段 索引段 临时段 回滚段 LOB段
2.2.3 盘区
盘区(extent)是逻辑存储结构中的一个重 要概念,因为它是Oracle最小的磁盘空间分 配单元。
2.2.1 表空间
表空间(tablespace)是Oracle数据库中最大 的逻辑存储结构 。 逻辑结构上的表空间与物理结构上的数据文件 是有关联的。这种关联是:
数据库中的一个表空间至少包含一个或多个数据 文件,而一个数据文件只能属于一个表空间。 一个表空间的大小就等于它包含的所有数据文件 大小之和。
常见的后台进程包括:
数据写进程:DBWn ,将数据缓冲区内修改过 的数据(脏数据)写入数据文件。 日志写进程 :LGWR,将重做日志缓冲区内的 日志信息写入磁盘上的日志文件。 检查点进程 :CKPT,负责更新所有控制文件 和数据文件的文件头来记录检查点事件的详细 信息。 系统监控进程 :SMON)负责在数据库实例启 动时进行数据库的恢复操作。
数据块中可以存储表(table)、索引( index)或簇表(clustered data),但其内 部结构都是类似的,如图2-11所示,主要 包括:
数据块头 表目录区 行目录区 可用空间区 行数据区
2.3 数据库实例结构
一个完整的Oracle数据库包括两个部分: 数据库和数据库实例。
在Oracle中,数据库有两种工作模式:
归档日志模式(archivelog):
• 适用于系统投入使用后 • 当日志组写满后,将日志信息保存到归档日志文件 中,然后再循环使用。
非归档日志模式(noarchivelog):
• 适用于开发环境和测试环境中 • 日志组写满后不会归档到归档日志文件中,直接被 新的日志信息覆盖。
数据文件 日志文件 控制文件 初始化参数文件
2.1.1 数据文件
数据文件是Oracle数据库用来存储各种数据 的地方,如表中的记录、索引数据、系统数 据和临时数据等。 一个数据库有一个或多个数据文件,但一个 数据文件只能属于一个数据库。 数据文件中存储了各种系统和用户的数据, 但它和数据库中的表没有一对一的关系。
表空间、数据文件和方案对象的存储结构
表空间
数据文件 数据文件 用户表
用户表 (方案对象)
索引 用户表
索引
新建的数据库,系统自动添加了:
system表空间 sysaux表空间 temp表空间 users表空间 undotbs1表空间
随着数据库中新数据的不断增加,如果数 据库的存储容量不能容纳新数据时,可以 通过以下三种方式增加数据库的容量:
2.服务进程(server process)
Oracle为用户进程创建一个服务进程或分配一个空闲 的服务进程。 服务进程负责在用户进程和Oracle实例之间调度请求 和响应,主要完成:
• 解析与运行应用程序提交的SQL语句; • 数据处理时用到的数据如果不在SGA 中,负责将所需的数 据块从磁盘上的数据文件读入SGA 的数据缓存区; • 以用户进程能理解的形式返回SQL 语句的执行结果。
查看控制文件的信息:
查询数据字典视图v$controlfile OEM工具—>点击“管理”选项卡—>在“存储 ”选项组中点击“控制文件”
2.1.4 参数文件
参数文件中记录着:
数据库名称 控制文件的路径 SGA的内存结构 可选的Oracle特性和后台进程的配置参数等信息。
为表空间创建新的数据文件。 为数据库创建新的表空间。 增大现有数据文件的容量。
以上操作可以使用CREATE TABLESPACE命 令或ALTER TABLESPACE命令完成,也可以 使用OEM工具完成。
2.2.2 段
一个表空间可以被划分为若干个段(segment ),一个段又可以被划分为若干个盘区。
常见的后台进程包括:
进程监控进程: PMON,负责监视用户进程, 当发现某个用户进程失败后,负责释放该用户 进程占用的资源。 归档进程 :ARCn,在发生日志切换时将重做 日志文件中的日志条目复制到指定的归档日志 设备中。 恢复进程 :RECO,是在分布式数据库系统中 自动解决分布式事务错误的后台进程。只有数 据库实例允许分布式事务时才会启动该进程。 调度进程 :Dnnn,是当数据库运行在共享服务 器模式下需要的一个后台进程 。
在逻辑上定义了一组存储单元,以逐层细 分的思想将数据库对象占用的存储空间依 次划分为表空间、段、盘区和数据块。
表空间是最大的逻辑存储单元,一个数据库从 逻辑结构上划分就包括多个表空间; 一个表空间继续划分为多个段; 一个段又被划分为多个盘区,盘区是最小的磁 盘空间分配单元; 一个盘区又被划分为多个数据块,数据块是 Oracle最小的数据读写单元。
查看日志组的相关信息:
在SQL*Plus工具或iSQL*Plus工具中查询数据 字典视图V$LOG 在OEM工具的重做日志组中查看
2.1.3 控制文件
控制文件(Control File)是Oracle数据库 的物理文件之一,是一个很小的二进制文 件,它记录了:
数据库的名称 数据文件和联机日志文件的名称及位置 当前的日志序列号(Log Sequence Number) 表空间等信息
以SYSDBA身份登录到SQL*Plus工具,执 行ARCHIVE LOG LIST命令可以查看数据 库当前的运行模式,如图2-3所示。
执行ALTER DATABASE ARCHIVELOG | NOARCHIVELOG命令修改数据库的日志 模式。具体步骤如下: (1)关闭运行的数据库实例 (2)备份数据库(可选 ) (3)启动数据库实例到mount状态,但不 要打开数据库 (4)修改数据库的日志模式 (5)打开数据库 (6)查看数据库当前的日志模式
2.3.2 内存结构
数据库实例被启动后,系统将分配若干个内存 区域来存储运行时需要的各种信息:
如程序代码、连接的会话信息、进程间共享的通 信信息、常用数据和日志的缓存等。
Oracle 中的基本内存结构包括:
系统全局区(System Global Area,SGA) 程序全局区(Program Global Areas,PGA)
Java 池(Java pool) :用来存储会话中执行 的Java代码和JVM内的数据 。 大型池(large pool) :供一次性分配大量内 存空间时使用。
2.程序全局区PGA
私有 SQL 区 :包含了SQL语句的绑定信息及 运行时的内存结构等数据。 游标及 SQL 区 会话内存 :存储连接数据库用户的当前会话信 息
对于Oracle数据库来说,数据文件就像一个 仓库,重作日志文件就像该仓库的货物进 出账,控制文件就像该仓库的管理中心, 记录着整个数据库的结构。所以,当数据 库的物理结构改变时,Oracle会自动更新控 制文件。
数据库启动时,各个物理文件使用的顺序:
首先从初始化参数文件中获得控制文件的名称及 位置,然后打开控制文件。 再从控制文件中读取数据文件和联机日志文件的 信息及其他相关信息。 最后打开数据库 。
2.3.1 进程结构
进程是操作系统的基本执行单元,它是具 有独立数据处理功能的正在执行的程序, 是一系列操作步的集合,有时也被称为作 业(job)或任务(task)。 Oracle系统的进程包括三种类型:
用户进程 服务进程 后台进程
1.用户进程(user process)
用户在客户端运行一个应用程序(例如 Pro*C 程序)或 Oracle 工具(如OEM或 SQL*Plus) 时,系统将为该用户创建一个用户进程。 用户进程负责与Oracle服务器建立连接和会话 并向服务器发出数据处理请求,得到处理结果 后再输出给用户。 Oracle允许为一个用户同时创建多个会话 。
启动数据库实例时需要读取参数文件中的信息, 因此它是第一个被访问的物理文件。
参数文件分为:
文本参数文件(pfile) 服务器参数文件(spfile)
有以下几点区别:
名称及路径不同 编辑方式不同 修改后的生效时限不同 启动次序spfile优先于pfile
2.2 逻辑存储结构
Oracle 数据库管理与应用
第2章 Oracle数据库的体系结构
本章要点
1 2 3 4
数据库的物理存储结构 数据库的逻辑存储结构 数据库的实例结构 Oracle网络配置
2.1 物理存储结构
Oracle数据库的物理存储结构是从物理组 成的角度分析一个数据库在存储介质上的实 际构成,它是由操作系统组织和管理的,是 Oracle数据库的外部存储结构。 Oracle数据库主要包括4种类型的文件:
数据文件的扩展名是.dbf,主要包括永久数 据文件和临时数据文件。 可以通过以下方式查看:
静态数据字典视图DBA_DATA_FILES和 DBA_TEMP_FILES 动态数据字典视图v$datafile和v$tempfile OEM工具 中的“管理”选项卡—>在“存储” 选项组中点击“数据文件”
当用户创建新表时,Oracle会为此表的数据段 分配一个包含若干数据块的初始盘区。 创建表时可以指定为其数据段分配多少初始空 间、最多包含多少盘区、盘区的增长量等
2.2.4 数据块
数据块是Oracle最小的逻辑存储单元,是 最基本的数据存取单位。Oracle从数据文件 中存取数据时以数据块为单位进行输入输 出操作。 一个数据块包括数据库中多个字节的物理 空间,其默认大小由该数据库的参数文件 中的db_block_size值指定 。