楼主: wa0362

[精华] 近期整理(二)--pga,sga设置问题的两个诊断案例

[复制链接]
论坛徽章:
5
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53奥运会纪念徽章:游泳
日期:2008-10-24 13:22:07授权会员
日期:2009-03-16 16:29:00
11#
发表于 2008-7-1 09:57 | 只看该作者
很好的分析,受益了,感谢!
问一下:sga_max_size,sga_target,pga_aggregate_target后来你分别设置成多少?

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
42
奥运会纪念徽章:跳水
日期:2008-09-08 16:00:45茶鸡蛋
日期:2013-01-18 12:36:552013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2013-03-28 19:57:20茶鸡蛋
日期:2013-07-05 08:59:54茶鸡蛋
日期:2013-07-08 10:01:05福特
日期:2013-08-06 10:13:26马上有车
日期:2014-03-26 10:47:51马上有对象
日期:2014-04-28 13:43:04马上有钱
日期:2014-07-19 16:38:11
12#
 楼主| 发表于 2008-7-1 11:32 | 只看该作者
原帖由 rollingpig 于 2008-7-1 09:29 发表
不错,加精予以鼓励~~


注册这么多年 终于也有个精华阿

使用道具 举报

回复
论坛徽章:
10
奥运会纪念徽章:乒乓球
日期:2008-08-20 08:12:03暖羊羊
日期:2015-05-08 15:43:032010广州亚运会纪念徽章:网球
日期:2011-03-17 17:35:492011新春纪念徽章
日期:2011-03-01 17:09:142010年世界杯参赛球队:法国
日期:2010-08-16 09:49:242010年世界杯参赛球队:墨西哥
日期:2010-06-30 15:14:36生肖徽章2007版:蛇
日期:2009-08-30 09:36:07生肖徽章2007版:牛
日期:2009-02-05 15:35:10生肖徽章2007版:鼠
日期:2008-11-22 12:34:37双鱼座
日期:2015-09-21 10:40:02
13#
发表于 2008-7-1 12:47 | 只看该作者
顶!

使用道具 举报

回复
论坛徽章:
125
ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15NBA季后赛纪念徽章
日期:2011-06-13 11:34:51欧洲冠军杯纪念徽章
日期:2011-05-30 17:39:52NBA常规赛纪念章
日期:2011-04-15 13:34:112011新春纪念徽章
日期:2011-02-18 11:43:342011新春纪念徽章
日期:2011-01-16 22:27:502011新春纪念徽章
日期:2011-01-04 10:24:022010广州亚运会纪念徽章:橄榄球
日期:2010-12-22 23:50:552010广州亚运会纪念徽章:乒乓球
日期:2010-11-03 12:50:58
14#
发表于 2008-7-1 14:45 | 只看该作者
不错   支持

使用道具 举报

回复
论坛徽章:
46
生肖徽章2007版:鼠
日期:2008-01-02 17:35:53NBA常规赛纪念章
日期:2011-04-15 13:34:11NBA大富翁
日期:2011-04-15 13:36:26ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31蜘蛛蛋
日期:2012-11-28 09:01:522013年新春福章
日期:2013-02-25 14:51:24雪铁龙
日期:2013-09-28 22:52:11ITPUB社区12周年站庆徽章
日期:2013-10-08 14:53:15
15#
发表于 2008-7-1 15:44 | 只看该作者
我们这里也出了一个和lz第2个例子一样的问题

使用道具 举报

回复
论坛徽章:
242
蛋疼蛋
日期:2013-01-29 11:27:262013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-10-08 14:56:08
16#
发表于 2008-7-3 10:25 | 只看该作者
mark

使用道具 举报

回复
论坛徽章:
7
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53嫦娥
日期:2008-07-08 11:25:29奥运会纪念徽章:垒球
日期:2008-07-22 23:37:50奥运会纪念徽章:跳水
日期:2008-07-31 22:00:562010新春纪念徽章
日期:2010-01-04 08:33:08
17#
发表于 2008-7-3 14:05 | 只看该作者
案例一的问题direct path write temp碰到过,当时的现象就是TOP WAIT这个事件,同时临时空间撑大到了10多个G,PGA_AGGREGATE_TARGET设为1g,总共内存为4g,SORE_AREA_SIZE调大到了500m,同时优化了SQL,后来再没有发生问题过,临时空间也没有撑大过

使用道具 举报

回复
论坛徽章:
27
会员2006贡献徽章
日期:2006-04-17 13:46:34奥运会纪念徽章:自行车
日期:2008-09-04 16:35:57数据库板块每日发贴之星
日期:2008-09-24 01:03:37生肖徽章2007版:鼠
日期:2008-11-14 12:38:47生肖徽章2007版:马
日期:2008-11-24 08:53:01生肖徽章2007版:羊
日期:2008-12-05 09:36:23生肖徽章2007版:龙
日期:2008-12-08 09:33:53八级虎吧徽章
日期:2008-12-08 16:10:58数据库板块每日发贴之星
日期:2008-12-09 01:01:05生肖徽章2007版:龙
日期:2009-03-16 17:39:22
18#
发表于 2008-7-3 14:56 | 只看该作者
有经验的一般碰到这个情况就应该考虑到这个问题了

使用道具 举报

回复
论坛徽章:
7
生肖徽章2007版:虎
日期:2008-11-27 11:47:282009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:狗
日期:2009-03-10 21:24:292009日食纪念
日期:2009-07-22 09:30:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00参与WIN7挑战赛纪念
日期:2009-11-06 14:50:07
19#
发表于 2008-7-3 17:20 | 只看该作者
学习

使用道具 举报

回复
论坛徽章:
11
授权会员
日期:2007-07-08 18:54:592009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:蛇
日期:2008-10-24 16:46:51奥运会纪念徽章:现代五项
日期:2008-10-24 13:26:49生肖徽章2007版:羊
日期:2008-04-17 18:05:112008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
20#
发表于 2008-7-3 21:31 | 只看该作者
原帖由 wa0362 于 2008-6-30 10:45 发表
案例1:

关键词:direct path write temp

这是开发人员反馈的问题:
有个程序查询差不多需要返回20多万个对象,在DEV和SIT都没问题,但在pre-production就跑不出来
开始以为这个库没跑dbms_stats,结果执行了dbms_stats之后仍然老样子。
并且在执行这个查询的时候app server和db server负载都不高...怪了。
抓了一下当时的awr report
但是系统负载并不高:

Load Profile
~~~~~~~~~~~~                            Per Second       Per Transaction
                                   ---------------       ---------------
                  Redo size:              4,535.44              2,351.49
              Logical reads:                125.43                 65.03
              Block changes:                 16.73                  8.67
             Physical reads:                 24.76                 12.84
            Physical writes:                  8.57                  4.44
                 User calls:                 28.02                 14.53
                     Parses:                  7.09                  3.68
                Hard parses:                  0.01                  0.01
                      Sorts:                  1.03                  0.53
                     Logons:                  0.05                  0.02

Top 等待事件倒是挺特殊:direct path write temp
Top 5 Timed Events                                         Avg %Total
~~~~~~~~~~~~~~~~~~                                        wait   Call
Event                                 Waits    Time (s)   (ms)   Time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
direct path write temp                4,346          59     14   62.0   User I/O
CPU time                                             25          26.5
db file parallel write                  187          15     82   16.0 System I/O
log file sync                         1,887          15      8   16.0     Commit
log file parallel write               2,006          15      8   15.8 System I/O


官方说明:direct path write and direct path write temp
When a process is writing buffers directly from PGA (as opposed to the DBWR writing them from the buffer cache), the process waits on this event for the write call to complete. Operations that could perform direct path writes include when a sort goes to disk, during parallel DML operations, direct-path INSERTs, parallel create table as select, and some LOB operations.
Like direct path reads, the number of waits is not the same as number of write calls issued if the I/O subsystem supports asynchronous writes. The session waits if it has processed all buffers in the PGA and is unable to continue work until an I/O request completes.

Causes
This happens in the following situations:
1) Sorts are too large to fit in memory and are written to disk
2) Parallel DML are issued to create/populate objects
3) Direct path loads
1不符合,因为awr report中:In-memory Sort %: 100.00
2不符合,没有开parallel,执行的查询也是程序来完成的
3不符合,执行的操作是个查询

到这里陷入迷茫,继续往下看report:
Elapsed      CPU                  Elap per % Total
Time (s)   Time (s) Executions   Exec (s) DB Time    SQL Id
---------- ---------- ------------ ---------- ------- -------------
        68          6            1       67.6    70.7 f2zymmdhuzvxj
Module: JDBC Thin Client
SELECT 'wt.part.WTPart',A0.blob$entrySetadHocAcl,A0.checkoutInfoIsNull,A0.classn
amekeyA2checkoutInfo,A0.idA3A2checkoutInfo,A0.statecheckoutInfo,A0.classnamekeyc
ontainerReferen,A0.idA3containerReference,A0.contractNumber,A0.classnamekeydomai
nRef,A0.idA3domainRef,A0.entrySetadHocAcl,A0.eventSet,A0.classnamekeyA2foldering

这条语句引起了怀疑,问了开发人员,应用确实是这个查询。
顺手抓了它的执行计划:

SQL> set linesize 200
SQL> set pagesize 9999
SQL> SELECT * FROM TABLE(dbms_xplan.display_awr('f2zymmdhuzvxj'));
。。。。省略了sql
Plan hash value: 1054932678
---------------------------------------------------------------------------------------------------------------------------
| Id | Operation                     | Name                      | Rows | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                              |              |            |               | 27177 (100)|          |
|   1 | HASH JOIN                   |                              |   574K   |   329M|  115M     | 27177   (1)  | 00:06:21 |
|   2 |   TABLE ACCESS FULL  | WTPARTMASTER     |   686K | 107M    |              | 2935   (1)     | 00:00:42 |
|   3 |   TABLE ACCESS FULL  | WTPART                  |   574K |   239M |              | 8804   (1)      | 00:02:04 |
---------------------------------------------------------------------------------------------------------------------------

到这里就知道direct path write temp的原因了:
查询结果太大,使用了hash join,结果没有在pga里放下(hash join是在pga中完成的),于是使用了tempspace.从pga直接读写tempspace,自然就会有direct path write temp等待。

根本原因:
这个库是开发人员安装程序时应用自动创建的,pga和sga等值都太小了,调整之后就没有任何问题了




写的不错,但这个问题要找出来责任人,这条sql审核不是难点,规范流程。这个的sql差点就跑到production。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表