oracle的PGA管理概述

作为一个复杂的Oracle数据库系统来说,每时每刻都要处理不同用户所提交的SQL语句,获取数据并返回数据给用户。前面已经说到,解析SQL语句的工作是在Oracle实例中的shared pool所完成的。那么对于每个session来说,其执行SQL语句时所传入的绑定变量放在哪里?而且,对于那些需要执行比较复杂SQL的session来说,比如需要进行排序(sort)或hash连接(hash-join)时,这时,这些session所需要的内存空间又从哪里来?另外,还有与每个session相关的一些管理控制信息又放在哪里?对于诸如此类与每个session相关的一些内存的分配问题,Oracle通过引入PGA这个内存组件来进行解决。

1、PGA的概念及其包含的内存结构

PGA按照Oracle官方文档解释,叫做程序全局区(Program Global Area),但也有些资料上说还可以理解为进程全局区(Process Global Area)。这两者没有本质的区别,它首先是一个内存区域,其次,该区域中包含了与某个特定服务器进程相关的数据和控制信息。每个进程都具有自己私有的PGA区,这也就意味着,这块区域只能被其所属的进程进入,而不能被其他进程访问,所以在PGA中不需要latch这样的内存结构来保护其中的信息。

笼统地说,PGA里包含了当前进程所使用的有关操作系统资源的信息(比如打开的文件句柄等)以及一些与当前进程相关的一些私有的状态信息。每个PGA区都包含以下两部分。

固定PGA部分(Fixed PGA):这部分包含一些小的固定尺寸的变量,以及指向变化PGA部分的指针。

变化PGA部分(Variable PGA):这部分是按照堆(Heap)来进行组织的,所以这部分也叫做PGA堆。PGA堆中所包含的内存结构包括:

有关一些固定表的永久性内存。

如果session使用的是专用连接方式(dedicated server),则还含有用户全局区(User Global Area,UGA)子堆。如果session使用的是共享连接方式(shared server),则UGA位于SGA中。UGA是PGA中的最重要的部分。

调用全局区(Call Global Area,CGA)子堆。

UGA是包含与某个特定session相关信息的内存区域,比如session的登录信息以及session私有的SQL区域等。每个UGA也包含以下两个部分。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

固定UGA部分(Fixed UGA):这部分包含一些小的固定尺寸的变量,以及指向变化UGA部分的指针。

变化UGA部分(Variable UGA):这部分也是按照堆来进行组织的,可以从X$KSMUP视图中看到有关UGA堆的分布情况。UGA堆的分布与open_cursors、open_links等参数有关系。所谓的游标(cursor)就是放在这里的,游标指向shared pool里的包含SQL文本以及执行计划等的对象。UGA堆中所包含的内存结构介绍如下。

私有SQL区域(Private SQL Area):这部分区域包含绑定变量信息以及运行时的内存结构等数据。每一个发出SQL语句的session都有自己的私有SQL区域。这部分区域又可分成以下两部分。

永久内存区域:这里存放了相同SQL语句多次执行时都需要的一些游标信息,比如绑定变量信息、数据类型转换信息等。这部分内存只有在游标被关闭时才会被释放。

运行时区域:在处理SQL语句时的第一步就是要创建运行时区域,这里存放了当SQL语句运行时所使用的一些信息。对于DML(INSERT、UPDATE、DELETE)语句来说,SQL语句执行完毕就释放该区域;而对于查询语句(SELECT)来说,则是在所有数据行都被获取并传递给用户以后被释放,或者该查询被取消以后也会被释放。

Session相关的信息。这部分信息包括以下几部分。

正在使用的包(package)的状态信息。

使用alter session这样的命令所启用的跟踪信息,或者所修改的session级别的优化器参数(optimizer_mode)、排序参数(sort_area_size等)、修改的NLS参数等。

所打开的db links。

可使用的角色(roles)等。

工作区(Work area):这块区域主要用来存放执行SQL的过程中所产生的中间数据,比如排序时,需要在这里存放排序过程中的中间数据。这部分占据了PGA中的大部分空间。其大小依赖于所要处理的SQL语句的复杂程度而定。如果SQL语句包含诸如group by、hash-join等这样的操作,则会需要很大的SQL工作区域。实际上,我们调整PGA也就是调整这块区域。

而UGA所处的位置完全由session连接的方式决定:

如果session是通过共享服务器(shared server)方式登录到数据库的,则毫无疑问,UGA必须能够被所有进程访问,所以在这种情况下,UGA是从SGA中进行分配的。进一步说,如果SGA中设置了large pool,则UGA从large pool里进行分配;否则,如果没有设置large pool,则UGA只能从shared pool里进行分配。

如果session是通过专用服务器(dedicated server)方式登录到数据库的,则UGA是从进程的PGA中进行分配的。

时间: 2024-08-03 10:48:22

oracle的PGA管理概述的相关文章

Oracle 基于用户管理恢复的处理

--================================ -- Oracle 基于用户管理恢复的处理 --================================       Oracle支持多种方式来管理数据文件的备份与恢复来保证数据库的可靠与完整.除了使用RMAN工具以及第三方备份与恢复工具之外,基于 用户管理的备份与恢复也是DBA经常使用的方式之一.本文首先介绍了恢复的相关概念,接下来详细讲述了在归档模式下使用基于用户管理恢 复的处理过程.    一.恢复的相关概念  

Oracle 基于用户管理的不完全恢复

    Oracle 数据恢复从恢复类型来说,抛开具体的文件,总共可分为两大类型的恢复,一是完全恢复,一个是不完全恢复.其实,熟悉了Oracle体系结构之后,对于Oracle恢复就会有一个总体的概念.因为Oracle组成的外围部分,主要由不同的文件来组成,每种不同类型的文件有不同的作用,因此只要了解了其作用,更利于了解与掌握Oralce数据库的备份与恢复.言归正传,完全恢复即是把数据库恢复到最新的SCN,出故障前的那一刻,是无损恢复.而不完全恢复即是有损恢复,多用于恢复用户误操作,归档日志丢失等

Oracle DBA 日常管理

oracle Oracle DBA 日常管理修改:2000/8/23作者:Thomas B. Cox,with Christine Choi目的:这篇文档有很详细的资料记录着对一个甚至更多的ORACLE 数据库每天的,每月的,每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的SQL和PL/SQL 代码.修改笔记: 1.1 在Steve DeNunzio 的'existext.sql'中所识别的类型1.2 固定的类型1.3 加的Gnu Public License:在重建

ORACLE锁的管理

oracle (转载自:http://fengyu.china.com/lock.htm)ORACLE锁的管理 2003-03 余枫ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改4:Share 共享锁(S):阻止其他DML操作5:S/Row-X 共享行专用(SRX):阻止其他事务操作6:exclusive 专用(X):独立访问使用数字越大锁级别越高, 影响的操作越多.一般的查询语句如select

MySQL账户及权限管理概述

MySQL初始账户管理 MySQL的初始账户如下: [root@lx16 ~]# mysql -u root mysql> select host,user,password from mysql.user; +-----------+------+----------+ | host | user | password | +-----------+------+----------+ | lx16 | root | | | 127.0.0.1 | root | | | ::1 | root

Oracle CRS的管理与维护

CRS提供了很多命令可以管理和查看集群服务状态,常用的有crs_stat.crs_start.crs_stop.crsctl等,这里依次介绍. 1. 查看集群状态 通过crs_stat命令可以查看集群中所有资源的状态,包括资源状态.资源运行在哪个节点上.资源类型等信息.例如: [oracle@node-rac1 ~]$ crs_stat –t Name Type Target State Host -------------------------------------------------

oracle概念-数据库文件概述

oracle概念-数据库文件概述如下: oracle包含三大基本文件: 1:数据文件(data file) 2:控制文件(control file) 3:联机重做日志文件(online redo log file) oracle 数据库 的 文件 (files) 的概念: oracle数据库的体系结构最终组件反映在存储在磁盘上的物理文件,oracle有若干种类型的数据文件,,每一个数据文件都有不同的目的. a : 数据库数据文件 b : 控制文件 c : 联机重做日志文件 d : 参数文件 e

Authentication and Integration 第一篇:oracle 身份认证管理体系

1.身份认证体系的必要性 •在您的企业里应用系统中是否有太多的密码需要记忆? •作为系统管理员,您是否需要花费很多的时间去管理用户帐号和访问权限? •各部门管理员需要花费多长时间才能为一个新的用户在所有的应用系统中建立账号?是否工作重复,效率低下? •员工离开企业时能否立即停用其在各个应用子系统中的账号? •用户的详细信息在各个系统中是否一致? •添加新的应用时是否有一致的认证和授权框架可以利用? •如何满足行业政策规范的要求? •是否可以对企业内应用系统实现监控和跟踪? •在一些大型企业中,用

Oracle宣布进一步集成Oracle Eloqua和Oracle社交关系管理

甲骨文全球大会,2013年9月24日--对于营销人员来说,通过管理数字化营销和社交方式在每一个接触点上都能提供吸引客户和一致的营销体验,这非常困难.为了应对这一挑战,Oracle营销云宣布,进一步集成Oracle Eloqua和Oracle社交关系管理(SRM ),以提供业界最全面的.可扩展和集成的现代市场营销解决方案.增强的市场调查.社交分析.跟踪.发布和自定义定位功能,将帮助现代营销人员更好地了解.定位.粘合.转化和分析目标受众. 为进一步强化业界最完整的数字营销解决方案,Oracle营销云