天天看點

動态性能視圖v$lock通路很慢的解決辦法

現象如下:我在OA生産庫上執行如下語句,要3分鐘左右猜出結果,但是我在其他生産庫上執行結果幾乎是秒出,會是什麼原因?

 我擔心的原因,如果哪天出現session阻塞,那我豈不是要完蛋,阻塞session查不出來,kill不掉,到時估計就隻能重新開機應用或者資料庫了(PS:之前就出現過一次,不過當時并未将注意力放在這個上面)

 SQL> select sid,lmode,type,request,block from v$lock where type in ('TX','TM') order by 1,3;

        SID      LMODE TY    REQUEST      BLOCK

 ---------- ---------- -- ---------- ----------

          9          6 TX          0          2

        634          6 TX          0          2

       1899          6 TX          0          2

       2847          6 TX          0          2

       3155          6 TX          0          2

       3313          6 TX          0          2

       3461          6 TX          0          2

       5186          6 TX          0          2

       5360          6 TX          0          2

       6764          6 TX          0          2

       8186          3 TM          0          2

       8186          6 TX          0          2

       9107          6 TX          0          2

 13 rows selected.

 這結果出來要3分多鐘

分析下語句的執行計劃

 SQL>  set linesize 150;

 Execution Plan

 ----------------------------------------------------------

 Plan hash value: 3010872788

 --------------------------------------------------------------------------------------

 | Id  | Operation               | Name       | Rows  | Bytes | Cost (%CPU)| Time     |

 |   0 | SELECT STATEMENT        |            |     1 |   105 |     2 (100)| 00:00:01 |

 |   1 |  SORT ORDER BY          |            |     1 |   105 |     2 (100)| 00:00:01 |

 |*  2 |   HASH JOIN             |            |     1 |   105 |     1 (100)| 00:00:01 |

 |   3 |    MERGE JOIN CARTESIAN |            |     1 |    54 |     0   (0)| 00:00:01 |

 |*  4 |     FIXED TABLE FULL    | X$KSUSE    |     1 |    32 |     0   (0)| 00:00:01 |

 |   5 |     BUFFER SORT         |            |     1 |    22 |     0   (0)| 00:00:01 |

 |*  6 |      FIXED TABLE FULL   | X$KSQRS    |     1 |    22 |     0   (0)| 00:00:01 |

 |   7 |    VIEW                 | GV$_LOCK   |    10 |   510 |     0   (0)| 00:00:01 |

 |   8 |     UNION-ALL           |            |       |       |            |          |

 |*  9 |      FILTER             |            |       |       |            |          |

 |  10 |       VIEW              | GV$_LOCK1  |     2 |   102 |     0   (0)| 00:00:01 |

 |  11 |        UNION-ALL        |            |       |       |            |          |

 |* 12 |         FIXED TABLE FULL| X$KDNSSF   |     1 |    77 |     0   (0)| 00:00:01 |

 |* 13 |         FIXED TABLE FULL| X$KSQEQ    |     1 |    77 |     0   (0)| 00:00:01 |

 |* 14 |      FIXED TABLE FULL   | X$KTADM    |     1 |    77 |     0   (0)| 00:00:01 |

 |* 15 |      FIXED TABLE FULL   | X$KTATRFIL |     1 |    77 |     0   (0)| 00:00:01 |

 |* 16 |      FIXED TABLE FULL   | X$KTATRFSL |     1 |    77 |     0   (0)| 00:00:01 |

 |* 17 |      FIXED TABLE FULL   | X$KTATL    |     1 |    77 |     0   (0)| 00:00:01 |

 |* 18 |      FIXED TABLE FULL   | X$KTSTUSC  |     1 |    77 |     0   (0)| 00:00:01 |

 |* 19 |      FIXED TABLE FULL   | X$KTSTUSS  |     1 |    77 |     0   (0)| 00:00:01 |

 |* 20 |      FIXED TABLE FULL   | X$KTSTUSG  |     1 |    77 |     0   (0)| 00:00:01 |

 |* 21 |      FIXED TABLE FULL   | X$KTCXB    |     1 |    77 |     0   (0)| 00:00:01 |

 Predicate Information (identified by operation id):

 ---------------------------------------------------

    2 - access("SADDR"="S"."ADDR" AND TO_CHAR(USERENV('INSTANCE'))||RAWTOHEX("R

               ADDR")=TO_CHAR("R"."INST_ID")||RAWTOHEX("R"."ADDR"))

    4 - filter("S"."INST_ID"=USERENV('INSTANCE'))

    6 - filter("R"."KSQRSIDT"='TM' OR "R"."KSQRSIDT"='TX')

    9 - filter(USERENV('INSTANCE') IS NOT NULL)

   12 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

               "INST_ID"=USERENV('INSTANCE') AND BITAND("KSSOBFLG",1)<>0)

   13 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   14 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   15 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   16 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   17 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   18 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   19 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   20 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

   21 - filter(("KSQLKMOD"<>0 OR "KSQLKREQ"<>0) AND

               "INST_ID"=USERENV('INSTANCE') AND BITAND("KSSPAFLG",1)<>0)

做level12的10046事件

SQL> alter session set events '10046 trace name context forever, level 12';

Session altered.

SQL> select sid,lmode,type,request,block from v$lock where type in ('TX','TM') order by 1,3;

       SID      LMODE TY    REQUEST      BLOCK

---------- ---------- -- ---------- ----------

       634          6 TX          0          2

      2847          6 TX          0          2

      3461          6 TX          0          2

      3631          6 TM          0          2

      5186          6 TX          0          2

      5829          6 TX          0          2

      6458          6 TX          0          2

      9426          6 TX          0          2

8 rows selected.

SQL> alter session set events '10046 trace name context off';

tkprof出來的trace檔案

 TKPROF: Release 11.2.0.3.0 - Development on Fri Mar 1 13:54:30 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Trace file: oaprod1_ora_16214.trc

 Sort options: default

********************************************************************************

 count    = number of times OCI procedure was executed

 cpu      = cpu time in seconds executing

elapsed  = elapsed time in seconds executing

 disk     = number of physical reads of buffers from disk

 query    = number of buffers gotten for consistent read

 current  = number of buffers gotten in current mode (usually for update)

 rows     = number of rows processed by the fetch or execute call

 ********************************************************************************

SQL ID: c4ghdvdm6vbfv Plan Hash: 3010872788

select sid,lmode,type,request,block

from

 v$lock where type in ('TX','TM') order by 1,3

call     count       cpu    elapsed       disk      query    current        rows

 ------- ------  -------- ---------- ---------- ---------- ----------  ----------

 Parse        1      0.02       0.02          0          0          0           0

 Execute      1      0.00       0.00          0          0          0           0

 Fetch        2    310.83     402.58     952800          0          8           8

 total        4    310.86     402.60     952800          0          8           8

Misses in library cache during parse: 1

 Optimizer mode: ALL_ROWS

 Parsing user id: SYS

 Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation

 ---------- ---------- ----------  ---------------------------------------------------

          8          8          8  SORT ORDER BY (cr=0 pr=952800 pw=952800 time=402582277 us cost=2 size=105 card=1)

          8          8          8   HASH JOIN  (cr=0 pr=952800 pw=952800 time=382540704 us cost=1 size=105 card=1)

 134180992  134180992  134180992    MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=107803810 us cost=0 size=54 card=1)

      10048      10048      10048     FIXED TABLE FULL X$KSUSE (cr=0 pr=0 pw=0 time=145542 us cost=0 size=32 card=1)

 134180992  134180992  134180992     BUFFER SORT (cr=0 pr=0 pw=0 time=51017140 us cost=0 size=22 card=1)

      13354      13354      13354      FIXED TABLE FULL X$KSQRS (cr=0 pr=0 pw=0 time=26869 us cost=0 size=22 card=1)

        480        480        480    VIEW  GV$_LOCK (cr=0 pr=0 pw=0 time=18205 us cost=0 size=510 card=10)

        480        480        480     UNION-ALL  (cr=0 pr=0 pw=0 time=18081 us)

        472        472        472      FILTER  (cr=0 pr=0 pw=0 time=17267 us)

        472        472        472       VIEW  GV$_LOCK1 (cr=0 pr=0 pw=0 time=17139 us cost=0 size=102 card=2)

        472        472        472        UNION-ALL  (cr=0 pr=0 pw=0 time=16784 us)

          0          0          0         FIXED TABLE FULL X$KDNSSF (cr=0 pr=0 pw=0 time=12111 us cost=0 size=77 card=1)

        472        472        472         FIXED TABLE FULL X$KSQEQ (cr=0 pr=0 pw=0 time=4068 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTADM (cr=0 pr=0 pw=0 time=108012 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTATRFIL (cr=0 pr=0 pw=0 time=29 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTATRFSL (cr=0 pr=0 pw=0 time=12 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTATL (cr=0 pr=0 pw=0 time=150 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTSTUSC (cr=0 pr=0 pw=0 time=452 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTSTUSS (cr=0 pr=0 pw=0 time=172 us cost=0 size=77 card=1)

          0          0          0      FIXED TABLE FULL X$KTSTUSG (cr=0 pr=0 pw=0 time=169 us cost=0 size=77 card=1)

          8          8          8      FIXED TABLE FULL X$KTCXB (cr=0 pr=0 pw=0 time=63711 us cost=0 size=77 card=1)

Elapsed times include waiting on following events:

   Event waited on                             Times   Max. Wait  Total Waited

   ----------------------------------------   Waited  ----------  ------------

   SQL*Net message to client                       2        0.00          0.00

   asynch descriptor resize                      174        0.00          0.00

   Disk file operations I/O                        1        0.00          0.00

   CSS initialization                              2        0.02          0.02

   CSS operation: action                           2        0.01          0.02

   CSS operation: query                            6        0.00          0.00

   direct path write temp                      30839        0.51         29.56

   direct path read temp                       63516        0.26         64.82

   SQL*Net message from client                     2       80.46         80.46

SQL ID: 06nvwn223659v Plan Hash: 0

alter session set events '10046 trace name context off'

 Parse        1      0.00       0.00          0          0          0           0

 Fetch        0      0.00       0.00          0          0          0           0

 total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

 Parse        2      0.02       0.02          0          0          0           0

 Execute      2      0.00       0.00          0          0          0           0

 total        6    310.86     402.60     952800          0          8           8

   SQL*Net message to client                       3        0.00          0.00

   SQL*Net message from client                     3       80.46        102.99

上一篇: 視圖
下一篇: 視圖