Your SlideShare is downloading. ×
Jpoug 20120721
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jpoug 20120721

786

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
786
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
18
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Xid = Undo Segment# . Slot#. Wrap# UBA = datablock addr . Seq addr. Rec# FLAG =C = committed ( 上記だと insert 文 ) Fsc は アクティブトランザクション
  • Transcript

    • 1. アンカンファレンス 新久保 浩二 1
    • 2. いろんなデータベースでいろんな事を実験中 おら オラ Oracl e どっぷり検証生活 Oracl e ACE @kouji _s _0808 JPOUG Member本資料に使用されている社名、ロゴ、製品、サービス名およびブランドは、該当する各社の登録商標または商標です。本資料の一部あるいは全体について、許可なく複製および転載することを禁じます。 2
    • 3. ● 今日のトピック● トランザクションロックの調査での永遠のテーマ● いろいろ ( あまり、決めてません ん ) 3
    • 4. 皆さんご存知のトランザクション ( TX) エンキューの話ですちなみに TX エンキューにも沢山種類がありますよね。enq: TX – row l ock contenti on の mod e 6 とか mod e 4enq: TX – al l ocati on I TL entryenq: TX – i nd ex contenti onenq: TX – contenti onそこは、本日の趣旨ではないので、さくっとスルーします。 4
    • 5. いろいろ、ありますが、今日は皆さんの大好物enq: TX – r ow l oc k c ont ent i onをベースに話を進めたいと思います。 5
    • 6. 「おーい。何かアプリが尋常じゃなく遅いんですけど… 」… すったもんだあって …「どうも、このアプリの SQL がロック待ちしているようですね」「待たせているのは誰?」… 大人の会議後 …大人の KI LL SESSI ON  6
    • 7. 1. 待たされているセッションは分かる2. 待たされている SQL 文も分かる3. 待たせているセッションも分かるだったら待たせている SQL 文の正体も知りたい。と思うのが人情* SQL 文が分からないとアプリケーションの改修が難しい場合もあるでも「できないんですよ」 7
    • 8. そもそも、 r ow l oc k c ont ent i on って?Thanks Kyl e  8htt p: //d ocwi ki . e mbarcad e ro. com/DBOpt i mi ze r/en/Oracl e: Enqueues
    • 9. Itl X id U ba F lag Lck S cn/ s c F0x01 0x0007.00f.00002098 0x00c021 0b .09b 1 .01 C --- 0 s cn 0x0000.066a72630x02 0x000a.001 .0000e 3b 6 0x00c002c3.1 c95.03 ---- 1 fs c 0x0000.00000000b d b a: 0x0041 5a09d ata_ b lock_ d u m p ,d ata h e ad e r at 0x2b 38d 7c86a5c===============… (略)…b lock_ row_ d u m p :tab 0, row 0, @ 0x1 f9a UNDO Segment へ UNDO Bl ock へtl: 6 fb : --H -F L-- lb: 0x2 cc: 1col 0: [ 2] c1 03e nd _ of_ b lock_ d u m p 9
    • 10. ロックをかけた SQL は - I TL エントリを作って ( 既存トランザクションがない場合 ) - 行ヘッダーに、 I TL エントリを書いて追跡するには - I TL エントリから XI D を探して - その、 XI D で実行された SQL を探して < = この時点で無理 - さらに、依存オブジェクトとかで絞り込んでつまり、このトランザクション管理から考えて、ロックをかけた SQL を追跡することは不可能だと言える。 10
    • 11. I TL にご興味がある場合は、以下をどうぞhttp: //www. i ns i ght- tec. com/mai l magazi ne/ora3/vol 1 43. html( 注意 )でも、ロックをかけている SQL 文を全部管理することは、とても無駄トランザクション管理という意味では、ロックをかけている SQL 文を管理する必要はないので、全く問題ではないですよ。要は、ワークアラウンドがあるか? 11
    • 12. ● A から探る SH 絞り込む意味で見つかる可能性は高いですが、 1 00% とは 言えないですね。● A T から探る UDI これは、 A より見つかる可能性が高いですが、既存システム SH にロックの調査のために A T を仕掛けます。は許してくれな UDI い可能性が高い ( かもしれません )● LogM ner i Exact SQL ではないので、今回の意味合いから外れる 12
    • 13. S EL ECT s e . SI D, d b aO. OBJECT_ NAME, s e . MACHI NE, s e . TERMI NAL , s e . OS US ER, s e . PROGRAM, vl . TYPE, vl . L MOD E, vl . REQUES T, vl . CTI ME,   vl . BL OCK,   s q . S QL _ TEXTF ROM v$ L OCKED _ OBJECT vL OCK, D BA_ OBJECTS d b aO, v$ S ES S I ON s e ,   v$ l o c k vl ,   v$ s q l s qWHERE vL OCK. OBJECT_ I D = d b aO. OBJECT_ I D ( + ) AND vL OCK. S ES S I ON_ I D = s e . S I D ( + )   AND s e . S I D = vl . S I D   AND s e . TYPE = TX   AND d e c o d e ( s e . S QL _ AD D RES S , 00 , s e . PREV_ S QL _ AD D R, s e . S QL _ AD D RES S ) = s q . AD D RES S ( + )ORD ER BY s e . S I D , d b aO. OBJECT_ NAME; 13
    • 14. - 誰か、この永遠のテーマにチャレンジしてください ( なにか、もっとワークアラウンドある気がしてます )- で、良いアイデアがあれば、是非、教えてください ! ! 14
    • 15.   ORA- 03113 15

    ×