一、UGA由哪几部分组成?
由上述图片可知,
一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared Areas,该Shared Areas的类型为Shared SQL Areas,在该会话对应的进程对应的uga中,就有该SQL语句对应的Private Areas,该Private Areas的类型为PrivateSQL Areas。当然由于当一个SQL语句执行完毕后它对应的PrivateSQL Area也会释放掉,又一个会话里同时只有一个SQL语句执行,所以该会话对应的进程对应的uga中始终最多只有一个Private SQL Area存在。
一个会话里如果处理的是 PL/SQL programunits,那么在shared pool中就有该 PL/SQL program units对应的Shared Areas,该Shared Areas的类型为SharedPL/SQL Areas,在该会话对应的进程对应的uga中,就有该SQL语句对应的Private Areas,该Private Areas的类型为PrivatePL/SQL Areas。当然由于当一个PL/SQL program units执行完毕后它对应的Private SQL Area也会释放掉,又一个会话里同时只有一个PL/SQL program units执行,所以该会话对应的进程对应的uga中始终最多只有一个Private PL/SQL Areas存在。
由此可知,uga里必然包括session memory,而private sqlarea这个部分是当有SQL语句运行时存在于uga里,PrivatePL/SQL Area也是如此。
如果oracle还安装了OLAP组件,那么uga里也必有theOLAP pool。
uga组成部分结论的得出过程:
Pga和uga分别包含哪些部分?
当uga处于pga中(专用服务器模式)时,两者的分别包含哪些部分是否很清楚:uga全部处于pga中,uga包括session memory(记录会话信息)和私有sql区(包括the persistent area和 the runtime area(包括sql工作区和query execution stateinformation(即记录SQL语句执行进度的部分)两部分)两部分)。
当uga处于sga中(共享服务器模式)时,两者的分别包含哪些部分分别可理解为以下三种说法:
首先说明的是,按照oracle11gR2官方文档里的图示(http://docs.oracle.com/cd/E11882_01/server.112/e40540/memory.htm#i14490),sql工作区不包含在私有sql区的,uga就是图示中的session memory。按照oracle10g官方文档的说法,sql工作区是包含在私有sql区的。
Memory Area |
Dedicated Server |