ORACLE 培训教程 1 _系统概述
ORACLE系统概述
ORACLE 公司自 86 年推出版本 5 开始,系统具有分布数据库处理功能.88
年推出版本 6,ORACLE RDBMS(V6.0)可带事务处理选项(TPO),提高了事务处
理的速度.1992 年推出了版本 7,在 ORACLE RDBMS 中可带过程数据库选项
(procedural database option) 和 并 行 服 务 器 选 项 ( parallel server
option),称为 ORACLE7 数据库管理系统,它释放了开放的关系型系统的真正
潜力。ORACLE7 的协同开发环境提供了新一代集成的软件生命周期开发环境,
可用以实现高生产率、大型事务处理及客户/服务器结构的应用系统。协同开发
环境具有可移植性,支持多种数据来源、多种图形用户界面及多媒体、多民族
语言、CASE 等协同应用系统。
一、 ORACLE 系统
1. ORACLE 产品结构及组成
ORACLE 系统是由以 RDBMS 为核心的一批软件产品构成,其产品结构轮廓下
图所示:
2. ORACLE 系统特点
ORACLE 公司于 1979 年,首先推出基于 SQL 标准的关系数据库产品,
阿哲 1/23
SQL*PLUS
ORACLE*FORM
S
ORACLE*REPORT SQL*GRAPHIC SQL*CALC
用户编制的程序
程序接口
(SQL 执行程序)
ORACLE 内核
(RDBMS)
操作系统
数据字典
DD
数据库
DB
ORACLE 培训教程 1 _系统概述
可在 100 多种硬件平台上运行(所括微机、工作站、小型机、中型机和大型
机),支持很多种操作系统。用户的 ORACLE 应用可方便地从一种计算机配置
移至另一种计算机配置上。ORACLE 的分布式结构可将数据和应用驻留在多台
计算机上,而相互间的通信是透明的。 1992 年 6 月 ORACLE 公司推出的
ORACLE7 协同服务器数据库,使关系数据库技术迈上了新台阶。根据 IDG
(国际数据集团)1992 年全球 UNIX 数据库市场报告,ORACLE 占市场销售
量 50%。它之所以倍受用户喜爱是因为它有以下突出的特点:
支持大数据库、多用户的高性能的事务处理。ORACLE 支持最大数据
库,其大小可到几百千兆,可充分利用硬件设备。支持大量用户同时在同一数
据上执行各种数据应用,并使数据争用最小,保证数据一致性。系统维护具有
高的性能,ORACLE 每天可连续 24 小时工作,正常的系统操作(后备或个别
计算机系统故障)不会中断数据库的使用。可控制数据库数据的可用性,可在
数据库级或在子数据库级上控制。
ORACLE 遵守数据存取语言、操作系统、用户接口和网络通信协议的
工业标准。所以它是一个开放系统,保护了用户的投资。美国标准化和技术研
究所(NIST)对 ORACLE7 SERVER 进行检验,100%地与 ANSI/ISO SQL89
标准的二级相兼容。
实施安全性控制和完整性控制。ORACLE 为限制各监控数据存取提供
系统可靠的安全性。ORACLE 实施数据完整性,为可接受的数据指定标准。
支持分布式数据库和分布处理。ORACLE 为了充分利用计算机系统和
网络,允许将处理分为数据库服务器和客户应用程序,所有共享的数据管理由
数据库管理系统的计算机处理,而运行数据库应用的工作站集中于解释和显示
数据。通过网络连接的计算机环境,ORACLE 将存放在多台计算机上的数据组
合成一个逻辑数据库,可被全部网络用户存取。分布式系统像集中式数据库一
样具有透明性和数据一致性。
具有可移植性、可兼容性和可连接性。由于 ORACLE 软件可在许多不
同的操作系统上运行,以致 ORACLE 上所开发的应用可移植到任何操作系统,
只需很少修改或不需修改。ORACLE 软件同工业标准相兼容,包括许多工业标
准的操作系统,所开发应用系统可在任何操作系统上运行。可连接性是指
ORALCE 允许不同类型的计算机和操作系统通过网络可共享信息。
二、 ORACLE 数据库系统的体系结构
ORACLE 数据库系统为具有管理 ORACLE 数据库功能的计算机系统。每
一个运行的 ORACLE 数据库与一个 ORACLE 实例(INSTANCE)相联系。一
个 ORACLE 实例为存取和控制一数据库的软件机制。每一次在数据库服务器上
启动一数据库时,称为系统全局区(SYSTEM GLOBAL AREA)的一内存区
( 简称 SGA )被 分 配 , 有 一 个 或 多 个 ORACLE 进 程被启动 。该 SGA 和
ORACLE 进程的结合称为一个 ORACLE 数据库实例。一个实例的 SGA 和进程
为管理数据库数据、为该数据库一个或多个用户服务而工作。
在 ORACLE 系统中,首先是实例启动,然后由实例装配(MOUNT)一数
据库。在松耦合系统中,在具有 ORACLE PARALLEL SERVER 选项时,单个
数据库可被多个实例装配,即多个实例共享同一物理数据库。
阿哲 2/23
ORACLE 培训教程 1 _系统概述
1. ORACLE 实例的进程结构和内存结构
1) 进程结构
进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系
统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储
区。ORACLE 进程的体系结构设计使性能最大。
ORACLE 实例有两种类型:单进程实例和多进程实例。
单进程 ORACLE(又称单用户 ORACLE)是一种数据库系统,一个进程
执行全部 ORACLE 代码。由于 ORACLE 部分和客户应用程序不能分别以进程
执行,所以 ORACLE 的代码和用户的数据库应用是单个进程执行。
在单进程环境下的 ORACLE 实例,仅允许一个用户可存取。例如在 MS-
DOS 上运行 ORACLE 。
多进程 ORACLE 实例( 又 称 多用 户 ORACLE ) 使 用 多个 进 程 来 执行
ORACLE 的不同部分,对于每一个连接的用户都有一个进程。
在多进程系统中,进程分为两类:用户进程和 ORACLE 进程。当一用户
运行一应用程序,如 PRO*C 程序或一个 ORACLE 工具(如 SQL*PLUS),为
用户运行的应用建立一个用户进程。ORACLE 进程又分为两类:服务器进程和
后台进程。服务器进程用于处理连接到该实例的用户进程的请求。当应用和
ORACELE 是在同一台机器上运行,而不再通过网络,一般将用户进程和它相
应的 服务器进程组合成单个的 进程 ,可 降低 系统 开销 。然 而, 当应 用和
ORACLE 运行 在 不 同的 机 器 上时 , 用 户 进 程经过 一 个 分离服 务 器 进程与
ORACLE 通信。它可执行下列任务:
对应用所发出的 SQL 语句进行语法分析和执行。
从磁盘(数据文件)中读入必要的数据块到 SGA 的共享数据库缓冲区
(该块不在缓冲区时)。
将结果返回给应用程序处理。
系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,
称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一
个 ORACLE 实例可以有许多后台进程,但它们不是一直存在。后台进程的名字
为:
DBWR 数据库写入程序
LGWR 日志写入程序
CKPT 检查点
SMON 系统监控
PMON 进程监控
ARCH 归档
RECO 恢复
LCKn 封锁
Dnnn 调度进程
Snnn 服务器
每个后台进程与 ORACLE 数据库的不同部分交互。
下面对后台进程的功能作简单介绍:
DBWR 进程:该进程执行将缓冲区写入数据文件,是负责缓冲存储区管
阿哲 3/23
ORACLE 培训教程 1 _系统概述
理的一个 ORACLE 后台进程。当缓冲区中的一缓冲区被修改,它被标志为“弄
脏”,DBWR 的主要任务是将“弄脏”的缓冲区写入磁盘,使缓冲区保持“干净”。
由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏,未用的缓冲区的数目
减少。当未用的缓冲区下降到很少,以致用户进程要从磁盘读入块到内存存储
区时无法找到未用的缓冲区时,DBWR 将管理缓冲存储区,使用户进程总可得
到未用的缓冲区。
ORACLE 采用 LRU(LEAST RECENTLY USED)算法(最近最少使用算
法)保持内存中的数据块是最近使用的,使 I/O 最小。在下列情况预示 DBWR
要将弄脏的缓冲区写入磁盘:
当一个服务器进程将一缓冲区移入“弄脏”表,该弄脏表达到临界长度
时,该服务进程将通知 DBWR 进行写。该临界长度是为参数 DB-BLOCK-
WRITE-BATCH 的值的一半。
当一个服务器进程在 LRU 表中查找 DB-BLOCK-MAX-SCAN-CNT 缓
冲区时,没有查到未用的缓冲区,它停止查找并通知 DBWR 进行写。
出现超时(每次 3 秒),DBWR 将通知本身。
当出现检查点时,LGWR 将通知 DBWR
在前两种情况下,DBWR 将弄脏表中的块写入磁盘,每次可写的块数由初
始化参数 DB-BLOCK-WRITE-BATCH 所指定。如果弄脏表中没有该参数指定块
数的缓冲区,DBWR 从 LUR 表中查找另外一个弄脏缓冲区。
如果 DBWR 在三秒内未活动,则出现超时。在这种情况下 DBWR 对 LRU
表查找指定数目的缓冲区,将所找到任何弄脏缓冲区写入磁盘。每当出现超时,
DBWR 查找一个新的缓冲区组。每次由 DBWR 查找的缓冲区的数目是为寝化
参数 DB-BLOCK-WRITE-BATCH 的值的二倍。如果数据库空运转,DBWR 最
终将全部缓冲区存储区写入磁盘。
在出现检查点时,LGWR 指定一修改缓冲区表必须写入到磁盘。DBWR
将指定的缓冲区写入磁盘。
在有些平台上,一个实例可有多个 DBWR。在这样的实例中,一些块可写
入一磁盘,另一些块可写入其它磁盘。参数 DB-WRITERS 控制 DBWR 进程个
数。
LGWR 进程:该进程将日志缓冲区写入磁盘上的一个日志文件,它是负
责管理日志缓冲区的一个 ORACLE 后台进程。LGWR 进程将自上次写入磁盘
以来的全部日志项输出,LGWR 输出:
当用户进程提交一事务时写入一个提交记录。
每三秒将日志缓冲区输出。
当日志缓冲区的 1/3 已满时将日志缓冲区输出。
当 DBWR 将修改缓冲区写入磁盘时则将日志缓冲区输出。
LGWR 进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件
被删除或不可用,LGWR 可继续地写入该组的其它文件。
日志缓冲区是一个循环缓冲区。当 LGWR 将日志缓冲区的日志项写入日
志文件后,服务器进程可将新的日志项写入到该日志缓冲区。LGWR 通常写得
很快,可确保日志缓冲区总有空间可写入新的日志项。
注意:有时候当需要更多的日志缓冲区时,LWGR 在一个事务提交前就将
日志项写出,而这些日志项仅当在以后事务提交后才永久化。
ORACLE 使 用 快 速 提 交 机 制 , 当 用 户 发 出 COMMIT 语 句 时 , 一 个
阿哲 4/23
ORACLE 培训教程 1 _系统概述
COMMIT 记录立即放入日志缓冲区,但相应的数据缓冲区改变是被延迟,直到
在更有效时才将它们写入数据文件。当一事务提交时,被赋给一个系统修改号
(SCN),它同事务日志项一起记录在日志中。由于 SCN 记录在日志中,以
致在并行服务器选项配置情况下,恢复操作可以同步。
CKPT 进程:该进程在检查点出现时,对全部数据文件的标题进行修改,
指示该检查点。在通常的情况下,该任务由 LGWR 执行。然而,如果检查点明
显地降低系统性能时,可使 CKPT 进程运行,将原来由 LGWR 进程执行的检查
点的工作分离出来,由 CKPT 进程实现。对于许多应用情况,CKPT 进程是不
必要的。只有当数据库有许多数据文件,LGWR 在检查点时明显地降低性能才
使 CKPT 运行。CKPT 进程不将块写入磁盘,该工作是由 DBWR 完成的。
初始化参数 CHECKPOINT-PROCESS 控制 CKPT 进程的使能或使不能。
缺省时为 FALSE,即为使不能。
SMON 进程:该进程实例启动时执行实例恢复,还负责清理不再使用的
临时段。在具有并行服务器选项的环境下,SMON 对有故障 CPU 或实例进行
实例恢复。SMON 进程有规律地被呼醒,检查是否需要,或者其它进程发现需
要时可以被调用。
PMON 进程:该进程在用户进程出现故障时执行进程恢复,负责清理内
存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态,释放封
锁,将该故障的进程的 ID 从活动进程表中移去。PMON 还周期地检查调度进
程(DISPATCHER)和服务器进程的状态,如果已死,则重新启动(不包括有
意删除的进程)。
PMON 有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被
调用。
RECO 进程:该进程是在具有分布式选项时所使用的一个进程,自动地解
决在分布式事务中的故障。一个结点 RECO 后台进程自动地连接到包含有悬而
未决的分布式事务的其它数据库中,RECO 自动地解决所有的悬而不决的事务。
任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删
去。
当一数据库服务器的 RECO 后台进程试图建立同一远程服务器的通信,如
果远程服务器是不可用或者网络连接不能建立时,RECO 自动地在一个时间间
隔之后再次连接。
RECO 后 台 进 程 仅 当 在 允 许 分 布 式 事 务 的 系 统 中 出 现 , 而 且
DISTRIBUTED – TRANSACTIONS 参数是大于 0。
ARCH 进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当
日志是为 ARCHIVELOG 使用方式、并可自动地归档时 ARCH 进程才存在。
LCKn 进程:是在具有并行服务器选件环境下使用,可多至 10 个进程
(LCK0,LCK1……,LCK9),用于实例间的封锁。
阿哲 5/23