Oracle数据库的体系结构和用户管理(4)

UGA:为用户进程存储会话状态的内存区域。根据用户数据库时配置为专用服务器模式,还是配置为共享服务器模式,UGA可以作为SGA或PGA的一部分。它为用户会话存储数据。接下来重点介绍一下SGA和PGA:

1)SGA

Oracle实例的SGA同来存储数据库信息,并由多个数据库进程共享。当数据库实例启动时,SGA的内存被自动分配。SAG是数据库中占用服务器内存最大的一个区域,也是影响数据库性能的一个重要指标。SGA按其作用不同,可分为共享池、数据缓冲区、重做日志缓冲区、大池和Java池等。

①共享池

共享池是对SQL、PL/SQL程序进行语法分析、编译、执行时用到的内存区域。共享池由库缓存和数据字典缓存组成。

库缓存含有最近执行的SQL、PL/SQL语句的分析码和执行计划。

数据字典缓存含有从数据字典中得到的表、索引、列定义、权限信息和其他一些数据库对象的定义,如果Oracle缓存了这些信息,那么无疑是缩短了查询的响应时间。

②数据缓冲区

数据缓冲区用于存储从磁盘数据文件中读入的数据,供所有用户共享。修改数据时,首先要从数据文件中取出数据,存储于数据缓冲区中。修改的数据,插入的数据都被存储于数据缓冲区中,修改完成和其他条件满足时,数据才被写入数据文件中。

Oracle服务器进程在处理一个查询时,首先查找内存中是否存在所需的数据块。如果在数据缓冲区中没有找到需要的块,服务器进程就从数据文件中读取此块,并保存在缓冲区中。当后续的请求需要读取这些块时,便可以在内存中找到,因此这些请求不需要从磁盘中读取,从而提高了读取速度。数据缓冲区的大小对数据库的读取速度有直接的影响。

③重做日志缓冲区

当用户执行了如INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等操作时,数据发生了变化,这些变化了的数据在写入数据缓存之前先要写入重做日志缓冲区,同时变化之前的数据也放入重做日志缓存,这样在数据恢复时Oracle就知道哪些资源需要提交,哪些资源需要撤回。相对于数据缓冲区,日志缓冲区对数据库的性能影响较小。

④大池

在SGA中,大池是一个可选的缓冲区,管理员可以根据需要对其今进行配置。在大规模输入、输出及备份过程中也需要大池作为缓冲空间,如大数据操作、数据库备份与恢复之类的操作。

⑤Java池

在SGA中,Java池也是一个可选的缓冲区,但是在安装Java或者使用Java程序时必须设置Java池,用于编译Java语言编写的指令。

2)PGA

PGA不是实例的一部分,它包含单个服务器进程或单个后台进程所需的数据和控制信息。PGA是在用户进程连接到数据库并创建一个会话时自动分配的,该分区保留了每个与Oracle数据库连接的用户进程所需的内存。在一个用户结束会话后,PGA将被释放。

5、Oracle进程结构

Oracle中有几种不同类型的进程:用户进程、服务器进程和后台进程。

用户进程:在数据库用户请求连接Oracle服务器时启动;

服务器进程:在用户建立会话并连接Oracle实例时启动;

后台进程:在Oracle实例启动时启动;

用户进程是一个需要与Oracle服务器进程交互的程序。当数据库用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程。例如:用户启动数据库工具Sqlplus时,系统将自动建立一个用户进程。

服务器进程用于处理连接到实例的用户进程的请求。当用户建立与数据库的连接时,即产生服务器进程。服务器进程和用户进程通信并为所连接的用户请求服务。服务器进程直接与Oracle数据库交互,实现调用和返回结果的目的。服务器进程及可以处理一个用户进程的请求,也可以处理多个用户进程的请求。

在Oracle数据库中,为了使系统性能更好地协调多个用户,实例系统中使用的一些附加进程,称为后台进程。这些后台进程存在于操作系统中,在实例启动时自动启动。其中有五个进程是必须要启动的,否则数据库实例无法启动。这五个重要且必需的后台进程为进程监控(Process Monitor,PMON)进程、系统监控(System Monitor,SMON)进程、数据写入(Database Writer,DBWR)进程、日志写入(Log Writer,LGWR)进程、检查点(Check Point,CKPT)进程。

1)PMON进程

PMON进程在用户连接意外中断后执行资源清理工作,包括以下任务:

释放所有当前挂起的锁;

回滚用户当前事务处理;

释放用户当前使用的资源;

监控服务器进程和其他后台进程,出现故障时重启它们;

2)SMON进程

SMON进程执行以下任务:

在实例启动时执行实例恢复。实例恢复包括三个步骤:

①前滚以恢复未写入的数据文件但已记入联机日志文件的数据;

②打开数据库,以便用户能登录并访问数据;

③回滚为提交的事务处理;

整理数据文件的自由空间;

释放不再使用的临时段;

3)DBWR进程

DBWR进程执行以下任务:

管理数据缓冲区,以便能找到空闲的缓冲区读入数据文件的数据;

将所有修改后的缓冲区数据写入数据文件;

使用LRU算法经最近使用过的块保留在内存中;

通过延迟写入优化磁盘I/O读写;

4)LGWR进程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/374791edb744d280f0c5ab3ac7203636.html