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

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

73

积分

0

好友

0

主题
1#
发表于 2011-10-31 19:23:13 | 查看: 9609| 回复: 9
各位兄弟们好!问个问题

环境:
os windows2003  db 0racle 10.2.0.4

内存 16G,cpu 16核

感觉性能慢

SQL> show parameter sga
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 584M
sga_target                           big integer 584M
SQL> show parameter pga
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 194M
SQL>


现在附上AWR报告


请各位指点下

[ 本帖最后由 wkc168 于 2011-11-4 15:13 编辑 ]

awrtadb.rar

32.36 KB, 下载次数: 863

awrrpt_1_4698_4700.rar

29.39 KB, 下载次数: 889

awrdiff_1_4640_1_4726.rar

38.96 KB, 下载次数: 870

对比的AWR分析

awrdiff_1_4640_1_4727.rar

37.88 KB, 下载次数: 892

2#
发表于 2011-10-31 19:34:37
1、data buffer较小
2、硬解析偏多
3、sql语句可能导致热点块


最大问题,增加sga大小
PHYSICAL_MEMORY_BYTES        17,168,887,808
sga_target        612368384

回复 只看该作者 道具 举报

3#
发表于 2011-11-1 20:38:41
楼主你的 AWR 快照事件跨度太久了  没有很大的参考意义

取你认为存在性能瓶颈的时段 的快照 来分析

回复 只看该作者 道具 举报

4#
发表于 2011-11-3 15:02:14
ML 我已经上传了瓶颈的AWR了

这段时间优化了些SQL 看上去性能好像好了点

但是没有很大的改善

现在的目前是这样做的 换64位系统  然后 加大SGA  PGA

回复 只看该作者 道具 举报

5#
发表于 2011-11-3 15:26:05
Snap Id        Snap Time        Sessions        Cursors/Session
Begin Snap:        4698        03-11ÔÂ-11 10:00:38        180         10.4
End Snap:        4700        03-11ÔÂ-11 12:00:16        193         11.7
Elapsed:                  119.63 (mins)                  
DB Time:                  27.76 (mins)                  

就 DB TIME 来看 , 你收集的快照时间 实例仍不是非常忙 , AAS << 1

Event        Waits        Time(s)        Avg Wait(ms)        % Total Call Time        Wait Class
CPU time                  899                  54.0         
db file sequential read         204,221         329         2         19.8        User I/O
SQL*Net more data to client         174,852         259         1         15.5        Network
db file scattered read         346,841         222         1         13.3        User I/O
direct path read         40,151         12         0         .7        User I/O


主要等待事件是 CPU TIME 和 db file sequential read

回复 只看该作者 道具 举报

6#
发表于 2011-11-3 16:08:52
ML  给点意见看


我的解决方法如何

回复 只看该作者 道具 举报

7#
发表于 2011-11-3 18:17:10
就我看到的 发表一些意见

硬解析不算很多 ,平均每秒3次

Parses:         60.16         50.05
Hard parses:         3.35         2.78

Event        Waits        Time(s)        Avg Wait(ms)        % Total Call Time        Wait Class
CPU time                  899                  54.0         
db file sequential read         204,221         329         2         19.8        User I/O

db file sequential read  平均io 等待为2ms  操作系统缓存在起作用

Buffer Pool Advisory
Only rows with estimated physical reads >0 are displayed
ordered by Block Size, Buffers For Estimate
P        Size for Est (M)        Size Factor        Buffers for Estimate        Est Phys Read Factor        Estimated Physical Reads
D        36        0.09        4,491        2.10        187,326,451
D        72        0.18        8,982        1.87        166,550,313
D        108        0.27        13,473        1.66        148,443,760
D        144        0.36        17,964        1.50        133,552,337
D        180        0.45        22,455        1.37        121,751,580
D        216        0.55        26,946        1.26        112,584,279
D        252        0.64        31,437        1.18        105,438,518
D        288        0.73        35,928        1.12        99,792,089
D        324        0.82        40,419        1.07        95,267,560
D        360        0.91        44,910        1.03        91,663,604
D        396        1.00        49,401        1.00        89,179,257
D        432        1.09        53,892        0.98        87,199,861
D        468        1.18        58,383        0.96        85,595,385
D        504        1.27        62,874        0.94        84,244,192
D        540        1.36        67,365        0.93        83,058,569
D        576        1.45        71,856        0.92        81,979,215
D        612        1.55        76,347        0.91        80,963,420
D        648        1.64        80,838        0.90        79,966,878
D        684        1.73        85,329        0.89        78,930,311
D        720        1.82        89,820        0.87        77,808,683


Buffer Pool Advisory  给出的预期是 db_cache_size 增大到 720M 只能减少 13%的物理读

你的感觉可能是 应用很慢 ,但是从你发给我看的这个AWR 来看 数据库比较闲

SQL*Net more data to client         174,852         259         1         15.5        Network

SQL * NET to client 的次数有点多 , 建议检查下网络

回复 只看该作者 道具 举报

8#
发表于 2011-11-4 14:18:36
刘 我做了个对比的AWR分析   帮看下 ML

回复 只看该作者 道具 举报

9#
发表于 2011-11-4 15:30:59
语句


SELECT a.wareid, i.buyer, d.producer, max(d.warename), max(d.warespec), max(d.producer), max(d.wareunit),
(select username FROM c_user u WHERE i.buyer = u.userid), sum(a.wareqty), sum(round(a.wareqty*a.whlprice, 2)),
sum(round(a.wareqty*a.prediswhlprice, 2)) , sum(round(a.wareqty*a.prediswhlprice, 2))-sum(round(a.wareqty*a.purprice, 2)) ,
case when sum(round(a.wareqty*a.prediswhlprice, 2)) = 0 then 0 else (sum(round (a.wareqty*a.prediswhlprice, 2))-sum(round(a.wareqty*a.purprice, 2))) / sum(round (a.wareqty*a.prediswhlprice, 2)) end , sum(case when a.paytype='02' then 0 else round(a.wareqty*a.whlprice, 2) end ) ,
    sum(round(a.wareqty*a.purprice, 2)),
    sum(round(a.wareqty*a.whlprice, 2))-sum(round(a.wareqty*a.purprice, 2)),
    sum(round(a.wareqty*a.whlprice, 2))-sum(round(a.wareqty*case when a.backprice > 0 then a.backprice else a.purprice end, 2)) ,
     case when sum(round(a.wareqty*a.whlprice, 2)) = 0 then 0 else (sum(round(a.wareqty*a.whlprice, 2))-sum(round(a.wareqty*a.purprice, 2)) ) / sum(round(a.wareqty*a.whlprice, 2)) end ,
       sum(round(a.purprice*a.wareqty, 2))-sum(round(case when a.backprice > 0 then a.backprice else a.purprice end*a.wareqty, 2)),
        sum(round(a.wareqty*(case when a.highpurprice=0 then a.purprice else a.highpurprice end ), 2)) ,
        sum(round(a.wareqty*a.whlprice, 2))-sum(round(a.wareqty*(case when a.highpurprice=0 then a.purprice else a.highpurprice end ), 2)) ,
         case when sum(round(a.wareqty*a.whlprice, 2)) = 0 then 0 else (sum(round(a.wareqty*a.whlprice, 2))-sum(round(a.wareqty*(case when a.highpurprice=0 then a.purprice else a.highpurprice end ), 2)) ) / sum(round(a.wareqty*a.whlprice, 2)) end
           from r_whl a inner join u_Custom b on a.customid = b.customid
           inner join u_ware_q d on a.wareid=d.wareid
            left join u_store_i i on a.wareid=i.wareid and a.batchno =i.batchno and a.idno=i.idno
            where 1=1 and a.busno in (select busno from c_org_busi where org_tran_code = f_sys_ini('1001')) and
            ( a.execdate between to_date('2011-07-01', 'yyyy-mm-dd') and to_date('2011-07-31', 'yyyy-mm-dd') + 1 - 0.000012 and a.vendorno = '3436' )
            GROUP BY a.wareid, i.buyer, d.producer




执行计划

已选择18行。

已用时间:  00: 00: 03.04

执行计划
----------------------------------------------------------
Plan hash value: 2205347730

----------------------------------------------------------------------------------------------
| Id  | Operation                      | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |             |    25 |  4500 |  7050   (7)| 00:01:25 |
|   1 |  TABLE ACCESS BY INDEX ROWID   | C_USER      |     1 |    12 |     2   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN            | SYS_C006285 |     1 |       |     1   (0)| 00:00:01 |
|   3 |  HASH GROUP BY                 |             |    25 |  4500 |  7050   (7)| 00:01:25 |
|   4 |   NESTED LOOPS OUTER           |             |    25 |  4500 |  7049   (7)| 00:01:25 |
|   5 |    NESTED LOOPS                |             |    25 |  3725 |  7048   (7)| 00:01:25 |
|   6 |     NESTED LOOPS               |             |    25 |  2200 |  7023   (7)| 00:01:25 |
|*  7 |      HASH JOIN                 |             |    25 |  2050 |  7023   (7)| 00:01:25 |
|*  8 |       TABLE ACCESS FULL        | C_ORG_BUSI  |     2 |    14 |     3   (0)| 00:00:01 |
|*  9 |       TABLE ACCESS FULL        | R_WHL       |    74 |  5550 |  7020   (7)| 00:01:25 |
|* 10 |      INDEX UNIQUE SCAN         | SYS_C007629 |     1 |     6 |     0   (0)| 00:00:01 |
|  11 |     TABLE ACCESS BY INDEX ROWID| U_WARE_Q    |     1 |    61 |     1   (0)| 00:00:01 |
|* 12 |      INDEX UNIQUE SCAN         | SYS_C009157 |     1 |       |     0   (0)| 00:00:01 |
|  13 |    TABLE ACCESS BY INDEX ROWID | U_STORE_I   |     1 |    31 |     1   (0)| 00:00:01 |
|* 14 |     INDEX UNIQUE SCAN          | SYS_C008729 |     1 |       |     0   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("U"."USERID"=:B1)
   7 - access("A"."BUSNO"="BUSNO")
   8 - filter("ORG_TRAN_CODE"="F_SYS_INI"('1001'))
   9 - filter("A"."VENDORNO"='3436' AND "A"."EXECDATE">=TO_DATE(' 2011-07-01
              00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."EXECDATE"<=TO_DATE(' 2011-07-31
              23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
  10 - access("A"."CUSTOMID"="B"."CUSTOMID")
  12 - access("A"."WAREID"="D"."WAREID")
  14 - access("A"."WAREID"="I"."WAREID"(+) AND "A"."BATCHNO"="I"."BATCHNO"(+) AND
              "A"."IDNO"="I"."IDNO"(+))


统计信息
----------------------------------------------------------
        162  recursive calls
          0  db block gets
      30828  consistent gets
      29571  physical reads
        116  redo size
       5481  bytes sent via SQL*Net to client
        812  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
         12  sorts (memory)
          0  sorts (disk)
         18  rows processed

SQL>


A"."EXECDATE"<=   建了索引了

R_WHL表的数据300万

回复 只看该作者 道具 举报

10#
发表于 2011-11-17 21:45:58
主要问题在R_WHL上:
9 - filter("A"."VENDORNO"='3436' AND "A"."EXECDATE">=TO_DATE(' 2011-07-01
               00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."EXECDATE"<=TO_DATE(' 2011-07-31
               23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
确认一下,R_WHL表中,满足以上条件的记录有多少条?
你是对EXECDATE单个字段建立的索引吗?看看VENDORNO的选择性如何,考虑改成复合索引:VENDORNO + EXECDATE

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-6-2 10:43 , Processed in 0.059734 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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