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.程序全局区PGA
PGA是ORACLE为用户分配的内存区域,保存当前用户私有的数据和控制信息。是用户在与数据库会话时,ORACLE自动分配的,会话结束后将自动释放。PGA是非共享区,每个服务进程都有自己的PGA区。主要由排序区(Sort Area)、会话信息(Session Information)、游标状态(Cursor State)以及堆栈空间(Stack Space)等组成。
(1)排序区
排序区用于存放SQL排序时所产生的临时数据,它是影响PGA尺寸的主要因素。ORACLE中有两个排序区,一个是内存排序区,另一个是磁盘中的临时段,在内存够用时,优先使用内存排序区。
(2)会话信息
用户会话所具有的权限、角色及会话的性能统计信息等都存放在PGA中。
(3)游标状态
用于存放执行游标操作时所产生的数据。
(4)堆栈空间
用于存放会话中的变量信息,如在语句中使用的变量。
三.ORACLE的进程结构
进程 是操作系统中一个独立的可以调动的活动,用于完成指定的任务。
1.进程类型:
1) 用户进程(User Process)
当用户连接数据库执行应用程序时,创建1个用户进程。
2) 服务器进程(Server Proces)
由Oracle自身创建,用于处理连接到数据库实例的用户进程所提出的请求。主要完成任务:
解析并执行用户提交的SQL语句和PL/SQL程序;
在SGA区搜索用户要访问的数据,如不存在,则由磁盘数据文件读入缓存;
将用户对数据库的更改信息写入日志缓冲区;
将查询或执行后的结果返回给用户进程。
3) 后台进程(Background Process)
服务器进程在执行用户进程请求时,会调用后台进程来实现对数据库的操作。
2.Oracle的后台进程类型
(1)DBWR进程-数据写入进程
功能
DBWR进程将数据缓冲区中的脏数据块写入磁盘,使用户进程得到更多的空闲缓冲区。
算法
采用LRU(最近最少使用算法),淘汰最近最少使用的数据块
(2)LGWR进程-日志写入进程
功能
LGWR进程负责将重做日志缓冲区中的日志记录写入磁盘日志文件组.
LGWR执行日志切换时,会生成一个检查点。
(3)CKPT进程-检查点进程
检查点
检查点是一个事件,当其发生时,DBWR进程把数据缓存中的脏数据快写入数据文件,同时系统对控制文件和数据文件的同步序号进行更新,以记录下当前的数据库结构和状态,保证数据的同步。
功能
CKPT进程负责执行检查点并更新控制文件,启用DBWR进程将脏数据缓存块中的数据写入数据文件.
(4) ARCH进程-归档进程功能
ARWR进程只在数据库运行在归档模式下时才会启动,即在发生日志切换时,则启动该进程将已写满的日志文件复制到指定的存储设备中,以避免被新日志文件覆盖。一个数据库实例可启动多个归档进程。
(5)SMON进程-系统监控进程
功能
SMON进程负责在实例启动时对数据库进行恢复操作(主要用于非正常关闭数据库); 负责回收临时表空间或临时段中不再使用的存储空间;合并各表空间的空闲空间碎片。
SMON在实例启动时被执行;实例运行期间会被定期唤醒。
(6)PMON进程-进程监控进程
功能
PMON进程负责在用户进程出现故障时执行恢复;负责清理非正常中断的用户进程的会话,回退未提交的事务,并释放该进程使用的系统资源(占用的锁、SGA、PGA等资源);负责周期性检查调度程序和服务进程的状态,若失败,则尝试重新启动它们,并释放其所占资源.
(7) Dnnn进程-调度进程
功能
在共享服务器模式下调度进程可为任意数量的用户进程提供服务.
服务器的两种操作模式:
专用服务器模式
共享服务器模式