pga_aggregate_target 通常缩写为P_A_T,该参数同时限制全局pga分配和私有工作区内存分配在Oracle9i以及10gr1中,单个sql操作内存使用存在如下限制:对于串行操作,单个sql操作能够使用的pga内存按照一下原则分配:MIN(5%*PGA_AGGREGATE_TARGET,100MB)此处的5%*PGA_AGGREGATE_TARGET实际上是由_smm_nax_size决定的,该参数限制自动工作区模式下最大的工作区使用对于并行操作:30%PGA_AGGREGATE_TARGET/DOP(DOP=DEGREE IF PARALLELISM,并行度)在oracle10gr2以及oracle11g中,内存使用存在如下限制:对于串行操作,能够使用的pga内存按照以下原则分配:如果P_A_T<500MB,则_smm_max_size=20%P_A_T如果P_A_T在500MB和1000MB之间,_smm_max_size=100MB如果P_A_T介于1001MB和2560MB之间,_smm_max_size=10%*P_A_T如果P_A_T>2560MB则_smm_max_size=262060MB对于并行操作,能够使用的pga内存按照以下原则分配:50%PGA_AGGREGATE_TARGET/DOP (DOP=Degree of parallelism,并行度)但是注意,当dop<5时,_smm_max_size限制生效,并行度超过5时另外一个限制并行的参数_smm_px_max_size才会生效从oralce10g开始 pga算法受一个新增的隐含参数_newsort_abled影响,如果将该参数设置为false,则数据库会使用之前oracle9i中的算法规则:sys@ORCL>@gethidpar.sql输入 name 的值: newsort_enabled原值 4: and x.ksppinm like"%&name%"新值 4: and x.ksppinm like"%newsort_enabled%"KSPPINM KSPPSTVL_newsort_enabled TRUE上述@gethidpar.sql内容:select x.ksppinm,y.ksppstvl,x.ksppdesc from x$ksppi x,x$ksppcv y wherex.indx=y.indxand y.inst_id=userenv("Instance")and x.inst_id=userenv("Instance")and x.ksppinm like "%&name%";要理解pga的自动调整,还需要区分可调整内存(TUNABLE MEMORY SIZE) 与不可调整内存(UNTUNABLE MEMORY SIZE),可调整内存是由sql工作区使用的,其余部分是不可调整内存Oracle在评估执行计划时会更具PGA_AGGREGATE_TARGET参数评估在sort,HASH_JOIN或Bitmap操作时能够使用的最大或最小内存,从而选择最优的执行计划对于一个单纯的数据库服务器,通常我们需要保存20%的物理内存给操作系统使用,剩余80%可以分配给oracle使用,而oracle的内存由pga和sga构成,pga可以占用oracle消耗内存的20%(OLTP系统)至50%(DSS系统)通过v$process 可以查询pga的相关使用情况:V$PROCESS displays information about the currently active processes.
| Column | Datatype | Description |
| ADDR | RAW(4 | 8) | Address of the process state object |
| PID | NUMBER | Oracle process identifier |
| SPID | VARCHAR2(24) | Operating system process identifier |
| PNAME | VARCHAR2(5) | Name of this process |
| USERNAME | VARCHAR2(15) | Operating system process usernameNote: Any two-task user coming across the network has "-T" appended to the username. |
| SERIAL# | NUMBER | Process serial number |
| TERMINAL | VARCHAR2(30) | Operating system terminal identifier |
| PROGRAM | VARCHAR2(48) | Program in progress |
| TRACEID | VARCHAR2(255) | Trace file identifier |
| TRACEFILE | VARCHAR2(513) | Trace file name of the process |
| BACKGROUND | VARCHAR2(1) | 1 for a background process; NULL for a normal process |
| LATCHWAIT | VARCHAR2(8) | Address of the latch the process is waiting for; NULL if none |
| LATCHSPIN | VARCHAR2(8) | This column is obsolete |
| PGA_USED_MEM | NUMBER | PGA memory currently used by the process |
| PGA_ALLOC_MEM | NUMBER | PGA memory currently allocated by the process (including free PGA memory not yet released to the operating system by the server process) |
| PGA_FREEABLE_MEM | NUMBER | Allocated PGA memory which can be freed |
| PGA_MAX_MEM | NUMBER | Maximum PGA memory ever allocated by the process |
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-11/93191p2.htm
相关阅读:修改Oracle数据库SGA和PGA大小 http://www.linuxidc.com/Linux/2012-12/76335.htmOracle内存结构研究-PGA篇 http://www.linuxidc.com/Linux/2011-12/48474.htmOracle在专用与共享的模式下SGA和PGA的区别 http://www.linuxidc.com/Linux/2011-11/46888.htmOracle 内存管理PGA http://www.linuxidc.com/Linux/2011-07/38915.htmOracle内存全面分析之PGA http://www.linuxidc.com/Linux/2011-06/37785.htmOracle的内存分配-内存分配(SGA和PGA)SGA和PGA结构图 http://www.linuxidc.com/Linux/2011-05/35744.htm
Oracle用户管理与权限设置Oracle如???通过同义词定位对象相关资讯 Oracle内存分配 Oracle PGA
- Oracle PGA和SGA区别以及latch和 (02/10/2014 19:46:58)
- Oracle 内存分配小记 (10/07/2012 19:04:19)
| - 浅析Oracle 的体系架构及内存分配 (01/21/2013 10:00:58)
|
本文评论 查看全部评论 (0)