Welcome 微信登录

首页 / 数据库 / MySQL / Oracle中PGA内存分配原则

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.
ColumnDatatypeDescription
ADDRRAW(4 | 8)Address of the process state object
PIDNUMBEROracle process identifier
SPIDVARCHAR2(24)Operating system process identifier
PNAMEVARCHAR2(5)Name of this process
USERNAMEVARCHAR2(15)Operating system process usernameNote: Any two-task user coming across the network has "-T" appended to the username.
SERIAL#NUMBERProcess serial number
TERMINALVARCHAR2(30)Operating system terminal identifier
PROGRAMVARCHAR2(48)Program in progress
TRACEIDVARCHAR2(255)Trace file identifier
TRACEFILEVARCHAR2(513)Trace file name of the process
BACKGROUNDVARCHAR2(1)1 for a background process; NULL for a normal process
LATCHWAITVARCHAR2(8)Address of the latch the process is waiting for; NULL if none
LATCHSPINVARCHAR2(8)This column is obsolete
PGA_USED_MEMNUMBERPGA memory currently used by the process
PGA_ALLOC_MEMNUMBERPGA memory currently allocated by the process (including free PGA memory not yet released to the operating system by the server process)
PGA_FREEABLE_MEMNUMBERAllocated PGA memory which can be freed
PGA_MAX_MEMNUMBERMaximum 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
  • 1
  • 2
  • 下一页
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)
表情: 姓名: 字数