PGA

一、PGA
PROCESS GLOBAL AREA =====>私有的空间(专用)server process

PGA is part of prcess private memory. heap information can be seen in x$ksmpp

SQL WORK AREA=====> Sort Area, Hash Area, Bigmap, merger Area
PRIVATE SQL AREA===>Session Memory,Persistent Area,Runtime Area

Fixed UGA
Variable UGA(private sql /plsql area, 句柄 open cursors and links,endabled roles and events, and so on)

open cursors and links:每个会话放了指向在共享池中的sql,执行计划的地址(指针);

二、管理PGA 总体来说一般使用自动管理。(9i以上使用自动内存管理)

工作区;
自动管理:
workarea_size_policy string AUTO

实验:
1.准备两个表:
SQL> create table caoyf_t1 as select * from all_objects;

Table created.

SQL> create table caoyf_t2 as select * from all_objects;

Table created.

SQL> select count(*) from caoyf_t1;

COUNT(*)
----------
75131

2.查看当前会话:
SQL> select sid from v$mystat where rownum=1;

SID
----------
125

3 在什么都没有操作的情况下:
SQL> select sid,paddr,PGA_USED_MEM/1024/1024,PGA_ALLOC_MEM,PGA_MAX_MEM from v$session s,v$process p where s.sid=125 and s.paddr = p.addr;

SID PADDR PGA_USED_MEM/1024/1024 PGA_ALLOC_MEM PGA_MAX_MEM
---------- ---------------- ---------------------- ------------- -----------
125 00000000BB4FA8F0 2.51234436 5400392 19442152

2.5M是非工作区(连接所占用的内存) linux一般的连接时2-5M

手动管理
workarea_size_policy string manual;
SQL> show parameter pga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 101M 参数就没有作用了。

4.执行排序:
125 00000000BB4FA8F0 2.51234436 5400392 19442152

SQL> SELECT * FROM caoyf_t1,caoyf_t2 order by 1,2,3 ;

SQL> select sid,paddr,PGA_USED_MEM/1024/1024,PGA_ALLOC_MEM,PGA_MAX_MEM from v$session s,v$process p where s.sid=125 and s.paddr = p.addr;

SID PADDR PGA_USED_MEM/1024/1024 PGA_ALLOC_MEM PGA_MAX_MEM
---------- ---------------- ---------------------- ------------- -----------

SQL> select sid,paddr,PGA_USED_MEM/1024/1024,PGA_ALLOC_MEM,PGA_MAX_MEM from v$session s,v$process p where s.sid=125 and s.paddr = p.addr;

SID PADDR PGA_USED_MEM/1024/1024 PGA_ALLOC_MEM PGA_MAX_MEM
---------- ---------------- ---------------------- ------------- -----------
125 00000000BB4FA8F0 91.8235092 121071432 121071432

SQL> select sid,paddr,PGA_USED_MEM/1024/1024,PGA_ALLOC_MEM,PGA_MAX_MEM from v$session s,v$process p where s.sid=125 and s.paddr = p.addr;

SID PADDR PGA_USED_MEM/1024/1024 PGA_ALLOC_MEM PGA_MAX_MEM
---------- ---------------- ---------------------- ------------- -----------
125 00000000BB4FA8F0 95.5553055 121071432 121071432

我这边是设置为105M ,但是最大使用了113

有两个隐含参数:

_pga_max_size
_smm_max_size

可以修改最大限制

时间: 2024-11-03 00:52:48

PGA的相关文章

使用SwingBench测试连接数以及修改连接数和pga

使用SwingBench工具对oracle环境进行压力测试,100个用户,就提示连接数不够: 后台日志报错: ? 1 2 3 4 5 Errors in file /oracle/admin/dbcc/bdump/dbcc_smon_3317.trc: ORA-00018: maximum number of sessions exceeded Thu May 29 09:14:50 2014 Adjusting the default value of parameter parallel_m

ORACLE PGA introduction

理解PGA PGA(program grlobal area or process global area)指服务进程的私有内存空间,包括服务进程全局变量,数据结构和控制信息,如服务进程SQL查询的游标,PGA包括以下结构: 私有SQL区域: 存储服务进程执行SQL所需要的私有数据和控制结构,包括固定区域和运行区域(runtimearea).固定区域数据在SQL游标关闭之前一直存在,运行区域在SQL执行时存在(如INSERT.DELETE及UPDATE执行完成后释放运行区域,SELECT语句只有

Oracle12c 新特性:限制PGA使用内存的大小

我们都知道,在12c之前,对于PGA内存的管理是使用PGA_AGGREGATE_TARGET参数来控制的,但这个参数也只是一个参考值,Oracle实例只是尽量保证总的PGA使用量在这个值范围内,当会话使用的PGA内存超过这个限制时,Oracle也不能做出什么强制措施来限制使用内存的大小. 12.1.0.1版本中引入了新特性:使用PGA_AGGREGATE_LIMIT参数来限制Oracle实例PGA使用内存的上限.后台进程ckpt每三秒检查一次PGA使用的内存总量,如果超过限制就采取终止会话的方式

初始建库SGA该设多大、PGA该设多大的建议

1.背景情况 很多新业务系统上线,大部分DBA也不懂业务,就闷着头建库,SGA值设多大,PGA设多大,随便指定一个值就得了,运行一段时间后,也许就因为这个值是随便指定的,例如SGA+PGA大于总物理内存,SGA值或PGA值太小等等,造成DOWN机或性能低下的情况,屡见不鲜. 其实,SGA初始设置多大,PGA初始设置多大,在OLTP系统上该怎么设,在OLAP系统上又该怎么设,ORACLE是有说法的. 2.ORACLE实例总占用内存规划 2.1下面是ORACLE官方的建议 Assume that a

Oracle实例内存(SGA和PGA)调整

一.名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2)共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区).  共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息. (3)缓冲

Oracle sga、pga介绍修改

oracle推荐OLTP(on-line TransactionProcessing)系统oracle占系统总内存的80%,然后再分配80%给SGA,20%给PGA.也就是 SGA=system_total_memory*80%*80% PGA=system_total_memory*80%*20% 1.SGA系统全局区 SGA指系统全局区域(System GlobalArea),是用于存储数据库信息的内存区,该信息为数据库进程所共享. 设置SGA时,理论上SGA可占OS系统物理内存的1/2--

Oracle PGA

PGA:他也是一块内存区.可是和SGA不同,他不是共享的.而是私有的.用户对数据库发起的不管是查询还是更新的不论什么操作,都是在PGA先预处理.然后接下来才进入instance区域,由SGA 和一系列后台进程共同完毕用户发起的请求. PGA作用: 1,保存用户的连接信息 2,保存用户的权限信息 3,为排序提供内存支持

PGA和UGA内存的使用情况

引用thomas kyte的PGA和UGA的统计内存的使用情况,用排序区不同的大小来查看pga.UGA.物理读取不同内存使用 会话1:创建测试表和测试不同排序大小 create table t as select * from all_objects; exec dbms_stats.gather_table_stats( user, 'T' ); 创建测试表 创建run_query脚本:用于控制内存参数排序区(sort_area_size)的大小和表的排序 connect glltabspac

Oracle 11g 体系结构 --SGA PGA 前后台进程

Oracle服务器主要由实例.数据库.程序全局区.前台进程 实例:用来提供管理数据库的功能 数据库:由Oracle数据库文件组成,用来存储系统数据 ;一般有:数据文件.控制文件.重做日志文件 而实例可以进一步划分为:系统全局区(SGA)和 后台进程(PMON,SMON等) 而SGA 是操作系统的内存资源,后台进程使用CPU和内存资源  程序全局区(PGA)是一个非共享的内存区域,用于管理用户进程的私有资源 系统全局区(SGA) System Global Area 是所有用户进程共享的一块内存区

专题实验 PGA

PGA : 是完全为 server process 服务的, 在 server process 创建时被分配到, 在server process 终止时被释放. 而且是非共享的, 只独立服务于这个server process. (server process 的私有内存空间) 作用: 1. 存储server process 执行SQL所需要的私有数据和控制文件 2. 会话空间, 存放 session 等相关信息 3. SQL工作区: 排序操作(orader by/group by/distinc