第2章 Oracle 体系结构
第二章++Oracle体系结构PPT文档57页

21、静念园林好,人间良可辞。 22、步步寻往迹,有处特依依。 23、望云惭高鸟,临木愧游鱼。 24、结庐在人境,而无车马喧;问君 何能尔 ?心远 地自偏 。 25、人生归有道,衣食固其端。
61、奢侈是舒ห้องสมุดไป่ตู้的,否则就不是奢侈 。——CocoCha nel 62、少而好学,如日出之阳;壮而好学 ,如日 中之光 ;志而 好学, 如炳烛 之光。 ——刘 向 63、三军可夺帅也,匹夫不可夺志也。 ——孔 丘 64、人生就是学校。在那里,与其说好 的教师 是幸福 ,不如 说好的 教师是 不幸。 ——海 贝尔 65、接受挑战,就可以享受胜利的喜悦 。——杰纳勒 尔·乔治·S·巴顿
谢谢!
第2章 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实例启动时,为了保证该实例的正常使 用,系统将为该实例启动一些后台进程。 这些进程是操作数据库的基础,不管有没有用 户连接数据库,这些进程都会被启动。
(参考资料)oracle 体系结构详解

oracle 体系结构详解一、体系结构图oracle实例=SGA区+后台进程oracle服务器=oracle实例+oracle数据库数据库实例启动实质上即为:分配SGA区,启动后台进程Oracle 实例1、是访问Oracle 数据库的一种方式2、通常只开一个且仅开一个数据库3、由内存结构和进程结构组成,即SGA区+后台进程连接Oracle实例:包括建立用户连接和创建会话Oracle数据库是作为整体的数据集,由三类文件组成:Data files, Control files, Redo log files二、物理结构主要由三类文件组成:data files ,control files,redo-log files1.data files:数据文件,存放基本表信息(即表中数据等)、索引信息(系统内建有索引表)、回退信息(主要为数据的rollback)、临时信息(如有orderby 等操作时系统有临时信息)、系统引导信息(如数据字典等)2、control files:控制文件(二进制的)。
存放库物理结构、库名、库创建日期、序列号(存有同步信息);控制文件至少有两个一摸一样的,用做备份用参数Controlfiles=/../../文件名1,/../../文件名2;指定3、redo log files:回退日志文件,存放修改前后的信息,主要用于数据的恢复,一个数据库至少有两个redo log files文件,以便可以循环记录信息注:三类文件都有序列号,必须同步才能使用,且已Control files中的序列号为准,其他的必须与其保持一致除了上面三类文件还有:Parameter file(参数文件),Password file(口令文件),Archived log files(归档文件)等参数文件:有二进制、文本两种,用于设定参数的值。
二进制参数文件可以及时更改,即时生效;文本参数文件需重启口令文件:可用orapwd.exe 建口令文件。
第二章Oracle体系结构

2.表空间的使用
在数据库中使用多个表空间具有如下优势: (1)能够将数据字典与用户数据分离开来,避免 由于字典对象和用户对象保存在同一个数据文件 中而产生的1/0冲突。 (2)能够将回退数据与用户数据分离开来,避免 由于硬盘损坏而导致永久性的数据丢失。 (3)能够将表空间的数据文件分散保存到不同硬 盘上,平均分布物理1/0操作。
(4)LGWR日志文件写进程 该进程是日志缓冲区的管理进程,负责把日志缓冲区中 的日志项写入磁盘上的日志文件中。 (5)ARCH归档进程(archiver process) 该进程把已经填满的在线日志文件拷贝到一个指定的存 储设备上。 (6)RECO恢复进程 该进程是在具有分布式选项时使用的一个进程,主要用 于解决引用分布式事务时所出现的故障。 (7)LCKN封锁进程
2.4.2 进程
进程又称任务,是操作系统中一个极为重要的 概念。一个进程执行一组操作,完成一个特定 的任务。对Oracle数据库管理系统来说,进程由 用户进程、服务器进程和后台进程所组成。 进程与程序的区别在于前者是一个动态概念, 后者是一个静态实体;程序仅仅是指令的有序 集合,而进程则强调执行过程。进程可以动态 地创建,完成任务后即会消亡。
2.2.4 数据库块
数据库块也称逻辑块或Oracle块,它对应 磁盘上一个或多个物理块,它的大小由初 始化参数db_block_size(在文件init.ora中) 决定,典型的大小是2k。
Pckfree和Pctused两个参数用来优化数据 块空间的使用。 PCTFREE : 块 中 保 留 用 于 UPDATE 操作的空间百分比,当数据占用的空间达 到此上限时,新的数据将不能再插入到此 块中; PCTUSED:指定块中数据使用空间 的最低百分比;
Oracle数据库的体系结构经典课件PPT(34张)

file#:存放数据文件的编号。 status:数据文件的状态。 checkpoint_change#:数据文件的同步号,随着系统
的运行自动修改,以维持所有数据文件的同步。
bytes:数据文件的大小。 blocks:数据文件所占用的数据块数。 name:数据文件的名称以及存放路径。
日志文件是数据库系统的最重要的文件之一, 它可以保证数据库安全,是进行数据库备份与 恢复的重要手段。如果日志文件受损,数据库 同样可能会无法正常运行。
Oracle中的日志文件组是循环使用的,当所有 日志文件组的空间都被填满后,系统将重新切 换到第一个日志文件组。发生日志切换时,日 志文件组中已有的日志信息是否被覆盖,取决 于数据库的运行模式。
3.归档重做日志文件
归档重做日志文件用于对写满的日志文件进行复制并保存,具 体功能由归档进程ARCn实现,该进程负责将写满的重做日志 文件复制到归档日志目标中。
4.警告、跟踪日志文件
当一个进程发现了一个内部错误时,它可以将关于错误的信息 存储到它的跟踪文件中。而警告文件则是一种特殊的跟踪文件, 它包含错误事件的说明,而随之产生的跟踪文件则记录该错误 的详细信息。
SQL> COLUMN name FORMAT A50; SQL> SELECT name FROM v$controlfile; NAME ------------------------------------------------ E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.C
Oracle体系结构--基础部分

2)索引段 在使用 CREATE INDEX 语句创建索引时,Oracle为一个索引或一个索引分区创建 索引段。 在Oracle数据库中每个未分区索引都有一个索引段保存索引中索引条目。 对于一个分区索引,每个分区都有一个索引段保存它的数据。
3)临时段 当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析 过的查询语句以及在排序过程中产生的临时数据。 Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。
3、控制文件 用于打开和存取数据库。 是较小的二进制文件,记录了数据库的物理结构,如:数据库名、数据库的数据 文件和日志文件的名字和位置等信息。 名字通常为 Ctr*.ctl 格式,如 CtrlCIMS.ctl。 控制文件中的内容只能够由Oracle本身来修改。 每个数据库必须至少拥有一个控制文件。一个数据库也可有多个控制文件,但是 一个控制文件只能属于一个数据库。
逻辑结构描述了数据库从逻辑上如何来存储数据块中的数据。 包括表空间、段、区、数据块和模式对象。 逻辑结构支配一个数据库如何使用系统的物理空间,模式对象及其之间的关系则描述
关系数据库之间的设计。
一个数据块从逻辑上是由一个或多个表空间组成,表空间是数据块中物理编组的数据 仓库,每个表空间由段构成,段由一组区组成,一个区由连续的数据块组成。
3、后台进程 Oracle的后台进程主要包括: SMON——系统监控进程 ( System Monitor ) PMON——进程监控进程 ( Process monitor ) DBWR——数据库写进程 LGWR——日志文件写进程 ARCH——归档进程 (Archiver process ) RECO——恢复进程 LCKN——封锁进程
ORACLE体系结构18557共32页

6 23.05.2020
上一页
下一页
返回本章首页
第二部分 系统管理 第1章 Oracle体系结构
1.2.1 共享池
1. 库高速缓存(Library Cache) ➢作用:存放最近执行的SQL语句信息,
包括语句文本及其执行计划。 执行计划:SQL语句的内部执行步骤。
作用:存放最近访问的数据块。 组成:由许多小缓冲区(缓冲区尺寸=数据块尺寸)组成。 符号:DB_BLOCK_SIZE 定义标准块的尺寸;
DB_CACHE_SIZE 定义标准数据高速缓存尺寸。 使用非标准块的规则:
必须使用初始化参数DB_Nk_CACHE_SIZE(n为2、4、8、16或32)定义非标准数据高速 缓存。 例:假定参数DB_BLOCK_SIZE的值为4096,则:
上一页
下一页
返回本章首页
第二部分 系统管理 第1章 Oracle体系结构
1.2 系统全局区(SGA)
1.2.1 共享池 1.2.2 数据高速缓存 1.2.3 重做日志缓冲区
5 23.05.2020
Байду номын сангаас上一页
下一页
返回本章首页
第二部分 系统管理 第1章 Oracle体系结构
1.2.1 共享池
共享池(shared pool) ➢作用:存放最近执行的SQL语句和数据字典信息; ➢大小:尺寸由初始化参数SHARED_POOL_SIZE定义。 ➢组成:由库高速缓存、数据字典高速缓存两部分组成。
例:select ename,sal from where empno=7788; 如果在empno列上无索引,则采用全表扫描;
否则采用索引和ROWID定位数据。
第2讲_Oracle的体系结构

Page 9
2.2.3 控制文件(.ctl)
控制文件(control files)是一个较小的二进制文件,在Oracle服务器在启 动期间用来标识物理文件和数据库物理结构。 创建数据库时,创建控制文件。数据库的启动和正常运行都离不开控制文 件。启动数据库时,Oracle从初始化参数文件中获得控制文件的名字及位 置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件的信 息,最后打开数据库。数据库运行时,Oracle会修改控制文件。 三个控制文件内容一样,镜像关系。
– 将执行结果返回用户
2.5.3 后台进程
为所有数据库用户异步完成各种任务
Page 21
服务器进程
后台进程
用户进程
Page 22
2.5.3.1 DBWR进程
数据库写进程。该进程执行将缓冲区写入数据文件,是负责缓冲存储区管 理的一个ORACLE后台进程。 当缓冲区中的一缓冲区被修改,它被标志为“弄脏”,DBWR的主要任务是 将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
实例
用户进程 共享缓冲区 库缓冲区 服务器进程 PGA 数据字典
SGA
数据缓冲区 日志缓冲区 大池
Java池
PMON SMON DBWR LGWR CKPT Others
参数文件 口令文件
数据文件
控制文件
重做日 志文件
归档日志文件
数据库
Page 3
数据库和实例
数据库(Database)及实例(Instance) 数据库:物理操作系统文件或磁盘(disk)的集合。 实例:数据库启动时,系统首先在服务器内存中分配系统全局区 (SGA),构成了Oracle的内存结构,然后启动若干个常驻内存 的操作系统进程,即组成了Oracle的进程结构,内存区域和后台 进程合称为一个Oracle实例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放 到重做日志缓冲区(Redo Log Buffer.)中。 重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被 LGWR后台进程随时写入重做日志文件。
共享SQL池 (Shared SQL Pool)
2)索引段
3)临时段
当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析 过的查询语句以及在排序过程中产生的临时数据。
Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。
4)回退段:回滚段用于存放数据修改之前的值(包括数据修改之前的位臵和值),作用主 要有以下几方面:
3、后台进程 Oracle的后台进程主要包括:
LCKN——封锁进程
Oracle典型后台进程功能
进 程 名 数据库书写进程 DBWR 日志书写进程 LGWR 系统监视进程 SMON 进程监视进程 PMON 检查点进程 CKPT 归档进程 ARCH 队列监视进程 QMON 功 能
PCTFREE:块中保留用于 UPDATE 操作的空间百分比,当数据占用的空 间达到此上限时,新的数据将不能再插入到此块中; PCTUSED:指定块中数据使用空间的最低百分比;
5、 模式对象
Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等。
三、内存结构
相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。
包括库高速缓存、数据字典高速缓存和服务器控制结构。
共享池大小取决于 init.ora 文件参数 Shared_pool_size,以字节为单位 用户必须将该值设得足够大,以确保有足够可用空间来装载和存储PL/SQL 块和 SQL 语句。
将修改过的数据块写回到数据文件 将重做日志记录写回到联机日志文件 执行崩溃恢复和联合自由空间
查看进程是否过早断开,释放任何容纳的锁,并 处理任何其它必要的清除任务
定期检查数据库 将已写满的联机日志文件复制到归档日志文件 管理消息队列
恢复进程 RECO
在分布式数据库中恢复失败的事务
五、数据字典
用户进程
服务器进程
服务器进程处理与应用程序相连的用户进程的请求, 它与用户进程相通讯, 为相连的用户进程的Oracle请求服务。 SMON——系统监控进程 ( System Monitor ) PMON——进程监控进程 ( Process monitor ) DBWR——数据库写进程 LGWR——日志文件写进程 ARCH——归档进程 (Archiver process ) RECO——恢复进程
2、进程
对Oracle数据库管理系统来说,进程由用户进程、服务器进程和后台进程所组成。
进程与程序的区别在于前者是一个动态概念,后者是一个静态实体; 程序仅仅是指令的有序集合,而进程则强调执行过程。 进程可以动态地创建,完成任务后即会消亡。 当用户运行一个应用程序时,系统就为它建立一个用户进程。 用户进程执行的是一个应用程序或 Oracle 工具程序的代码,以完成用户所指定 的任务。 用户进程不是实例。
3、排序区
排序区存在于请求排序的用户进程的内存中,由于排序需要内存空间,Oracle利 用该内存排序数据,这部分空间称为排序区。 该空间的大小为适应排序数据量的大小,可增长,但受初始化参数: Sort_area_sizer所限制。
4、软件代码区:用于存储正在执行的或可以执行的程序代码。
是每个Oracle数据库必须具备部分,安装时自动建立, 存放表空间名称、表空间所含数据文件等管理数据库自身所需信息; 如:数据字典、存储过程、包、函数和触发器定义、系统回滚段、数据库对象定 义,用户过程等。 每个 Oracle 数据库必须至少有个默认表空间。 系统表空间只保存属于数据库自身的相关数据,用户对象和数据保存在非系统表 空间中。
数据字典是 Oracle 数据库的核心组件,对用户是只读类型表和视图组成。 保存着关于数据库系统本身以及其中存储的所有对象的基本信息
第2章 Oracle体系结构
本章内容
一、物理结构 二、逻辑结构 三、内存结构
四、数据库实例与进程
五、数据字典
一、物理结构
Oracle 数据库文件包括 数据文件、日志文件、控制文件、配臵文件。
1、数据文件
用来存储数据库中的全部数据,如数据库表中的数据和索引数据。通常为后缀名 为 .dbf 格式的文件。
系统全局区、软件代码区、程序全局区和排序区。
1、系统全局区(SGA):是实例的主要部分
SGA 是内存结构的主要组成部分,是 Oracle 为一个实例分配的一组共享内存缓
冲区,
保存着 Oracle 系统与所有数据库用户的共享信息,包括数据维护、SQL语句分 析,重做日志管理等。
数据块缓冲区
每个 Oracle 可以有一个或多个数据文件,一个数据文件只能属于一个数据库。 每个数据文件又由若干物理块组成; 一个或多个数据文件组成表空间;
2、 日志文件(重做日志文件)
用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时, 用它对数据库进行恢复。 名字通常为 Log*.dbf 格式。
字典缓冲区
字典缓冲区用于保存数据字典中的行。
数据字典缓冲区也通过最近最少使用(LRU)算法来管理。
大小由数据库内部管理。 字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件 init.ora 中的 Shared_pool_size 参数来设臵。
重做日志缓冲区
事务回滚 事务恢复 读一致性
3、 区
区是由很多连续的数据块组成的数据库存储空间。 缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区。 主要的几个存储参数:
Initial:段建立时分配的第一个区的大小(单位:字节) Next:段内分配的下一个增量区大小(单位:字节) MaxExtents:分配给段的区总数。 MinExtents:建立段时分配的区的总数,也就是段的最小区数量。 PctEncrease:为段分配的每个增量区超过上一个区的百分比。 Initrans:为初试数量的DML事务条目(并发访问数据块中的行)保留的预分配空间 数量。
Java池:
Java池为Java命令提供语法分析 缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同 的资源。 可在SGA中创建多个缓冲池 。
多缓冲池:
2、程序全局区 PGA(Program Global Area,PGA)
是单个Oracle进程使用的内存区域,不属于实例的内存结构。 含有单个进程工作时需要的数据和控制信息,PGA 是非共享的,只有服务进程 本身才能够访问它自己的 PGA 区。
所有Oracle数据库都需要在一个地方保存恢复信息 (Undo),用于存放回滚段 ( Rollback Segment )的表空间称为回滚或简称 RBS。 Oracle 将不完整或临时中止的事务恢复的功能放在其核心功能中;
2)表空间使用,在数据库中使用多个表空间具有如下优势:
能将数据字典与用户数据分,避免因字典对象和用户对象保存在同一个数据文件
3)表空间中对象存储
若表空间只对应一个数据文件,该表空间中所有对象都存储在此数据文件中。 若表空间对应于多个数据文件,可将一个对象的数据存储在该表空间的任意一个 数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中。
2、段
1)数据段
数据段中保存表中记录。 用 CREATE 语句创建表或簇时,Oracle 自动创建数据段。 Oracle 中所有未分区的表都使用一个段来保存数据,而分区的表将为每个分区建 立一个独立数据段。 在使用 CREATE INDEX 语句创建索引时,Oracle为一个索引或一个索引分区创 建索引段。 在Oracle数据库中每个未分区索引都有一个索引段保存索引中索引条目。 对于一个分区索引,每个分区都有一个索引段保存它的数据。
是只读,可安装成共享或非共享。 Oracle系统程序是共享的,多个Oracle用户可存取它,无需在内存有多个副本。 用户程序可以共享也可以不共享。
四、数据库实例与进程
1、Oracle数据库实例
数据库是指物理上的数据库文件或逻辑上的数据库结构。 基于之上管理和控制物理数据库的软件系统,称为数据库管理系统(DBMS)。 数据库实例是指软件系统中用来访问数据库文件集的存储结构以及后台进程的集 合,它是存取和控制数据库的软件机制。 进程又称任务,一个进程执行一组操作,完成一个特定的任务。
临时表空间(Temp TableSpace):
是 Oracle用于存储实例运行过程中产生的所有临时数据,如执行SQL语句产生的 临时表; 类似于数据库白板或草稿纸,记录数据和进行的操作。 可以有多个临时表空间; 无临时表空间将使用 (System TableSpace)
回滚表空间 (RollBack TableSpace)
存放 Oracle 系统最近从数据文件中读取的数据块。 又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。 容量受物理容量限制。 在 Oracle 9i 中,缓存大小可直接由初始化参数 DB_ACHESIZE 指定,该参数可 以直接以 KB 字节或 MB 字节为单位来设臵数据库缓存大小。