Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

36

积分

0

好友

14

主题
1#
发表于 2012-5-15 11:49:11 | 查看: 6087| 回复: 12
vmstat r process queue 占很多 经常>cpu count , 查询动态性能视图查询比较慢,其实主要是后台进程主机连接数据库的并发比较高,但进一步造成原因想进一步分析下。主要瓶颈出现在那里,IO 还是cpu ?

awrrpt_cxdb01.txt

813.44 KB, 下载次数: 777

2#
发表于 2012-5-15 13:07:44
Elapsed:               60.44 (mins)
   DB Time:           14,264.94 (mins)

AAS= 237 负载极高 ,系统有队列拥堵在 意料之中

Redo size:         17,012,404.62                 每秒的 redo 16MB
Logical reads:            120,116.92             每秒逻辑读 938MB
Physical reads:              9,324.95                每秒物理读 72MB

Top 5

db file sequential read  avg wait =20 ms ,  物理 read I/O 较差
PX Deq Credit: send blkd                         说明有使用parallel并行,但是并行交互本身消耗了大量时间
gc buffer busy                avg wait=70ms   global cache争用严重,结合log file sync可以知道 redo flush极慢
log file sync                    avg wait=44ms       日志文件写性能极差


Top 5 Timed Events                                         Avg %Total
~~~~~~~~~~~~~~~~~~                                        wait   Call
Event                                 Waits    Time (s)   (ms)   Time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
db file sequential read          26,334,305     515,434     20   60.2   User I/O
PX Deq Credit: send blkd          1,050,587     129,608    123   15.1      Other
gc buffer busy                      890,182      62,544     70    7.3    Cluster
CPU time                                         32,758           3.8
log file sync                       537,254      23,495     44    2.7     Commit





                                                                  Avg
                                       %Time       Total Wait    wait     Waits
Wait Class                      Waits  -outs         Time (s)    (ms)      /txn
-------------------- ---------------- ------ ---------------- ------- ---------
User I/O                   27,099,066     .0          522,856      19      51.2
Other                      18,479,696   76.9          144,094       8      34.9
Cluster                    22,765,706     .2          129,952       6      43.0
Commit                        537,254     .0           23,495      44       1.0


User I/O  和 other 类型的等待 耗费了大量的时间:

很多SQL 都加了 parallel的 hint , 但不代表parallel 有益


Module: fetchbill@cxfs02 (TNS V1-V3)
select /*+ full(a) parallel(a,4) */ rtrim(user_id) || chr(9)|| rowidtochar(row
id)|| chr(9) || rtrim(source_type) || chr(9) || rtrim(record_type)|| chr(9) ||
rtrim(ni_pdp) || chr(9) || rtrim(msisdn) || chr(9) || rtrim(start_date)|| rtrim
(start_time) || chr(9) || rtrim(imsi_number) || chr(9)|| rtrim(sgsn)|| chr(9)||


Module: SQL*Plus
INSERT INTO SMS_QS_USER_TMP NOLOGGING (S_DATE, MSISDN, SMS_CNT, FILE_SOURCE) SEL
ECT /*+parallel(t,15) */ SUBSTR(TO_CHAR(TO_DATE(T.SEND_DATE, 'yyyy/mm/dd hh24:mi
:ss'), 'yyyymmddhh24miss'), 1, 11), MSISDN, COUNT(*), FILE_SOURCE FROM SMS_QS_LO
AD_SOURCE_CDR T WHERE T.FILE_SOURCE = :B3 AND SUBSTR(T.MSISDN, 3, 11) NOT IN (SE


建议:

1.  调优I/O 减少 db file sequential read 和 log file sync的平均等待时间
2.  减少使用parallel hint的语句
3. 优化SQL 减少 物理读 和逻辑读

回复 只看该作者 道具 举报

3#
发表于 2012-5-15 14:08:47
1 AAS 负载如何计算的 :

Elapsed:               60.44 (mins)   
DB Time:           14,264.94 (mins)

cpu个数为32颗

其中cpu used by this session 3040504s
db file sequence read  515434s  60%
total = 3040504s  + 515434s  /0.6 = 3899561

cpu  3040504/3899561 =78%
db file sequence read  515434s/3899561 =13%
这样算,是否是 cpu是主要瓶颈呢?

回复 只看该作者 道具 举报

4#
发表于 2012-5-15 15:38:28
CPU time                                         32,758           3.8

cpu time= 32,758 s  仅占总 DB TIME的 3.8%

回复 只看该作者 道具 举报

5#
发表于 2012-5-15 16:06:32
能否帮我解释下 ,db time cpu time cpu by  used in this session
以及 Elapsed这个时间应该60mins × 32 为何《 db time  谢谢

回复 只看该作者 道具 举报

6#
发表于 2012-5-15 16:30:02
描述 混乱 、不清晰, 请重构你的问题

回复 只看该作者 道具 举报

7#
发表于 2012-5-15 17:01:05
想确认下db time 如何算的 快照1hour 怎么时间是 14,264.94 (mins)

回复 只看该作者 道具 举报

8#
发表于 2012-5-15 20:39:28
DB TIME是 10g 以后 反应 快照时间内 实例负载的统计信息 , 它和  elapsed  time逝去时间(自然时间) 相除 可以得到AAS average active session 反应 instance load


DB TIME : Time spent by db clients in database calls :
foreground session time
active = on CPU or in  WAIT (non -idle)
some waits problematic :idle or not?

Active Session
Session On CPU or in timed active wait(or on run-queue)
Active session are contributing to DB TIME

DB TIME is also time spent servicing calls
database as black-box server model

回复 只看该作者 道具 举报

9#
发表于 2012-5-15 23:33:34
谢谢! 学习了!

回复 只看该作者 道具 举报

10#
发表于 2012-5-16 16:09:13

回复 8# 的帖子

“DB TIME是 10g 以后 反应 快照时间内 实例负载的统计信息 , 它和  elapsed  time逝去时间(自然时间) 相除 可以得到AAS average active session 反应 instance load  ”

这个ASS 还应该参考cpu的总核数,才能较好的反应 instance load 吧?

回复 只看该作者 道具 举报

11#
发表于 2012-5-16 19:20:14

回复 10# 的帖子

一般是 需要参考CPU core 总数的, 但是在 十分夸张的AAS 下 则几乎不需要

回复 只看该作者 道具 举报

12#
发表于 2012-8-2 17:50:35
不用钱也不能下载?

回复 只看该作者 道具 举报

13#
发表于 2012-8-3 16:15:08
开启并行后,在rac 节点下引起gc cr requset

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 01:43 , Processed in 0.060011 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569