1.8.1 Oracle实例
Oracle实例由系统全局区(System Global Area,SGA)和程序全局区(Program Global Area,PGA)两部分组成,如图1.48所示。
图1.48 Oracle实例的体系结构
1.系统全局区
Oracle DB XE中拥有以下进程。
· 用户进程——在客户机内存中运行的程序。例如,在客户机上运行的SQL∗Plus、企业管理器等都是用户进程。用户进程用于向服务器进程请求信息。
· 服务器进程——在服务器上运行的程序,接收用户进程发出的请求,并根据请求与数据库通信,完成与数据库的连接操作和I/O访问。
· 数据库后台支持进程——负责数据库的后台管理工作。
运行在客户机上的用户进程和运行在服务器上的服务器进程是同时进行的,OS将为这些进程分配专用的内存区域以用于它们之间的通信,这个专用的内存区域称为SGA(系统全局区)。
在SGA中,根据功能的不同划分为若干部分,比较重要的如下。
· Buffer Cache(高速缓冲区)——用于保存从数据文件中读取的数据区块副本,或用户已经处理过的数据。设立高速缓冲区的目的是减少访问数据时造成的磁盘读写操作,进而提高数据处理能力。所有的用户都可以共享高速缓冲区中的数据。
· Shared Pool(共享区)——当数据库接收到来自客户端的SQL语句后,系统将会解析SQL语句的语法是否正确。进行解析时,需要的系统信息以及解析后的结果都将保存在共享区。如果不同的用户执行相同的SQL语句,Oracle实例则可以直接使用已经解析过的结果,这将大幅提高SQL语句的执行效率。
· 重置日志缓冲区(Redo Log Buffer)——用于记录数据库中所有数据修改的详细信息,这些信息的存储地点称为Redo Entries,Oracle实例将适时地将Redo Entries写入重置日志文件,以便数据库毁坏时可以进行必要的复原操作。
2.程序全局区
Oracle实例在运行时将创建服务进程以为用户的进程服务。对于每个来自客户端的请求,Oracle DB XE都会创建一个服务进程以接收这个请求。PGA是存储区中被单个用户进程使用的内存区域,是用户私有的,不能共享。PGA主要用于处理SQL语句和控制用户登录等操作。