【深入解析--eygle】 学习笔记

1.2.3 PGA的管理:

sys@felix SQL>show parameter area_size

NAME                                 TYPE                   VALUE
------------------------------------ ----------------------------------------------------
bitmap_merge_area_size integer 1048576
create_bitmap_area_size integer 8388608
hash_area_size integer 131072
sort_area_size integer 65536
workarea_size_policy string AUTO

自己主动化SQL运行内存管理(Automated SQL Execution Memory Management),也称为自己主动PGA管理,使用这个新特性,Oracle能够在一个整体PGA使用限制下自己主动管理和调整SQL内存区,从而大大简化了DBA的工作,同一时候也ᨀ高了数据库的性能。

为实现自己主动的PGA管理,Oracle引入了几个新的初始化參数:

(1)PGA_AGGREGATE_TARGET 此參数用来指定全部session 总计能够使用最大PGA内存。这个參数能够被动态的更改,取值范围从10M  ~(4096G-1 )bytes。

(2)WORKAREA_SIZE_POLICY此參数用于开关PGA内存自己主动管理功能,该參数有两个选项:AUTO  和  MANUAL,当 设 置为AUTO时,数据库使用自己主动PGA管理功能,当设置为MANUAL时,则仍然使用之前手工管理的方式。

缺省的,WORKAREA_SIZE_POLICY參数被设置为AUTO。

sys@felix SQL>show parameterWORKAREA_SIZE_POLIC

NAME                                 TYPE                   VALUE
---------------------------------------------------------- --------
workarea_size_policy string AUTO

此外须要注意的是,在不同版本号中,自己主动PGA管理的范畴不同:

(1)在Oracle9i中,PGA_AGGREGATE_TARGET參数仅对专用server模式下(DedicatedServer)的专属连接有效,可是对共享server(Shared Server)连接无效

(2)从Oracle10g開始PGA_AGGREGATE_TARGET对专用server连接和共享server连接同一时候生效。

1.2.4 參数的设置与内存分配

工作区性能期望实现例如以下目标:



workarea execution - optimal >= 90%

workarea execution - multipass = 0%

生产系统的PGA性能指标脚本:

SELECT NAME,
VALUE,
100 *
(VALUE / DECODE((SELECT SUM(VALUE)
FROM v$sysstat
WHERE NAME LIKE'workarea executions%'),
0,
NULL,
(SELECT SUM(VALUE)
FROM v$sysstat
WHERE NAME LIKE'workarea executions%'))) pct
FROMv$sysstat
WHERE NAMELIKE 'workarea executions%';

<strong>sys@felix SQL>select description,dest fromx$messages where description like 'SQL Memory%';

DESCRIPTION                                        DEST
-------------------------------------------------- ----------
SQL Memory Management Calculation CKPT 15:26:04 sys@felix SQL></strong>
sys@felix SQL>select * from v$pgastat;

NAME                                          VALUE UNIT
---------------------------------------- ---------- ------------------------
aggregate PGA target parameter 146800640 bytes
aggregate PGA auto target 22099968 bytes
global memory bound 29360128 bytes
total PGA inuse 122360832 bytes
total PGA allocated 144107520 bytes
maximum PGA allocated 163160064 bytes
total freeable PGA memory 11141120 bytes
process count 32
max processes count 36
PGA memory freed back to OS 374669312 bytes
total PGA used for auto workareas 0 bytes
maximum PGA used for auto workareas 6313984 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 0 bytes
over allocation count 0
bytes processed 232915968 bytes
extra bytes read/written 0 bytes
cache hit percentage 100 percent
recompute count (total) 6004 19 rows selected.

1.2.6 PGA调整建议

伴随自己主动PGA调整功能的引入,Oracle同一时候引入对应的动态性能视图用于优化建议,PGA的优化建议通过v$pga_target_advice  和  v$pga_target_advice_histogra提供。v$pga_target_advice视图通过对不同PGA设置进行评估,给出在不同设置下的PGA命中率和OverAlloc等信息。

15:32:23 sys@felix SQL>select PGA_TARGET_FOR_ESTIMATE/1024/1024 PGAMB, PGA_TARGET_FACTOR,
15:37:08 2 ESTD_PGA_CACHE_HIT_PERCENTAGE, ESTD_OVERALLOC_COUNT
15:37:08 3 from v$pga_target_advice; PGAMB PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
---------- ----------------- ----------------------------- --------------------
17.5 .125 85 4
35 .25 85 4
70 .5 85 4
105 .75 85 4
140 1 100 0
168 1.2 100 0
196 1.4 100 0
224 1.6 100 0
252 1.8 100 0
280 2 100 0
420 3 100 0
560 4 100 0
840 6 100 0
1120 8 100 0

v$pga_target_advice_histogram 视图能够通过对不同工作区大小的採样评估ᨀ供统计信息

供分析使用。当中几个重要字段有:

(1)LOW_OPTIMAL_SIZE-Histogram评估区间内Optimal下限  (bytes)

(2)HIGH_OPTIMAL_SIZE-Histogram评估区间内Optimal上限  (bytes)

(3)ESTD_OPTIMAL_EXECUTIONS-Histogram评估区间内预计optimal运行次数

(4)ESTD_ONEPASS_EXECUTIONS-Histogram评估区间内预计onepass运行次数

(5)ESTD_MULTIPASSES_EXECUTIONS-Histogram评估区间内预计multipass运行次数

(6)ESTD_TOTAL_EXECUTIONS-Histogram评估区间内预计运行总次数

SELECT pga_target_factor factor,
low_optimal_size / 1024 low,
ROUND(high_optimal_size / 1024) high,
estd_optimal_executions estd_opt,
estd_onepass_executions estd_op,
estd_multipasses_executions estd_mp,
estd_total_executions estd_exec
FROM v$pga_target_advice_histogram
WHERE pga_target_factor = 0.25
AND estd_total_executions > 0;
</pre><pre name="code" class="html"><img src="http://img.blog.csdn.net/20140727143007260?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGFuZmVsaXg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> heap name="pga heap"  desc=0xbaf3ca0   --注意这里</span></strong></span>
 extentsz=0x20c0 alt=216 het=32767 rec=0 flg=3 opc=2
parent=(nil)owner=(nil) nex=(nil) xsz=0xfff0 heap=(nil)
fl2=0x60,nex=(nil), dsxvers=1, dsxflg=0x0
dsx firstext=0xf7fa7720
EXTENT 0 addr=0x7fadf7c72010
Chunk 7fadf7c72020 sz= 65504 free " "
EXTENT 1 addr=0x7fadf7d00010
Chunk 7fadf7d00020 sz= 28920 perm "perm " alo=9384
Chunk 7fadf7d07118 sz= 7656 free " "
Chunk 7fadf7d08f00 sz= 4224 freeable "diag pga " ds=0x7fadf82157e0
Chunk 7fadf7d09f80 sz= 4224 freeable "diag pga " ds=0x7fadf82157e0
/heap
Chunk 7fadf7fd28d0 sz= 7608 perm "perm " alo=7608
Chunk 7fadf7fd4688 sz= 40 free " "
Chunk 7fadf7fd46b0 sz= 80 freeable "dbgdInitEventGr"
Chunk 7fadf7fd4700 sz= 184 freeable "sdbgrf: iosb "
Chunk 7fadf7fd47b8 sz= 80 freeable "skgfzctx "
Chunk 7fadf7fd4808 sz= 376 freeable "PLS cca hpdesc"
EXTENT 18 addr=0x7fadf7fcd860
Chunk 7fadf7fcd870 sz= 20512 perm "perm " alo=20512
EXTENT 19 addr=0x7fadf7fc9958
Chunk 7fadf7fc9968 sz= 16072 perm "perm " alo=16072
EXTENT 20 addr=0x7fadf7fc7868
Chunk 7fadf7fc7878 sz= 3240 perm "perm " alo=3240
Chunk 7fadf7fc8520 sz= 3184 perm "perm " alo=3184
Chunk 7fadf7fc9190 sz= 1088 perm "perm " alo=1088
Chunk 7fadf7fc95d0 sz= 168 perm "perm " alo=168
Chunk 7fadf7fc9678 sz= 48 free " "
Chunk 7fadf7fc96a8 sz= 72 freeable "koh-kghu callh"
Chunk 7fadf7fc96f0 sz= 568 freeable "joxp heap "
EXTENT 21 addr=0x7fadf7fc5778
Chunk 7fadf7fc5788 sz= 4848 perm "perm " alo=4848
Chunk 7fadf7fc6a78 sz= 440 freeable "krbabrPgaRespMs"
Chunk 7fadf7fc6c30 sz= 56 freeable "krbabrPgaReqCtx"
Chunk 7fadf7fc6c68 sz= 424 freeable "krbabrPgaReqMsg"
Chunk 7fadf7fc6e10 sz= 2600 freeable "kjztprq struct"
EXTENT 22 addr=0x7fadf7fc3688
Chunk 7fadf7fc3698 sz= 7720 perm "perm " alo=7720
Chunk 7fadf7fc54c0 sz= 160 freeable "regheapd_kdlwpg"
Chunk 7fadf7fc5560 sz= 88 freeable "KCFIS GCTX "
Chunk 7fadf7fc55b8 sz= 400 freeable "krbabrPgaStbyRe"
EXTENT 23 addr=0x7fadf7fb5e28
Chunk 7fadf7fb5e38 sz= 55328 perm "perm " alo=55328
EXTENT 24 addr=0x7fadf7fb3d38
Chunk 7fadf7fb3d48 sz= 4888 perm "perm " alo=4888
Chunk 7fadf7fb5060 sz= 2992 recreate "KSFQ heap " latch=(nil)

进一步的,能够将某个详细的数据存储结构转储出来(DS),如 以 上 的ds dcd00c0其空间使用的大小为  sz= 14036,首先对空间地址进行一下转换:

select to_number('baf3ca0','xxxxxxxxxx') from dual
15:50:33 sys@felix SQL>/ TO_NUMBER('BAF3CA0','XXXXXXXXXX')
---------------------------------
196033696 15:50:33 sys@felix SQL>

使用例如以下命令转储固定地址空间的内容:

alter session set events'immediate trace name heapdump_addr level 1, addr n';

以上计算的地址空间能够通过例如以下命令转储:

SQL> ALTER SESSIONSET EVENTS 'immediate trace name heapdump_addr level 1, addr 196033696';

Session altered.

获取转储文件的脚本:

SELECT a.VALUE || b.symbol || c.instance_name || '_ora_' || d.spid ||
'.trc' trace_file
FROM (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') a,
(SELECT SUBSTR(VALUE, -6, 1) symbol
FROM v$parameter
WHERE NAME = 'user_dump_dest') b,
(SELECT instance_name FROM v$instance) c,
(SELECT spid
FROM v$session s, v$process p, v$mystat m
WHERE s.paddr = p.addr
AND s.SID = m.SID
AND m.statistic# = 0) d;

检查这个进程转储文件,能够发现例如以下Heap地址信息及空间分配:

[oracle@felix ~]$grep heap  /u01/app/oracle/diag/rdbms/felix/felix/trace/felix_ora_6443.trc
<strong><span style="color:#ff0000;">HEAP DUMP heap name="pga heap" desc=0xbaf3ca0</span></strong>
parent=(nil) owner=(nil) nex=(nil) xsz=0xfff0 heap=(nil)
Chunk 7fadf7fc96f0 sz= 568 freeable "joxp heap "
Chunk 7fadf7fc54c0 sz= 160 freeable "regheapd_kdlwpg"
Chunk 7fadf7fb5060 sz= 2992 recreate "KSFQ heap " latch=(nil)
Chunk 7fadf7fb5c10 sz= 160 freeable "KSFQ heap descr"
Chunk 7fadf7fb0790 sz= 232 freeable "iovecheapd_kdlw"
Chunk 7fadf7fb0878 sz= 304 freeable "bcheapd_kdlwpga"
Chunk 7fadf7fb09a8 sz= 208 freeable "sioheapd_kdlwpg"
Chunk 7fadf7fb0ad8 sz= 160 freeable "KSZ pga subheap"
Total heap size = 499952
<strong><span style="color:#ff0000;">HEAP DUMP heap name="top call heap" desc=0xbaf94e0</span></strong>
parent=(nil) owner=(nil) nex=(nil) xsz=0xfff8 heap=(nil)
Chunk 7fadf7ccb7d8 sz= 1032 recreate "callheap " latch=(nil)
Chunk 7fadf7cceb78 sz= 4224 freeable "callheap " ds=0xbaf85c0
Chunk 7fadf7ccfbf8 sz= 1032 recreate "callheap " latch=(nil)
Total heap size = 524096
<strong><span style="color:#ff0000;">HEAP DUMP heap name="top uga heap"  desc=0xbaf9700</span></strong>
parent=(nil) owner=(nil) nex=(nil) xsz=0xfff8 heap=(nil)
Chunk 7fadf7c62018 sz= 65512 freeable "session heap " ds=0x7fadf7cd5be0
Chunk 7fadf7d10018 sz= 65512 freeable "session heap " ds=0x7fadf7cd5be0
Chunk 7fadf7cf0018 sz= 65512 freeable "session heap " ds=0x7fadf7cd5be0
Chunk 7fadf7ce0068 sz= 65432 recreate "session heap " latch=(nil)
Total heap size = 262048
<strong><span style="color:#ff0000;">HEAP DUMP heap name="pga heap" desc=0xbaf3ca0</span></strong>
parent=(nil) owner=(nil) nex=(nil) xsz=0x1fff0 heap=(nil)
Chunk 7fadf7fc96f0 sz= 568 freeable "joxp heap "
Chunk 7fadf7fc54c0 sz= 160 freeable "regheapd_kdlwpg"
Chunk 7fadf7fb5060 sz= 2992 recreate "KSFQ heap " latch=(nil)
Chunk 7fadf7fb5c10 sz= 160 freeable "KSFQ heap descr"
Chunk 7fadf7fb0790 sz= 232 freeable "iovecheapd_kdlw"
Chunk 7fadf7fb0878 sz= 304 freeable "bcheapd_kdlwpga"
Chunk 7fadf7fb09a8 sz= 208 freeable "sioheapd_kdlwpg"
Chunk 7fadf7fb0ad8 sz= 160 freeable "KSZ pga subheap"
Total heap size = 827504

由上面红色字体可见,在自己主动管理模式下,PGA,CGA,UGA都是独立分配的。

Oracle内存结构(之三)的更多相关文章

  1. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  2. oracle 内存结构具体解释

    Oracle 内存结构 与 Oracle 实例关联的基本内存结构包含: 系统全局区 (SGA):由全部server和后台进程共享.SGA 中存储的数据演示样例包含快速缓存的数据块和共享 SQL 区域. ...

  3. JVM内存结构之三--持久代

    本文会介绍一些JVM内存结构的基本概念,然后很快会讲到持久代,来看下Java SE 8发布后它究竟到哪去了. 基础知识 JVM只不过是运行在你系统上的另一个进程而已,这一切的魔法始于一个java命令. ...

  4. Oracle内存结构:SGA PGA UGA

    内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内存结构: 一. 系统全局区  (System G ...

  5. oracle内存结构

    一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. ...

  6. Oracle 内存结构

     内存结构 Oracle内存,进程与数据库的图 sga:系统全局区,用来存放操作的数据,库缓存,数据字典等控制信息的内存区域, pga:进程全局区,服务进程专用的内存区域,大多数内容非共享 uga:用 ...

  7. 【转】Oracle基础结构认知——oracle内存结构 礼记八目 2017-12-15 20:31:27

    oracle的数据库实例是一组后台进程和内存结构组成的,而内存结构由系统全局区(system global area)和程序全局区(program global area)组成. #修改SGA和PGA ...

  8. oracle 内存结构 share pool sql解析的过程

    1.sql解析的过程 oracle首先将SQL文本转化为ASCII字符,然后根据hash函数计算其对应的hash值(hash_value).根据计算出的hash值到library cache中找到对应 ...

  9. ORACLE内存结构之SGA

    SGA的管理: SQL> show parameter sga NAME                                 TYPE        VALUE ---------- ...

随机推荐

  1. javascript常用内置对象总结(重要)

    Javascript对象总结 JS中内置了17个对象,常用的是Array对象.Date对象.正则表达式对象.string对象.Global对象 Array对象中常用方法: Concat():表示把几个 ...

  2. Dynamic Web Module 3.0 requires Java 1.6 or newer报错

    在项目的pom.xml的<build></build>标签中加入: <plugins> <plugin> <groupId>org.apac ...

  3. php开发环境安装配置(2)-eclipsephp

    使用eclipse编辑php: 1要运行eclipse需要先下载jdk(直接百度jdk就可以这里有分32位和64位) 下载安装,安装会出现安装jdk和jre不能在同一文件夹下应该分开如下即可: 2安装 ...

  4. Java 中 Comparable 和 Comparator 比较(转)

    转自http://www.cnblogs.com/skywang12345/p/3324788.html 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示 ...

  5. Kent Beck揭秘Facebook开发部署流程

    http://www.infoq.com/cn/news/2013/10/facebook-development-deployment Facebook是世界上最大的社交网站,有超过10亿用户每月至 ...

  6. PowerShell使用SMTP发送邮件

    $smtpServer = "smtp.exmail.qq.com" $smtpUser = "xxxxx@qq.com" $smtpPassword = &q ...

  7. tail tailf 使用

    tail -f tailf 用来查看日志的新增内容, tailf 能一直打印日志

  8. Unity3d Web3d资源的动态加载

    Unity3d Web3d资源的动态加载 @灰太龙 参考了宣雨松的博客,原文出处http://www.xuanyusong.com/archives/2405,如果涉及到侵权,请通知我! Unity3 ...

  9. 宏中"#"和"##"的用法

    一.一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include<cstdio> #include<climits> using nam ...

  10. Struts2+JFreeChart

    前言 关于Struts2入门以及提高等在这里就不介绍了,但是关于Struts2的学习有以下推荐: struts2-showcase-2.0.6.war:这个是官方自带的Demo(struts-2.0. ...