Oracle实例的进程结构
详解Oracle架构、原理、进程
详解Oracle架构、原理、进程⾸先看张图:对于⼀个数据库系统来说,假设这个系统没有运⾏,我们所能看到的和这个数据库相关的⽆⾮就是⼏个基于操作系统的物理⽂件,这是从静态的⾓度来看,如果从动态的⾓度来看呢,也就是说这个数据库系统运⾏起来了,能够对外提供服务了,那就意外着数据库系统启动了⾃⼰的⼀个实例,综合以上2个⾓度,Oracle如何定义上述描述呢?我们来引⼊第⼀个概念,Oracle服务器,所谓Oracle服务器是⼀个数据库管理系统,它包括⼀个Oracle实例(动态)和⼀个Oracle数据库(静态)。
Oracle实例是⼀个运⾏的概念(如操作系统的进程),提供了⼀种访问,Oracle数据库的⽅式,始终打开⼀个,并且只能打开⼀个Oracle数据库,Oracle实例有SGA和⼀些后台服务进程组成,在后台服务进程当中,DBWn PMON CKPT LGWR SMON是必备的后台进程,⽽ad queue、rac、shared server、ad replication则是可选的,之所以可选,要们是因为离开它Oracle也能正常运⾏,要么是⼀些⾼级的功能才可以⽤得到。
Oracle数据库是⼀个被统⼀处理的的数据的集合,从物理⾓度来看包括三类⽂件数据⽂件,控制⽂件,重做⽇志⽂件。
从逻辑⾓度来看,Oracle数据库⾄少包含⼀个表空间,表空间⾄少包含⼀个段,段由区做成,区有块组成。
需要注意的是表空间可以包含若⼲个数据⽂件,段可以跨同⼀个表空间的多个数据⽂件,区只能在同⼀个数据⽂件内。
Oracle还设计了其他的关键⽂件⽤来为整个系统服务,如配置⽂件、密码⽂件、归档⽇志⽂件,还有还有⽤户进程和服务进程,现在可以简单理解下执⾏SQL语句就要⽤到这2个进程。
SGA SHARE POOL(共享池)⽤如下命令可以调整ALTER SYSTEM SETSHARED_POOL_SIZE=64MLIBRARY CACHE(库⾼速缓存)1存储最近使⽤的SQL和PL/SQL语句信息2包括SHARED SQL和SHARED PL/SQL3⽤LRU算法管理4⼤⼩由SHARE POOL⼤⼩决定DATA DICTIONARY CACHE(数据字典⾼速缓存)1数据库中最近使⽤的定义的集合2包含数据库⽂件,表,索引,列,⽤户,权限和其他的数据库对象相关信息3在语法分析阶段,服务器进程会在数据字典中查找⽤于对象解析和验证访问的信息4将数据字典信息⾼速缓存到内存中,可缩短查询和DML的响应时间5⼤⼩由共享池的⼤⼩决定DATABASE BUFFERCACHE(数据缓冲区⾼速缓存)1存储已从数据⽂件检索到的数据的复本2⼤幅提⾼读取和更新数据的性能3使⽤LRU算法管理4主块的⼤⼩由DB_BLOCK_SIZE确定REDO LOG BUFFER(重做⽇志缓冲区)1记录对数据库数据块作的全部更改2主要⽤来恢复3其中记录的更改被称作重做条⽬4重做条⽬包含⽤于重新构建或重做更改的信息5⼤⼩由LOG_BUFFER定义LARGE POOL(⼤型池)1 SGA可选的内存区2分担了共享池的⼀部分⼯作3⽤于共享服务器的UGA4⽤于I/O服务器进程5备份和恢复操作或RMAN6并⾏执⾏消息缓冲区(前提PARALLEL_POOL_SIZE=TRUE)7不使⽤LRU列表8⼤⼩由LARGE_POOL_SIZE确定JAVA POOL(JAVA池)1存储JAVA命令服务分析要求2安装和使⽤JAVA时必须的3⼤⼩有JAVA_POOL_SIZE确定PRIVATE SQL AREA(专⽤SQL区)专⽤SQL 区的位置取决于为会PERSISTEN AREA(永久区)包含绑定信息,并且只在关闭游标时释放RUNTIME AREAPGA 话建⽴的连接类型。
04-1 Oracle进程结构
字典缓存
为提高效率,缓存常使用的数据字典信息。如账户信息、数据库结构信息等。
15
大型池
大型池是一个可选的内存结构。提供大量内存。 适合于下列操作:
进行数据库备份或恢复操作; 执行具有大量排序操作的SQL语句; 执行并行数据库操作。
大型池没有LRU列表
16
Java池
用于为JVM中的Java代码和数据提供内存服务。
23
用户进程
用户进程的建立
当用户执行一个Oracle应用程序,如Pro*C程序,或者启动 一个Oracle工具时,如SQL*PLUS,系统将创建一个用户进 程来执行。
连接和会话
连接:是一个用户进程与数据库实例间的通信路径。通过操 作系统平台中的进程间通信机制或网络连接实现。 会话:是一个用户到数据库的特定连接。会话在用户连接到 实例过程中始终存在,直到断开连接或中止应用程序。 共享服务器模式,多个会话将共享一个服务进程。 专用服务器模式,每个会话将独占一个服务进程。
24
Oracle 进程
服务进程
服务进程是由Oracle自身创建的,用于处理连接到实例的用户进程的请求。 用户进程必须通过服务进程才能访问数据库。 服务进程分两种:专用服务进程、共享服务进程。 服务进程的主要任务:
解析并执行用户进程提交的SQL语句 在SGA的数据库缓存中搜索用户进程访问的数据,如果没有,则负责从磁盘中读入。 将结果返回给用户。
Oracle内部代码
Oracle内部代码
SGA
专用服务器模式
4
用户程 序代码
调度进程 共享服务器模式 Oracle内 部代码
SGA
5
2 实例及其内存结构
实例 Oracle数据库服务器由一个Oracle数据库和一个Oracle实例构成。 数据库启动后,将会为其分配一个系统全局区,并启动若干的后台 进程。 所有的后台进程以及内存结构的总和成一个Oracle实例。 用户对数据库的访问是通过与实例的交互实现的,实例在数据库和 用户间充当了中介角色。 每个数据库至少对应一个实例。 实例组成 实例的内存结构:系统全局区(SGA)和程序全局区(PGA) 实例的进程结构:若干后台进程和服务进程组成,共享服务器下还 包括调度进程。
(参考资料)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 建口令文件。
04 Oracle服务器-进程结构
• 用户进程 User process • Oracle进程:Oracle进程在创建实例时由Oracle产生,执行
的是Oracle自身的代码,用于完成特定的服务功能。
– 服务进程 Server process
– 后台进程 Background process
DBWn DWW0 LGWR
CKPT
件的任务交给DBWR进 程完成
Data files
Control files
Redo log files
成都信息工程学院 软件工程学院
1-12
Oracle服务器—Oracle体系结构
归档进程 Archiver (ARCn)
该进程将已填满的在线日志文件拷贝到指定的存储设备。
需要注意的是:在单处理器的服务器下,配置额外的 DBWn无法发挥作用。
Database
成都信息工程学院 软件工程学院
1-8
Oracle服务器—Oracle体系结构
日志写进程 Log Writer (LGWR)
Instance SGA
Redo log buffer
该进程将日志缓冲区写入磁盘上的一 个日志文件,它是负责管理日志缓冲区的 一个ORACLE后台进程。 LGWR的启动时机为:
Database
日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的 日志项写入日志文件后,服务器进程可将新的日志项写 入到该日志缓冲区。LGWR 通常写得很快,可确保日志缓 冲区总有空间可写入新的日志项。
成都信息工程学院 软件工程学院
1-9
Oracle服务器—Oracle体系结构
系统监控进程 System Monitor (SMON)
第四章Orcle 体系结构
第四章Oracle 体系结构ORACLE数据库体系结构决定了oracle如何使用网络、磁盘和内存。
包括实例(instance),文件(file)和进程(process不包括后台进程)三部分。
实例:每一个运行的ORACLE数据库与一个ORACLE实例(INSTANCE)相联系。
每一次在数据库服务器上启动一数据库时,称为系统全局区(SYSTEM GLOBAL AREA)的一内存区(简称SGA)被分配,有一个或多个ORACLE进程被启动。
该SGA 和 ORACLE进程的结合称为一个ORACLE数据库实例。
一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。
在ORACLE系统中,首先是实例启动,然后由实例装配(MOUNT)一数据库。
在松耦合系统中,在具有ORACLE PARALLEL SERVER 选项时,单个数据库可被多个实例装配,即多个实例共享同一物理数据库。
Oracle 体系结构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 结构及结构图
Oracle 结构图Oracle数据库由两个实体组成(1)实例(2)数据库实例实例由存储结构和进程组成,短暂存在于RAM和CPU;因此实例的生存时间其在内存的时间,我们可以启动和停止实例。
一个Oracle实例由一块被称为系统全局区SGA的共享内存以及若干进程组成。
系统全局区(SGA):在实例启动时分配,是Oracle实例的基本组件SGA也称作共享全局区,用于存储数据库进程共享的数据库信息。
它包含有关Oracle服务器的数据和控制信息,在Oracle服务器所在计算机的虚拟内存中分配。
程序全局区(PGA):在服务器进程启动时分配,并在终止进程时回收它包含有关单个服务器进程或单个后台进程的数据和控制信息内存结构(其SGA中三个必备元素):共享池(shared pool):用于存储①最近执行的SQL语句②最近使用的数据定义数据库高速缓冲(Data buffer cache):存储已从数据文件中检索到的数据块的副本重做日志缓冲区(Redo buffer cache):记录对数据库数据块所做的全部更改,主要用于恢复还有可选的是:流池(Streams pool):用于缓存流进程在数据库间移动/复制数据时使用的队列消息大池(Large pool):用于①共享服务器的会话内存②I/O服务器进程③备份和恢复操作或RMAN④并行执行消息缓冲区Java池(Java pool):存储Java命令的服务分析要求后台进程数据写进程(DBWn):负责将更改的数据从数据库缓冲区高速缓存写入数据文件日志写进程(LGWR):将重做日志文件缓冲区的更改写入在线重做日志文件系统监控进程(SMON):检查数据库的一致性,如有必要还会在数据库打开启动时数据库的恢复进程监控进程(PMON):负责在一个oracle进程失败时清理资源检查点进程(CKPT):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库信息归档进程:在每次日志切换时把已满的日志组进行备份和归档服务进程:用户进程服务用户进程(不属于后台进程):在客户端,负责将用户的SQL语句传递给服务进程组成,并从服务器端拿回查询数据用户连接到Oracle实例包括:(1)建立用户连接(2)创建会话连接是用户进程和Oracle服务器之间的通信路径会话是用户与Oracle服务器的一种特定连接数据库数据库分为物理结构和逻辑结构。
oracle数据库的进程结构
三、进程结构进程结构包括用户进程和oracle进程两类,而oracle进程中又分为服务器进程和后台进程,每个系统进程的大部分操作都是相互独立的,互不干扰。
(一)用户进程用户进程是当用户连接数据库执行一个应用程序时创建的,用来完成用户所制定的任务。
在oracle数据库中有两个与用户进程相关的概念:连接与会话。
连接是指用户进程与数据库实例之间的一条通信路径。
该路径由硬件线路、网络协议和操作系统进程通信机制构成。
会话是指用户到数据库的指定连接。
在用户连接数据库的过程中,会话始终存在,知道用户断开连接户终止应用程序为止。
而且会话是通过连接实现的,同一个用户可以创建多个连接来实现多个会话。
(二)服务器进程服务器进程由oracle自身创建,用于处理连接到数据库实例的用户进程所提出的请求。
在应用程序和Oracle运行在一台机器的情况下,可以将用户进程和对应的服务器进程合并来降低系统开销。
但是,当应用程序和Oracle在不同的计算机上运行时,用户进程总是通过不同的服务器进程连接Oracle。
服务器进程主要完成以下任务。
1、解析并执行用户提交的sql语句和pl/sql语句。
2、在SAG的高速缓冲区中搜索用户进程所需要访问的数据,如果数据不在缓冲区中,则需要从硬盘数据文件中读取所需的数据,再将他们复制到缓冲区中。
3、将查询或执行后的结果数据返回给用户进程。
用户进程服务器进程建立连接oracle服务器创建会话数据库访问示意图图1 用户进程与数据库进程的联系(三)后台进程为了保证oracle 数据库在任意一个时刻都可以处理多用户的并发请求,进行复杂的数据操作,而且还要优化系统性能,oracle 数据库启用了一些相互独立的附加进程,完成一类指定的工作,称之为后台进程。
服务器进程在执行用户进程请求时,会调用后台进程来实现对数据库的操作。
后台进程主要完成以下任务:(1)在内存与磁盘之间进行I/O 操作(2)见识各个服务器的进程状态(3)协调各个服务器进程的任务(4)维护系统性能和可靠性 SGA 服务器进程用户进程LGWRPMONSMONARCnCKPTDBWRn用户PGA 数据库进程图2 数据库进程与内存的联系后台进程又分为必备进程和可选进程。
oracle模式的概念及进程的概念
1.模式的概念:2.模式是一系列逻辑数据结构或对象的集合。
一个模式只能够被一个数据用户所拥有,并且模式的名称与这个用户的名称相同。
3.从数据库理论的角度看,模式是数据库中存储的数据的一个逻辑表示或描述,是一系列数据结构和数据对象的集合(既可以是全局逻辑描述也可是局部逻辑描述)。
调度进程:DDN它是位于用户进程和共享进程之间的关键进程,负责将请求队列中的用户进程分配给空闲的服务进程处理,并将处理后的结果返回给用户进程。
在一个实例中可以同时运行同时多个调度进程,但是至少要为Oracle数据库所用的每种网络协议建立一个调度进程。
在共享服务器操作模式下,由监听程序来接受用户端传来的用户进程请求,然后将用户进程请求交给合适的调度进程处理。
如果监听程序无法找到一个合适的调度进程,它将启动一个服务进程来为用户进程提供服务。
这个专用服务进程并不属于实例,而是oracle网络结构中的一个进程。
服务进程:在共享服务器操作模式下,每个服务进程能够为任何一个用户进程提供服务,而不是固定地为一个用户进程提供服务。
共享服务器进程的PGA区并不包括任何与用户相关的数据,因为这些数据所有的服务进程都将使用到。
在共享服务进程的PGA区中,只包含与共享服务进程本身相关的私有SQL工作区部分,其他与会话相关的私有sql工作区部分都保存在SGA区中,这样所有的服务进程都可以访问任何一个会话的信息。
.共享服务器操作模式下处理用户进程的过程:1。
用户通过使用Oracle工具或执行应用程序在客户端创建一个用户进程,该用户进程将尝试连接到一个数据库实例。
2。
客户端计算机通过网络与数据库服务器建立连接。
位于数据库中的Oracle 监听程序探测到用户进程请求后,首先验证用户进程提供的用户和口令,验证通过后将该用户进程分配给一个调度进程。
3。
当某个共享服务进程空闲时,它从请求队列中取出一条处理后的SQL语句。
4。
共享服务器进程对这条SQL语句进行解析和执行,最后得到它所请求的数据。
Oracle数据库进程之服务器进程详解
Oracle实例主要有3 类进程:(1)服务器进程(serverprocess):这些进程根据客户的请求来完成工作。
我们已经对专用服务器和共享服务器有了一定的了解。
它们就是服务器进程。
(2)后台进程(backgroundprocess):这些进程随数据库而启动,用于完成各种维护任务,如将块写至磁盘、维护在线重做日志、清理异常中止的进程等。
(3)从属进程(slaveprocess):这些进程类似于后台进程,不过它们要代表后台进程或服务器进程完成一些额外的工作。
在某些操作系统(如Windows)上,Oracle使用线程实现,所以在这种操作系统上,就要把我们所说的“进程”理解为“线程”的同义词。
“进程”一词既表示进程,也涵盖线程。
如果你使用的是一个多进程的Oracle实现,比如说UNIX 上的Oracle 实现,“进程”就很贴切。
如果你使用的是单进程的Oracle 实现,如Windows上的Oracle 实现,“进程”实际是指“Oracle 进程中的线程”。
所以,举例来说,当我谈到DBWn 进程时,在Windows 上就对应为Oracle 进程中的DBWn 线程服务器进程服务器进程就是代表客户会话完成工作的进程。
应用向数据库发送的SQL 语句最后就要由这些进程接收并执行。
(1)专用服务器(dedicatedserver)连接,采用专用服务器连接时,会在服务器上得到针对这个连接的一个专用进程。
数据库连接与服务器上的一个进程或线程之间存在一对一的映射。
(2)共享服务器(sharedserver)连接,采用共享服务器连接时,多个会话可以共享一个服务器进程池,其中的进程由Oracle 实例生成和管理。
你所连接的是一个数据库调度器(dispatcher),而不是特意为连接创建的一个专用服务器进程。
注意连接和会话之间的区别:(1)连接(connection)就是客户进程与Oracle 实例之间的一条物理路径(例如,客户与实例之间的一个网络连接)。
Oracle数据库的实例构成分析
Oracle数据库的实例构成分析Oracle数据库是世界上最流行的商业数据库之一,它通过实例来处理对数据库的访问请求。
本文将从实例的构成方面来分析Oracle数据库。
Oracle数据库的实例由三个主要组成部分组成:SGA、进程和后台进程。
下面我们来详细了解这些组成部分。
1. SGASGA(System Global Area)是Oracle数据库的主要内存区域,它存储了所有的共享数据结构和缓冲区。
SGA的主要组成部分包括:(1)共享池(Shared Pool):存储共享SQL和PL/SQL区域,如共享SQL区域(共享SQL区域是指所有用户可以共享的SQL和PL/SQL区域,包括解析后的SQL和PL/SQL语句、程序包和函数代码、游标和共享池状态信息等)、共享PL/SQL区域等。
(2)缓冲区高速缓存(Buffer Cache):存储数据块的高速缓存区域,可以缓存表空间中的所有表和索引数据块。
(3)字典高速缓存(Dictionary Cache):存储数据库元数据(如表、视图、列、触发器、存储过程等)的高速缓存区域。
(4)日志缓冲区(Log Buffer):用于存储Redo对象,以保证事务的持久性。
2. 进程进程是Oracle数据库实例的关键部分,它们是处理与客户端连接的请求的主要方式。
Oracle数据库实例的进程包括:(1)服务器进程(Server Process):用于处理客户端连接请求的主要进程,每个用户连接到数据库实例时将启动一个服务器进程。
(2)后台进程(Background Process):用于执行非事务性任务的进程。
例如,LGWR(Log Writer)进程用于将Redo对象写入磁盘,CKPT(Checkpoint)进程用于检查点处理。
3. 后台进程后台进程是一种特殊的进程,它们是为了处理一些非事务性任务而运行的系统进程,主要包括:(1)DBWn(Database Writer):用于将数据块从缓存写回到磁盘。
第九章 进程结构(Oracle概念中译本)
第九章进程结构9、进程结构这一章论述了Oracle数据库系统的进程和Oracle系统的可用的不同配置。
这一章包含下列主题:◆ 进程介绍◆ 用户进程概述◆ Oracle进程概述◆ 共享服务器架构◆ 专用服务器配置◆ 程序接口进程介绍所有连接Oracle的用户都运行两个模块的代码来访问一个Oracle数据库实例:◆ 应用程序或Oracle工具:数据库用户可以使用数据库应用程序(例如预编译程序)或者Oracle工具(如SQL Plus),这些工具将SQL发布给Oracle数据库。
◆ Oracle数据库服务代码:每个用户后面都有Oracle数据库代码执行,它负责解析和处理应用程序的SQL语句。
这些代码模块通过进程运行。
一个进程是“线程控制器”或者操作系统中的可以运行一系列步骤的机制。
(某些操作系统使用job或者task这种概念)一个进程通常在它自己的私有内存空间运行。
多进程Oracle系统多进程Oracle(也叫做多用户Oracle)使用服务器进程来运行Oracle代码的不同部分,使用额外的进程为用户服务(每个连接用户对应一个进程或者多个用户共享一个或多个进程)。
大多数数据库系统都是多用户的,因为一个数据库的一个主要优点就是同时为多个用户管理数据。
Oracle实例的每个进程执行特定的工作。
通过将Oracle和数据库应用程序的工作分成多个进程,多用户或者多个应用程序可以同时连接一个数据库实例,而系统保持优秀的性能。
进程类型一个Oracle系统的进程可以分为两个主要的组:◆ 用户进程运行应用程序或者Oracle工具代码◆ Oracle进程运行Oracle数据库服务代码。
它们包括服务器进程和后台进程。
进程结构针对不同的Oracle配置、不同的操作系统和Oracle附件的选择都会有所不同。
连接用户的代码可以配置为共享服务器或者专用服务器。
在专用服务器情况下,对每个用户来说,数据库应用程序运行的进程(用户进程)和Oracle数据库服务器代码运行的进程(专用服务器进程)不同。
Oracle实例的进程结构
Oracle实例的进程结构Oracle 实例的进程结构进程是操作系统中一个独立的可以调度的活动,用于完成指定的任务。
进程与程序的区别在于前者是一个动态概念,后者是一个静态实体。
程序仅仅是指令的有序集合,而进程则强调执行过程。
进程可以动态地创建,当完成任务后即会消亡。
在Oracle 系统工作过程中,主要涉及到如下3类进程:● 用户进程在用户连接数据库时会创建一个用户进程。
用户进程执行的是一个应用程序或Oracle 工具程序的代码,以完成用户指定的任务。
用户进程不是实例的组成部分。
● 服务器进程这些进程根据客户的请求来完成工作。
● 后台进程这些进程随数据库而启动,用于完成各种维护任务,如将数据块写至磁盘进程DBWR 、维护在线重做日志进程LGWR 、清理异常中止的进程等。
图2-6显示了服务器进程、用户进程和后台进程之间的关系。
共享池数据缓冲区日志缓冲区SGAData Data Data Data Data Data Data 数据文件日志文件组DBWRARCH 磁盘或磁带CKPT 服务器进程LGWR 用户进程PMON LCKn SMON RECO图2-6 服务器进程、用户进程和后台进程之间的关系1 用户进程当用户执行一个Oracle 应用程序时,或者启动一个Oracle 工具时(如SQL*Plus ),Oracle 将创建一个用户进程来执行相应的用户任务。
与用户进程相关的有两个概念:“连接”和“会话”。
连接是一个用户进程与数据库实例之间的一条通信路径,这条通信路径通过操作系统平台中的进程间通信机制或网络连接来实现。
会话则是一个用户到数据库的指定连接。
例如当一个用户启动SQL*Plus ,并输入正确的用户名和密码连接到一个数据库库后,就为该用户创建了一个会话。
会话在用户连接到实例的过程中始终存在,直到用户断开连接或终止应用程序为止。
可以看出,会话是通过连接来建立的。
同一个用户可以通过建立多个连接来创建到。
Oracle的内存结构和进程结构
1:Oracle实例〔Instance〕在一个效劳器中,每一个运行的Oracle数据库都与一个数据库实例相联系,实例是我们访咨询数据库的手段。
实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数INSTANCE_NAME来标识,它们两个的值是相同的。
数据库启动时,系统首先在效劳器内存中分配系统全局区〔SGA〕,构成了Oracle的内存结构,然后启动假设干个常驻内存的操作系统进程,即组成了Oracle的进程结构,内存区域和后台进程合称为一个Oracle实例。
数据库与实例之间是1对1/n的关系,在非并行的数据库系统中每个Oracle数据库与一个实例相对应;在并行的数据库系统中,一个数据库会对应多个实例,同一时刻用户只与一个实例相联系,当某一个实例出现故障时,其他实例自动效劳,保证数据库正常运行。
在任何情况下,每个实例都只能够对应一个数据库。
2:Oracle10g动态内存治理内存是妨碍数据库性能的重要因素,Oracle8i使用静态内存治理,Oracle10g使用动态内存治理。
所谓静态内存治理,确实是基本在数据库系统中,不管是否有用户连接,也不管并发用量大小,只要数据库效劳在运行,就会分配固定大小的内存;动态内存治理答应在数据库服务运行时对内存的大小进行修改,读取大数据块时使用大内存,小数据块时使用小内存,读取标准内存块时使用标准内存设置。
按照系统对内存使用方法的不同,Oracle数据库的内存能够分为以下几个局部:•系统全局区:SGA〔SystemGlobalArea〕•程序全局区:PGA〔ProgrameGlobalArea〕•排序池:〔SortArea〕•大池:〔LargePool〕•Java池:〔Java Pool〕2-1:系统全局区SGA〔SystemGlobalArea〕SGA是一组为系统分配的共享的内存结构,能够包含一个数据库实例的数据或操纵信息。
假如多个用户连接到同一个数据库实例,在实例的SGA中,数据能够被多个用户共享。
Oracle的体系结构
•临时表空间所对应的临时数据文件是一类比较特殊的数据文件。 •临时文件的信息只能通过数据字典视图DBA_TEMP_FILE和动 态性能视图V$TEMPFILE来查看;不能像普通数据文件一样通过 DBA_DATA_FILES和V$DATAFILE视图来查看。
3.物理存储结构
3.2控制文件
数据库控制文件是一个很小的二进制文件,在其中包含了关 于数据库物理结构的重要信息。通过在加载数据库时读取控 制文件,Oracle才能找到自己所需的操作系统文件(数据文 件、重做日志文件等)。
当一个段中的所有空间被使用完后,系统将自动 为该段分配一个新的盘区。
2.逻辑存储结构
2.3段
段是由一系列盘区组成,它也不再是存储空间的 分配单位,而是一个独立的逻辑存储结构。
对于具有独立存储结构的对象,它的数据全部存 储在保存它的段中。一个段只属于一个特定的数 据库对象,每当创建一个具有独立段的数据库对 象时,Oracle将为它创建一个段。
5.实例的进程结构
5.1用户进程
用户执行一个Oracle应用程序或启动一个Oracle工具(如 SQL*Plus)时,创建一个用户进程来执行相应的用户任务。 相关概念:
(1)连接:是一个用户进程与数据库实例之间的一条通信路径, 这条通信路径通过操作系统平台中的进程间通信机制或网络连接来 实现。
3.物理存储结构
3.3重做日志文件
重做日志文件是记录数据库中所有修改信息的文件
1.修改前的数据 2.修改后的数据 当满足一定条件时先将修改操作所产生的重做记录写入重做日志文件 中,然后才将内存中的修改结果成批的写入数据文件,最后再提交事 务。 重做日志文件是由重做记录组成的,重做记录是由修改向量组成的。 当用户执行一条update语句对某一个表中的记录进行修改时,会生成 一条记录。这条记录用多个向量记录下了被这条语句修改过的各个数 据块中的信息。
Oracle的内存结构和进程结构
1:Oracle实例(Instance)在一个服务器中,每一个运行的Oracle数据库都与一个数据库实例相联系,实例是我们访问数据库的手段。
实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数INSTANCE_NAME来标识,它们两个的值是相同的。
数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),构成了Oracle的内存结构,然后启动若干个常驻内存的操作系统进程,即组成了Oracle的进程结构,内存区域和后台进程合称为一个Oracle实例。
数据库与实例之间是1对1/n的关系,在非并行的数据库系统中每个Oracle数据库与一个实例相对应;在并行的数据库系统中,一个数据库会对应多个实例,同一时间用户只与一个实例相联系,当某一个实例出现故障时,其他实例自动服务,保证数据库正常运行。
在任何情况下,每个实例都只可以对应一个数据库。
2:Oracle10g动态内存管理内存是影响数据库性能的重要因素,Oracle8i使用静态内存管理,Oracle10g使用动态内存管理。
所谓静态内存管理,就是在数据库系统中,无论是否有用户连接,也无论并发用量大小,只要数据库服务在运行,就会分配固定大小的内存;动态内存管理允许在数据库服务运行时对内存的大小进行修改,读取大数据块时使用大内存,小数据块时使用小内存,读取标准内存块时使用标准内存设置。
按照系统对内存使用方法的不同,Oracle数据库的内存可以分为以下几个部分:•系统全局区:SGA(System Global Area)•程序全局区:PGA(Programe Global Area)•排序池:(Sort Area)•大池:(Large Pool)•Java池:(Java Pool)2-1:系统全局区SGA(System Global Area)SGA是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。
如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享。
【Oracle体系结构】---(个人研读整理)
Oracle 体系结构 1、 ORACLE 实例——包括内存结构与后台进程 2、 ORACLE 数据库——物理操作系统文件的集合 3、 了解内存结构的组成 4、 了解后台进程的作用 5、 了解数据库的物理结构6、 了解数据库的逻辑结构 一、ORACLE实例 1、ORACLE 实例 System Global Area(SGA) 和 Background Process 称为数据库的实例。
2、ORACLE 数据库 即一系列物理文件的集合:@数据文件:存储数据,以.dbf做后缀。
一句话:一个表空间对多个数据文件,一个数据文件只对一个表空间。
dba_data_files/v$datafile。
@控制文件:存储实例、数据文件及日志文件等信息的二进制文件。
alter system set control_files=‘路径’。
V$CONTROLFILE。
@日志文件:即Redo Log Files和Archivelog Files。
记录数据库修改信息。
ALTER SYSTEM SWITCH LOGFILE; 。
V$LOG。
@参数文件:记录基本参数。
spfile和pfile。
@警告文件:show parameter background_dump_dest---使用共享服务器连接@跟踪文件:show parameter user_dump_dest---使用专用服务器连接(Ps:专用服务器适用于开发阶段,简单,连接少。
反之,共享服务器适用于实际应用环境,多应用,高并发。
这两种其他更详细的区别就劳驾谷歌度娘了。
)Oracle物理结构第二大节有详细介绍。
3、系统全局共享区System Global Area(SGA)包含:■ Shared Pool (共享区)■ Database Buffer Cache (数据库缓冲区)■ Redo Log Buffer Cache (重做日志缓冲区)Oracle 10g中,与内存相关的参数可以归为两类:Ps. 自动调优的SGA参数:目前这些参数包括DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE和JAVA_POOL_SIZE。
Oracle数据库系统结构二(实例结构)
Oracle数据库系统结构⼆(实例结构)⼀.概述Oracle实例的构成:Oracle数据库实例(Oracle Instance)主要包括Oracle进程结构和Oracle内存结构两种。
⼆.ORACLE的内存结构内存结构是Oracle数据库系统结构中最为重要的⼀部分,内存也是影响数据库性能的第⼀因素。
按照对内存的使⽤⽅法的不同,Oracle数据库的内存可以分为:系统全局区SGA(System Global Area)程序全局区PGA(Program Global Area)1.系统全局区SGA(System Global Area)系统全局区SGA是⼀组为系统分配的共享内存结构,可以包含⼀个数据库实例的数据或控制信息。
SGA可为多⽤户所共享。
SGA 是在数据库实例启动时被⾃动分配的,在实例关闭时,SGA被回收SGA主要包含:数据缓冲区⽇志缓冲区共享池(1)数据缓冲区数据⾼速缓冲区存储的是最近从数据⽂件中检索出来的数据,供所有⽤户共享。
当⽤户操作数据库中的数据时,先由服务器进程将数据从磁盘的数据⽂件读取到⾼速缓冲区,然后在缓冲区处理,结果被存储到数据缓冲区中,最后由数据写⼊进程DBWR写到硬盘的数据⽂件中永久保留。
(2)⽇志缓冲区⽤于存储数据库的修改信息,当⽇志缓冲区中的信息到达⼀定数量时,由LGWR进程将其写⼊重做⽇志⽂件。
(3)共享池⽤于缓存SQL语句、数据字典、资源锁等相关数据。
(4)⼤池⼤池是数据库管理员可配置的可选内存空间。
在数据库备份/恢复、执⾏⼤量排序语句、并⾏执⾏数据库操作时需要⼤的缓存空间时,可设置使⽤它。
如没有在SGA区建⽴⼤池,操作所需的缓存空间将在共享池或PGA中分配。
(5) Java池可选内存配置项,为Java语⾔提供语法分析区(6)流池可选内存配置项,为流数据提供⽀持。
2.程序全局区PGAPGA是ORACLE为⽤户分配的内存区域,保存当前⽤户私有的数据和控制信息。
是⽤户在与数据库会话时,ORACLE⾃动分配的,会话结束后将⾃动释放。
Oracle的内存结构和进程结构
Oracle的内存结构和进程结构您正在看的Oracle是:Oracle的内存结构与进程结构。
系统全局区按作用不一致能够分为:•数据缓冲区•日志缓冲区•共享池您正在看的Oracle是:Oracle的内存结构与进程结构。
ient memory to grow cache2-1-2:日志缓冲区(Log Buffer Cache)日志缓冲区用来存储数据库的修改信息。
该区对数据库性能的影响很小,有关日志后面还会有全面的介绍。
查询日志缓冲区大小:SQL> show parameter log_bufferNAME TYPE VALUE---------- ----------- -------log_buffer integer 262144如上图:•Stack Space是用来存储用户会话变量与数组的存储区域;•User Session Data是为用户会话使用的附加存储区。
|--Session Information|--Sort Area|--Cursor Information注意Session information(用户会话信息)在独占服务器中与在共享服务器中所处的内存区域是不一致的。
> System altered.p; big integer 140M3-2:后台进程(Backgroung Process)数据库的物理结构与内存结构之间的交互要通过后台进程来完成。
数据库的后台进程包含两类,一类是务必的,一类是可选的:•Mandatory background processes|--DBWn(Database Writer):数据写入|--PMON(Process Moniter):进程监控|--LGWR(Log Writer):日志写入|--SMON(System Moniter):系统监控|--RECO(Recovery):恢复|--CKPT(Chekpoint):检查点•Optional background processes|--ARCn(Archiver):归档|--LCKn(Lock):锁|--Dnnn(Dispatcher):调度|--......能够用下面的语句查看正在运行的后台进程:=========================================SQL> select * from v$bgprocess where paddr<>'00';PADDR PSERIAL# NAME DESCRIPTION-------- ---------- ----- -------------------------------6B0ED064 1 PMON process cleanup6B0ED4E4 1 MMAN Memory Manager6B0ED964 1 DBW0 db writer process 06B0EDDE4 1 LGWR Redo etc.6B0EE264 1 CKPT checkpoint6B0EE6E4 1 SMON System Monitor Process6B0EEB64 1 RECO distributed recovery6B0EEFE4 1 CJQ0 Job Queue Coordinator6B0F01E4 1 QMNC AQ Coordinator6B0F0664 1 MMON Manageability Monitor Process6B0F0AE4 1 MMNL Manageability Monitor Process 2========================================3-2-1:DBWR(Database Writer,数据写入进程)将数据缓冲区的数据写入数据文件,是负责数据缓冲区管理的一个后台进程。
Oracle基础架构
Oracle根底架构简介Oracle是一种常用的关系数据库管理系统〔RDBMS〕,被广泛用于企业级应用程序的数据存储和管理。
为了实现高度可靠性和可扩展性,Oracle数据库采用了一种复杂的根底架构。
本文将深入探讨Oracle根底架构的不同组件,包括实例、数据库、表空间和数据文件等。
实例〔Instance〕Oracle实例是Oracle数据库在内存中运行的进程。
当客户端应用程序连接到Oracle数据库时,实例就会被启动。
每个实例都有自己的系统进程,负责管理与数据库的通信、资源分配和事务处理等。
实例由以下组件组成: - 后台进程〔Background Processes〕:负责执行实例的各种任务,如日志写入、数据缓存和SQL执行等。
其中包括数据库写进程〔DBWn〕、数据库恢复进程〔RECO〕、进程监控器〔PMON〕等。
- 数据库缓冲区〔Database Buffer Cache〕:用于存放从数据文件读取的数据块,以提高数据访问的性能。
- 重做日志缓冲区〔Redo Log Buffer〕:用于存放即将写入重做日志文件的数据。
- 数据库连接〔Database Connections〕:用于处理客户端应用程序与数据库之间的通信。
数据库〔Database〕数据库是Oracle实例中存储数据的物理文件集合。
一个Oracle实例可以管理多个数据库,每个数据库有自己的数据字典〔Data Dictionary〕和表空间〔Tablespace〕。
数据字典是Oracle数据库的元数据存储区域,包含了有关数据库中所有对象的定义和描述信息。
它是数据库的核心组成局部,用于管理数据库的结构和访问权限等。
表空间〔Tablespace〕表空间是数据库中存放表、索引和其他对象的逻辑存储单元。
每个Oracle数据库至少有一个默认表空间,用于存储系统表和用户表。
用户可以创立自己的表空间,用于存储自己的表和索引等对象。
表空间由一个或多个数据文件组成,数据文件是操作系统上的一组文件,用于实际存储数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 实例的进程结构进程是操作系统中一个独立的可以调度的活动,用于完成指定的任务。
进程与程序的区别在于前者是一个动态概念,后者是一个静态实体。
程序仅仅是指令的有序集合,而进程则强调执行过程。
进程可以动态地创建,当完成任务后即会消亡。
在Oracle 系统工作过程中,主要涉及到如下3类进程:● 用户进程 在用户连接数据库时会创建一个用户进程。
用户进程执行的是一个应用程序或Oracle 工具程序的代码,以完成用户指定的任务。
用户进程不是实例的组成部分。
● 服务器进程 这些进程根据客户的请求来完成工作。
● 后台进程 这些进程随数据库而启动,用于完成各种维护任务,如将数据块写至磁盘进程DBWR 、维护在线重做日志进程LGWR 、清理异常中止的进程等。
图2-6显示了服务器进程、用户进程和后台进程之间的关系。
共享池数据缓冲区日志缓冲区SGAData Data Data Data Data Data Data 数据文件日志文件组DBWRARCH 磁盘或磁带CKPT 服务器进程LGWR 用户进程PMON LCKn SMON RECO图2-6 服务器进程、用户进程和后台进程之间的关系1 用户进程当用户执行一个Oracle 应用程序时,或者启动一个Oracle 工具时(如SQL*Plus ),Oracle 将创建一个用户进程来执行相应的用户任务。
与用户进程相关的有两个概念:“连接”和“会话”。
连接是一个用户进程与数据库实例之间的一条通信路径,这条通信路径通过操作系统平台中的进程间通信机制或网络连接来实现。
会话则是一个用户到数据库的指定连接。
例如当一个用户启动SQL*Plus ,并输入正确的用户名和密码连接到一个数据库库后,就为该用户创建了一个会话。
会话在用户连接到实例的过程中始终存在,直到用户断开连接或终止应用程序为止。
可以看出,会话是通过连接来建立的。
同一个用户可以通过建立多个连接来创建到Oracle数据库的多个会话。
例如,一个用户可以使用同一个账户启动多个SQL*Plus程序来对数据库进行操作。
可以在SQL*Plus中查询动态性能视图V$SESSION来查看实际的会话:SQL> connect system/admin已连接。
SQL> select username,sid,serial#,server,status2 from v$session3 where username=USER;USERNAME SID SERIAL# SERVER STA TUS------------------------------ ---------- ---------- --------- --------SYSTEM 130 66 DEDICATED ACTIVE2 服务器进程服务器进程就是代表用户会话完成工作的进程,应用向数据库发送的SQL语句就是由这些进程接收并执行。
在Oracle数据库中可以同时存在两种类型的服务器进程:一种类型是专用服务器进程,一个专用服务进程只能为一个用户进程提供服务;另一种是共享服务进程,一个共享服务进程可以为多个用户进程提供服务。
专用服务器进程和共享服务器进程的任务是相同的:●解析并执行用户所提交的SQL语句。
●在SGA区的数据缓存区中搜索用户进程所访问的数据;如果数据不在缓存中,则需要从硬盘数据文件中读取所需的数据,再将其复制到缓存中。
●将数据返回给用户进程。
3 后台进程Oracle实例包括两部分:SGA和一组后台进程。
在任意一个刻,Oracle数据库可以处理多个并发用户请求,进行复杂的数据操作,与些同时还要维护数据库系统使其始终具有良好的性能。
为了完成这些任务,Oracle具有一组后台进程保证数据库运行所需的实际维护任务。
可以使用一个V$BGPROCESS视图查看所有可能的Oracle后台进程,图2-7展示了有一个中心用途的Oracle后台进程。
PMONSMON RBCO SGA块缓存区重做日志缓存区远程数据库CKPT DBWn LGWR ARCnLMDOLCKnLMSnLMON远程数据库集群实例数据文件联机重做文件归档日志图2-7 中心后台进程启动实例时并不会全部看到所有这些进程,有一些进程只有在特殊情况下才会存在。
例如,当数据库在归档模式下,则会启用归档进程ARCn;如果运行了Oracle RAC,这种Oracle 配置允许一个集群中不同机器上的多个实例装载并打开相同的物理数据库,这时就会启动LMD0、LCKn、LMON和LMSn等进程。
只有DBWR、LGWR、CKPT、SMON和PMON 等进程是实例所必需的。
本节将介绍Oracle实例中常见的一些后台进程。
1.DBWR(数据写进程)数据写进程DBWR负表将缓存区中的数据写入到数据文件,它是管理缓存区的一个Oracle后台进程。
当数据缓存区中某个缓冲块的数据被修改,它被标志为“弄脏”。
DBWR 的主要任务是将“弄脏”的缓存块的数据写入磁盘,使缓冲区保持“干净”。
需要注意,只有在满足一定的条件时,DBWR进程才开始成批地将脏缓存块写入数据文件,这样做能够尽量避免DBWR进程与其他进程之间发生I/O冲突,并且减少数据库执行物理I/O操作的次数。
另外,DBWR进程也不是将所有的脏缓存块写入数据文件,因为脏缓存块一旦被写入数据文件,它将被标记为空闲缓存块,其中保存的数据将丢失。
如果随后立即有其他的用户进程需要访问脏缓存块中以前所保存的数据,Oracle需要重新到数据文件中去读取数据。
为了避免这样的缓存失败,可以通过LRU算法能够解决这个问题。
将那些经常被访问的脏缓存块继续保留的缓存中,而将最近未被访问过的缓存块标记为“冷缓存块”,DBWR进程只将那些同时被标记为“脏”和“冷”的缓存块写入数据文件。
只有发生下列情况时,DBWR进程才开始将脏缓存块写入数据文件:●当用户进程执行INSERT和UPDA TE等操作时,会首先将插入的数据写入数据缓存。
在这个过程中,如果Oracle在数据缓存的LRU列表中搜索了一定数量的缓存块后,仍然没有找到可用的空闲缓存块,DBWR进程被启动。
由DBWR进程将脏缓存块写入数据文件,以获得更多的空闲缓存块。
●当出现检查点时,LGWR将通知DBWR进行写操作。
●当将缓存区的脏数据块移入到脏列表时,如果脏列表达到临界长度时,将通知DBWR将脏数据块写入到数据文件。
该临界长度是为初始化参数DB_BLOCK_WRITE_BATCH的一半。
●若出现超时(大约3秒内未被启动),DBWR进程将被启动。
DBWR进程的启动时间对整个Oracle数据库的性能有很大影响。
如果DBWR进程过于频繁地启动,则将降低整个系统的I/O性能。
但如果DBWR进程间隔很久才启动一次,则会对数据库恢复等方面带来不利的影响。
一个Oracle实例至少要有一个DBWR进程,初始化参数DB_WRITE_PROCESSES可以设置DBWR进程的个数。
如果仅使用一个DBWR进程无法满足系统的需要,可以设置多个DBWR进程,则进程的名称分别为:DBW0、DBW1、DBW2等。
但是DBWR进程的数量不应当超过系统处理器的数量,否则多余的DBWR无法发挥作用,反而耗费系统资源。
2.LGWR(日志写进程)日志写进程LGWR负责将重做日志缓冲区中的信息写入到磁盘日志文件组。
数据库在运行时,如果对数据进行修改就会产生日志信息,日志信息首先保存在日志缓冲区中。
当日志信息达到一定数量时,由LGWR将日志数据写入日志文件组。
由于日志缓冲区是一个循环缓冲区,因此在LGWR将日志缓冲区的日志数据写入日志文件组的同时,Oracle还能够将新的日志信息写入到日志缓存区。
由于LGWR进程写入重做日志文件的速度要快于Oracle写入重做日志缓存的速度,因此能够保证重做日志缓存中始终有足够的空闲空间。
LGWR进程并不是随时都在运行,只有下述情况之一发生时,LGWR进程才开始将日志缓冲区中的数据写入到日志文件组:●用户提交当前事务。
●日志缓冲区被写满三分之一。
●DBWR进程将脏缓存块写入到数据文件。
●每隔3秒即发生一次超时,出现超时将启动LGWR。
如果日志文件组包含多个日志成员,则LGWR进程将日志信息同时写入到一个日志文件组的多个日志成员文件中。
如果组中一个成员文件已经损坏,LGWR进程可将日志信息继续写到该组的其他文件中,以免影响数据库正常运行。
Oracle使用快速提交机制,即可以将事务提交首先写入到日志文件组,但是其修改的数据可以还没有写入到数据文件。
如果事务的提交记录和重做信息都被写入重做日志文件,这样即使发生数据库崩溃,事务对数据库所做的更改也不会丢失,因为这可以通过相应的日志信息完成恢复。
在LGWR执行日志切换时,它会生成一个检查点,而该检查点将通知DBWR将脏缓存块从缓存区写入到数据文件中。
这是很重要的,因为LGWR开始向另一个日志文件组写入日志时,可能需要覆盖另一个日志文件组中的日志信息,如果这些日志信息是一个事务留下的,而LGWR进程不在覆盖日志文件前通知DBWR将脏数据块写入数据文件,则这时如果数据库发生故障,就无法对其进行恢复。
3.CKPT(检查点进程)“检查点”就是一个事件,当该事件发生时,数据缓存中的脏缓存块将被写入到数据文件中,同时系统对数据库的控制文件和数据文件进行更新,以记录当前数据库的状态。
在通常情况下,检查点是在日志切换时产生。
检查点可以保证所有被修改过的缓存块都被写入数据文件,此时数据库处于一个完整状态。
如果数据库崩溃,则只需要将数据库恢复到上一个检查点时刻即可,这样可以缩短数据库恢复所需的时间。
CKPT进程负责两件任务:●检查点进程CKPT负责将检查点更新到控制文件。
●启动DBWR进程将脏缓存块写入数据文件。
数据库管理员可以根据实际的情况为检查点选择一个合适的执行间隔。
如果检查点执行间隔太短,将会产生过多的磁盘I/O 操作。
反之,如果检查点执行的间隔过长,则数据库恢复将耗费太多的时间。
Oracle 数据库提供了三个与检查点相关的初始化参数:一个是参数LOG_CHECKPOINT_TIMEOUT ,该参数决定执行一个检查点的时间间隔,这样每到一定的时间,不论数据库中是否有操作,都将产生检查点;另一个参数是LOG_CHECKPOINT_INTERV AL ,该参数决定执行一个检查点时需要填写的日志文件块数,即每产生多少个日志数据,系统产生一个检查点;参数LOG_CHECKPOINT_TO_ALERT 用于设置是否将检查点信息记录到警告日志中。
通过将检查点信息记录到警告日志中,可以便于数据库管理员确定检查点是否按所需频率出现。
4.ARCn (归档进程)Oracle 数据库有两种运行模式:归档和非归档模式。