Oracle Database In Lock



    2012/10/19 株式会社コーソル 渡部亮太
Who am I?
     渡部 亮太(わたべ りょうた)
           book
                    「プロとしてのOracleアーキテクチャ入門」
                    「プロとしてのOracle運用管理入門」
           presentation
                    Oracle DBA & Developer Days 2010, 2011
                    Developers Summit 2009
                    Oracle OpenWorld Tokyo 2012 Unconference など
           Blog
                    コーソル DatabaseエンジニアのBlog http://co-sol.jp/techdb/

     株式会社コーソル
           「CO-Solutions=共に解決する」の理念のもと、Oracle技術
            に特化した事業を展開中
           社員数: 94名 (エンジニアのほぼ全員がOracle Master 所有)
Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                      1
本日お伝えしたいこと
     Oracle Databaseには多数のロック機構が存在すること
     それぞれのロック機構の役割と、ロック機構により実現される
      同時実行制御に関するイメージ

     注意書き
           内部動作の情報が公開されていないなかで、渡部が推測した内
            容がふくまれるため、本情報は、各自の理解を助けるための参考
            にしてください
           (当り前ですが)本情報を、何らかのアクションの唯一の「根拠」とし
            て活用することは避けてください



Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   2
RDBMSにおけるロック機構の必要性
     一般的なRDBMS(クライアント-サーバー型)では複数の
      処理が同時に実行される
     ロック機構により排他制御を行わないと、様々なよからぬこ
      とが起きる
           データの整合性が崩れる
           直列処理が並列実行されてしまう
           領域割り当てが重複してしまう
           管理構造が破壊される
           など




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   3
データの整合性が崩れる #1

                  Process                            Process
                  (or Session)                       (or Session)




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                  4
データの整合性が崩れる #2

              Process                                Process
              (or Session)                           (or Session)




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                  5
直列処理が並列実行されてしまう
                              OK



                                                     処理#1    処理#2



                              NG




                                                      処理#2




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                  6
領域割り当てが重複してしまう

                  Process                                Process
                  (or Session)                           (or Session)

        領域割り当て                                       領域割り当て
        要求                                           要求




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                      7
管理構造が破壊される

                                                     x       y       z

                                OK                                       NG




           x                       a                     z       x       y    z

                                                                         a



Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                                8
Oracle Databaseのロック機構
     ロック機構                          説明
     エンキュー                          FIFO型で多数のロックモードを持つロック機構
                                    ユーザー型 : ユーザーの操作(DML実行、DBMS_LOCK実行など)に
                                    対応してエンキューが獲得、解放される
                                    システム型 : Oracleの内部動作に対応してエンキューが獲得、解放さ
                                    れる
     ライブラリキャッシュ いわゆるDDLロック。オブジェクトの定義変更に関わる排他制御に用いられ
     ロック        る
     ライブラリキャッシュ ライブラリキャッシュオブジェクトの実体であるメモリ領域(ヒープ)の排他制御
     ピン         に用いられる
     ラッチ                            仕組みが単純で低コスト。原則的に排他モードのみ。
                                    複数プロセスで共有されるメモリ領域の排他制御に用いられる
     Mutex                          ラッチよりもさらに低コスト。
                                    ライブラリキャッシュオブジェクトをより細かい粒度で保護できる
     行キャッシュロック                      共有プール内のディクショナリキャッシュの排他制御に用いられる


Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                          9
互換性とロック獲得待機
             [例: 排他/共有モードを持つロックの互換性]
                                      要求
                                         S            X
                 保持 なし                      ○          ○       ロック機構により、ロックモードの種類と
                             S              ○          ×       互換性定義が異なることに注意
                                                               例) エンキューには7つのロックモードがある
                             X              ×          ×
                                                                                    10


                               #1                              ロック             #2
                                                               対象
                        待機イベントX                       REQ            HOLD
                                                      mode=S          mode=X



                               #1                              ロック             #2
                                                               対象
                                                     HOLD            HOLD
                                                      mode=S          mode=S
Copyright (C) 2012 CO-Sol Inc. All Rights Reserved
Oracle DBでのロック状態確認方法
       機能                            説明                例)TXエンキューの場合
       V$ビュー                         ロック種別に応じたV$ビューで   V$LOCK、
                                     ロック状態、ロック関連統計情    V$TRANSACTION な
                                                       ど
                                     報を確認できる
       待機イベント ロック獲得待機発生時、待機 'enq: TX - row lock
              セッションでロック種別、ロック contention'
                               など
              の使用形態に応じた待機イベ
              ントが発生し、V$SESSION
              やSQLトレースから確認でき
              る
       各種診断機 トレースファイルにdumpした                           system state, hang
       能     動作詳細情報から、ロックに                             analyze
             関わる情報を確認できる

Copyright (C) 2012 CO-Sol Inc. All Rights Reserved
エンキュー
     様々なリソースに関わる同時実行制御に使用される
           リソース毎に異なるタイプのエンキューが使用される
           タイプはアルファベット2文字で表現される
           例) TX = 行ロック, TM = 表ロック
     獲得待機時に発生する待機イベント
           "enq <タイプ> - <説明>"
                    例) TXエンキューの更新競合
                         → "enq: TX - row lock contention"
     多数のロックモードと複雑な互換性を持つ(本日は説明を省略)




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved           12
エンキューの種類と分類
     エンキューの種類
           非常に多くの種類のエンキューが存在
           V$LOCK_TYPEから確認可能
           エンキューごとに保護する対象が異なる
     ユーザー操作に関わる観点から、以下の2つに分類
           ユーザー型
                     TXエンキュー=行ロック
                     TMエンキュー=表ロック
                     ULエンキュー=DBMS_LOCK
           システム型
                     TX, TM, UL以外の全てのエンキュー
                     CFエンキュー=制御ファイルへのアクセス制御用ロック
                     など
Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   13
TXエンキュー
     TXエンキューはユーザー型に分類されるエンキュー
           獲得: トランザクションの開始(≒行の更新)
           解放: トランザクションの終了(コミット or ロールバック)
     TXエンキュー獲得待機時に発生する待機イベント
           "enq: TX - row lock contention"
           など
     目的
           データ(=行)の整合性を保護する




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   14
[デモ] TXエンキュー獲得待機
     デモ
           同一行の更新によるTXエンキューの獲得+保持と獲得要求の競
            合
     シナリオ
           1.          行XをUPDATE(コミットしない)
            →           TXエンキューA 獲得+保持
           2.          別セッションで行XをUPDATE
            →           TXエンキューA 要求
            →           待機イベント"enq: TX - row lock contention"で待機




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                 15
CFエンキュー
     CFエンキューはシステム型に分類されるエンキュー
           獲得:制御ファイルへのアクセス開始
           解放:制御ファイルへのアクセス終了
           制御ファイルにはDatabaseの管理情報が記録される
           主にDatabaseの管理タスクが実行されるタイミングでCFエンキュ
            ーを獲得
                     例) ログスイッチ、チェックポイント
     目的
           制御ファイルに格納された管理情報の整合性保護




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   16
CFエンキューの競合とタイムアウト
     CFエンキュー獲得待機時に発生する待機イベント
           "enq: CF - contention"
     CFエンキュー獲得タイムアウト
           ORA-600[2103]が発生
     CFエンキューの競合が問題となる状況
           何らかの理由で制御ファイルへのI/Oがハング
           Oracle のBug

           論理的には・・・実際に多くのセッションが制御ファイルにアクセスし
            て場合も考えられなくもない



Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   17
[デモ] CFエンキュー獲得待機
     デモ
           制御ファイルI/Oの遅延を疑似
     シナリオ
           1.          gdbでブレークポイントを設定
           2.          ログスイッチ実行 → CFエンキュー獲得+保持
           3.          チェックポイント実行
            →           CFエンキュー要求
            →           待機イベント"enq: CF - contention"で待機




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved        18
ライブラリキャッシュロック
     ライブラリキャッシュロックはオブジェクト定義変更に関わるロッ
      ク
           排他モードで獲得:オブジェクトの定義変更
           共有モードで獲得:オブジェクトの定義参照
     良くある誤解
           TMエンキュー(表ロック)とライブラリキャッシュロックを混同


     獲得待機時に発生する待機イベント
           " library cache lock"




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   19
ライブラリキャッシュロックの保護対象
   Library Cache
         hash bucket                                 object handle




                                                        object handle
                                                                        heap 0   heap n

                                                      library
                                                                                          ・・・
                                                      cache
                                                      lock


Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                                              20
[デモ]ライブラリキャッシュロック
     DDL実行でライブラリキャッシュロックを排他モードで獲得す
      る
     デモシナリオ
           1.          表にデフォルト値を含む列を追加
            →           表のライブラリキャッシュロックを排他モードで獲得+保持
           2.          表を参照するSQLを実行
            →           表のライブラリキャッシュロックを共有モードで要求
            →           待機イベント"library cache lock"で待機




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved      21
ライブラリキャッシュピン
     ライブラリキャッシュピンはオブジェクト定義+そのものに関わ
      るロック
           排他モードで獲得:オブジェクトの変更
           共有モードで獲得:オブジェクトの参照
     獲得待機時に発生する待機イベント
           'library cache pin'待機イベント
     ライブラリキャッシュロックとライブラリピン
           両者の関係性はあまり明確にされていない
           一般的にロックを獲得した後、ピンを獲得or開放する




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   22
ライブラリキャッシュピンの保護対象
   Library Cache
         hach bucket                                 object handle




                                                        object handle
                                                                        heap 0   heap n


                                                                                            ・・・

                                                                                          library cache pin

Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                                                            23
[デモ]ライブラリキャッシュピン
     ライブラリキャッシュピンはDDL実行で排他モードで獲得され
      る
     デモシナリオ
           1.          処理に長時間要するパッケージのプロシージャを実行
            →           パッケージのライブラリキャッシュピンを共有モードで獲得+保持
           2.          パッケージをコンパイル
            →           パッケージのライブラリキャッシュロックを排他モードで獲得
            →           パッケージのライブラリキャッシュピンを排他モードで要求
            →           待機イベント"library cache pin"で待機




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   24
ラッチ
     SGA内に存在する共有メモリ領域の排他制御に使用され
      る
           獲得:共有メモリ領域(群) へのアクセス開始
           解放:共有メモリ領域(群)へのアクセス終了
     共有メモリ領域へのアクセス
           メモリ領域(データ)の更新、新規領域割り当て、管理構造(メタデ
            ータ)の更新など
     基本的に獲得→解放は極めて短時間
           一般にマイクロ秒(~ミリ秒)レベル
     ラッチ獲得待機で発生する待機イベント
           'latch: <ラッチ名>' (10.1-)
           'latch free'
Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   25
ラッチ一覧
     ラッチ関連V$ビュー
           V$LATCH
           V$LATCHNAME
           V$LATCH_PARENT
           V$LATCH_CHILDREN




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   26
shared poolラッチ
     共有プールにおけるメモリ領域(=チャンク)の割り当てに関
      わる同時実行制御に使用される
           同じメモリ領域を誤って別の用途に割り当てないように
           空き領域確保にともなう各種管理構造のメンテナンスがバッティン
            グしないように




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved   27
共有プールとshared poolラッチ
                                                               説明の便宜上、非常に単純化して書いています
                     free list bucket            subpool

                             size=xx

                             size=yy


    shared pool
    latch                    size=zz




                             size=xx

                             size=yy


    shared pool
    latch                    size=zz



                                                           ・
                                                           ・
                                                           ・
                                                                         free area

Copyright (C) 2012 CO-Sol Inc. All Rights Reserved                                   28
[デモ]shared poolラッチ
     デモシナリオ
           1. V$LATCH_CHILDRENからshared poolラッチのアドレス
            を確認
           2. oradebugでshared poolラッチを獲得
           3. SQLを実行
            → ハードパース発生
            → チャンク確保要求
            → shared poolラッチ要求
            → 待機イベント"latch: shared pool" 発生




Copyright (C) 2012 CO-Sol Inc. All Rights Reserved     29

Oracle Database In Lock

  • 1.
    Oracle Database InLock 2012/10/19 株式会社コーソル 渡部亮太
  • 2.
    Who am I?  渡部 亮太(わたべ りょうた)  book  「プロとしてのOracleアーキテクチャ入門」  「プロとしてのOracle運用管理入門」  presentation  Oracle DBA & Developer Days 2010, 2011  Developers Summit 2009  Oracle OpenWorld Tokyo 2012 Unconference など  Blog  コーソル DatabaseエンジニアのBlog http://co-sol.jp/techdb/  株式会社コーソル  「CO-Solutions=共に解決する」の理念のもと、Oracle技術 に特化した事業を展開中  社員数: 94名 (エンジニアのほぼ全員がOracle Master 所有) Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 1
  • 3.
    本日お伝えしたいこと  Oracle Databaseには多数のロック機構が存在すること  それぞれのロック機構の役割と、ロック機構により実現される 同時実行制御に関するイメージ  注意書き  内部動作の情報が公開されていないなかで、渡部が推測した内 容がふくまれるため、本情報は、各自の理解を助けるための参考 にしてください  (当り前ですが)本情報を、何らかのアクションの唯一の「根拠」とし て活用することは避けてください Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 2
  • 4.
    RDBMSにおけるロック機構の必要性  一般的なRDBMS(クライアント-サーバー型)では複数の 処理が同時に実行される  ロック機構により排他制御を行わないと、様々なよからぬこ とが起きる  データの整合性が崩れる  直列処理が並列実行されてしまう  領域割り当てが重複してしまう  管理構造が破壊される  など Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 3
  • 5.
    データの整合性が崩れる #1 Process Process (or Session) (or Session) Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 4
  • 6.
    データの整合性が崩れる #2 Process Process (or Session) (or Session) Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 5
  • 7.
    直列処理が並列実行されてしまう OK 処理#1 処理#2 NG 処理#2 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 6
  • 8.
    領域割り当てが重複してしまう Process Process (or Session) (or Session) 領域割り当て 領域割り当て 要求 要求 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 7
  • 9.
    管理構造が破壊される x y z OK NG x a z x y z a Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 8
  • 10.
    Oracle Databaseのロック機構 ロック機構 説明 エンキュー FIFO型で多数のロックモードを持つロック機構 ユーザー型 : ユーザーの操作(DML実行、DBMS_LOCK実行など)に 対応してエンキューが獲得、解放される システム型 : Oracleの内部動作に対応してエンキューが獲得、解放さ れる ライブラリキャッシュ いわゆるDDLロック。オブジェクトの定義変更に関わる排他制御に用いられ ロック る ライブラリキャッシュ ライブラリキャッシュオブジェクトの実体であるメモリ領域(ヒープ)の排他制御 ピン に用いられる ラッチ 仕組みが単純で低コスト。原則的に排他モードのみ。 複数プロセスで共有されるメモリ領域の排他制御に用いられる Mutex ラッチよりもさらに低コスト。 ライブラリキャッシュオブジェクトをより細かい粒度で保護できる 行キャッシュロック 共有プール内のディクショナリキャッシュの排他制御に用いられる Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 9
  • 11.
    互換性とロック獲得待機 [例: 排他/共有モードを持つロックの互換性] 要求 S X 保持 なし ○ ○ ロック機構により、ロックモードの種類と S ○ × 互換性定義が異なることに注意 例) エンキューには7つのロックモードがある X × × 10 #1 ロック #2 対象 待機イベントX REQ HOLD mode=S mode=X #1 ロック #2 対象 HOLD HOLD mode=S mode=S Copyright (C) 2012 CO-Sol Inc. All Rights Reserved
  • 12.
    Oracle DBでのロック状態確認方法 機能 説明 例)TXエンキューの場合 V$ビュー ロック種別に応じたV$ビューで V$LOCK、 ロック状態、ロック関連統計情 V$TRANSACTION な ど 報を確認できる 待機イベント ロック獲得待機発生時、待機 'enq: TX - row lock セッションでロック種別、ロック contention' など の使用形態に応じた待機イベ ントが発生し、V$SESSION やSQLトレースから確認でき る 各種診断機 トレースファイルにdumpした system state, hang 能 動作詳細情報から、ロックに analyze 関わる情報を確認できる Copyright (C) 2012 CO-Sol Inc. All Rights Reserved
  • 13.
    エンキュー  様々なリソースに関わる同時実行制御に使用される  リソース毎に異なるタイプのエンキューが使用される  タイプはアルファベット2文字で表現される  例) TX = 行ロック, TM = 表ロック  獲得待機時に発生する待機イベント  "enq <タイプ> - <説明>"  例) TXエンキューの更新競合 → "enq: TX - row lock contention"  多数のロックモードと複雑な互換性を持つ(本日は説明を省略) Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 12
  • 14.
    エンキューの種類と分類  エンキューの種類  非常に多くの種類のエンキューが存在  V$LOCK_TYPEから確認可能  エンキューごとに保護する対象が異なる  ユーザー操作に関わる観点から、以下の2つに分類  ユーザー型  TXエンキュー=行ロック  TMエンキュー=表ロック  ULエンキュー=DBMS_LOCK  システム型  TX, TM, UL以外の全てのエンキュー  CFエンキュー=制御ファイルへのアクセス制御用ロック  など Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 13
  • 15.
    TXエンキュー  TXエンキューはユーザー型に分類されるエンキュー  獲得: トランザクションの開始(≒行の更新)  解放: トランザクションの終了(コミット or ロールバック)  TXエンキュー獲得待機時に発生する待機イベント  "enq: TX - row lock contention"  など  目的  データ(=行)の整合性を保護する Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 14
  • 16.
    [デモ] TXエンキュー獲得待機  デモ  同一行の更新によるTXエンキューの獲得+保持と獲得要求の競 合  シナリオ  1. 行XをUPDATE(コミットしない) → TXエンキューA 獲得+保持  2. 別セッションで行XをUPDATE → TXエンキューA 要求 → 待機イベント"enq: TX - row lock contention"で待機 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 15
  • 17.
    CFエンキュー  CFエンキューはシステム型に分類されるエンキュー  獲得:制御ファイルへのアクセス開始  解放:制御ファイルへのアクセス終了  制御ファイルにはDatabaseの管理情報が記録される  主にDatabaseの管理タスクが実行されるタイミングでCFエンキュ ーを獲得  例) ログスイッチ、チェックポイント  目的  制御ファイルに格納された管理情報の整合性保護 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 16
  • 18.
    CFエンキューの競合とタイムアウト  CFエンキュー獲得待機時に発生する待機イベント  "enq: CF - contention"  CFエンキュー獲得タイムアウト  ORA-600[2103]が発生  CFエンキューの競合が問題となる状況  何らかの理由で制御ファイルへのI/Oがハング  Oracle のBug  論理的には・・・実際に多くのセッションが制御ファイルにアクセスし て場合も考えられなくもない Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 17
  • 19.
    [デモ] CFエンキュー獲得待機  デモ  制御ファイルI/Oの遅延を疑似  シナリオ  1. gdbでブレークポイントを設定  2. ログスイッチ実行 → CFエンキュー獲得+保持  3. チェックポイント実行 → CFエンキュー要求 → 待機イベント"enq: CF - contention"で待機 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 18
  • 20.
    ライブラリキャッシュロック  ライブラリキャッシュロックはオブジェクト定義変更に関わるロッ ク  排他モードで獲得:オブジェクトの定義変更  共有モードで獲得:オブジェクトの定義参照  良くある誤解  TMエンキュー(表ロック)とライブラリキャッシュロックを混同  獲得待機時に発生する待機イベント  " library cache lock" Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 19
  • 21.
    ライブラリキャッシュロックの保護対象 Library Cache hash bucket object handle object handle heap 0 heap n library ・・・ cache lock Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 20
  • 22.
    [デモ]ライブラリキャッシュロック  DDL実行でライブラリキャッシュロックを排他モードで獲得す る  デモシナリオ  1. 表にデフォルト値を含む列を追加 → 表のライブラリキャッシュロックを排他モードで獲得+保持  2. 表を参照するSQLを実行 → 表のライブラリキャッシュロックを共有モードで要求 → 待機イベント"library cache lock"で待機 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 21
  • 23.
    ライブラリキャッシュピン  ライブラリキャッシュピンはオブジェクト定義+そのものに関わ るロック  排他モードで獲得:オブジェクトの変更  共有モードで獲得:オブジェクトの参照  獲得待機時に発生する待機イベント  'library cache pin'待機イベント  ライブラリキャッシュロックとライブラリピン  両者の関係性はあまり明確にされていない  一般的にロックを獲得した後、ピンを獲得or開放する Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 22
  • 24.
    ライブラリキャッシュピンの保護対象 Library Cache hach bucket object handle object handle heap 0 heap n ・・・ library cache pin Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 23
  • 25.
    [デモ]ライブラリキャッシュピン  ライブラリキャッシュピンはDDL実行で排他モードで獲得され る  デモシナリオ  1. 処理に長時間要するパッケージのプロシージャを実行 → パッケージのライブラリキャッシュピンを共有モードで獲得+保持  2. パッケージをコンパイル → パッケージのライブラリキャッシュロックを排他モードで獲得 → パッケージのライブラリキャッシュピンを排他モードで要求 → 待機イベント"library cache pin"で待機 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 24
  • 26.
    ラッチ  SGA内に存在する共有メモリ領域の排他制御に使用され る  獲得:共有メモリ領域(群) へのアクセス開始  解放:共有メモリ領域(群)へのアクセス終了  共有メモリ領域へのアクセス  メモリ領域(データ)の更新、新規領域割り当て、管理構造(メタデ ータ)の更新など  基本的に獲得→解放は極めて短時間  一般にマイクロ秒(~ミリ秒)レベル  ラッチ獲得待機で発生する待機イベント  'latch: <ラッチ名>' (10.1-)  'latch free' Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 25
  • 27.
    ラッチ一覧  ラッチ関連V$ビュー  V$LATCH  V$LATCHNAME  V$LATCH_PARENT  V$LATCH_CHILDREN Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 26
  • 28.
    shared poolラッチ  共有プールにおけるメモリ領域(=チャンク)の割り当てに関 わる同時実行制御に使用される  同じメモリ領域を誤って別の用途に割り当てないように  空き領域確保にともなう各種管理構造のメンテナンスがバッティン グしないように Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 27
  • 29.
    共有プールとshared poolラッチ 説明の便宜上、非常に単純化して書いています free list bucket subpool size=xx size=yy shared pool latch size=zz size=xx size=yy shared pool latch size=zz ・ ・ ・ free area Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 28
  • 30.
    [デモ]shared poolラッチ  デモシナリオ  1. V$LATCH_CHILDRENからshared poolラッチのアドレス を確認  2. oradebugでshared poolラッチを獲得  3. SQLを実行 → ハードパース発生 → チャンク確保要求 → shared poolラッチ要求 → 待機イベント"latch: shared pool" 発生 Copyright (C) 2012 CO-Sol Inc. All Rights Reserved 29