Oracle由实例和数据库组成,其物理体系结构图如下:
一区:PGA ( Program Global Area )
PGA是一块开辟出来的私有不共享的内存区,用户对数据库发起的无论查询还是更新的任何操作,都是在PGA先预处理,然后接下来才进入实例区域,由SGA和系列后台进程共同完成用户发起的请求。
PGA的预处理作用:
1)保存用户的连接信息,如会话属性、绑定变量等
2)保存用户权限等重要信息,当用户进程与数据库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内。
3)当发起的指令需要排序的时候,PGA正是这个排序区,如果内存中可以放下排序的尺寸,就在内存PGA中完成,如果放不下,超出的部分就在临时表空间中完成排序,也就是在磁盘中完成排序。
二区:实例 ( instance )
实例是由一个开辟的共享内存区SGA(System Global Area)和一系列后台进程组成的,其中SGA主要被划分为
1)共享池 ( shared pool )
2)数据缓冲区 ( db cache )
3)日志缓冲区 ( log buffer )
后台进程包括图中所示的PMON、SMON、LCKn、RECO、CKPT、DBWR、LGWR、ARCH等。
三区:数据库 (database)
数据库是由数据文件、参数文件、日志文件、控制文件、归档日志文件等系列文件组成的,其中归档日志最终可能会被转移到新的存储介质中,用于备份恢复使用。
用户发起的请求一般经历如下:
一区—>二区—>三区
或者
一区—>二区