Recommended
PDF
[Oracle DBA & Developer Day 2016] しばちょう先生の特別講義!!ストレージ管理のベストプラクティス ~ASMからExada...
PDF
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
PDF
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
PDF
Oracle Data Guard による高可用性
PPT
PDF
PPTX
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
PDF
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
PDF
PDF
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PPTX
PDF
GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)
PDF
Zero Data Loss Recovery Applianceのご紹介
PPTX
Oracle Audit Vault and Database Vault のご紹介
PDF
[Oracle Cloud Days Tokyo 2015] Oracle Database 12c最新情報 ~Maximum Availability ...
PPTX
Oracle常駐接続プーリング(DRCP)を導入した話
PDF
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
PDF
PPTX
Qlik Replicate - Change Tables(変更テーブル)のご説明
PDF
PPTX
Oracle Database (CDB) on Docker を動かしてみる
PDF
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
PPTX
RDB開発者のためのApache Cassandra データモデリング入門
PDF
My First 100 days with an Exadata (PPT)
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PDF
Apache Hadoop YARNとマルチテナントにおけるリソース管理
PPTX
PDF
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
PDF
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
More Related Content
PDF
[Oracle DBA & Developer Day 2016] しばちょう先生の特別講義!!ストレージ管理のベストプラクティス ~ASMからExada...
PDF
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
PDF
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
PDF
Oracle Data Guard による高可用性
PPT
PDF
PPTX
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
PDF
ちょっと理解に自信がないなという皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
What's hot
PDF
PDF
[B31] LOGMinerってレプリケーションソフトで使われているけどどうなってる? by Toshiya Morita
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PPTX
PDF
GoldenGateテクニカルセミナー2「Oracle GoldenGate 新機能情報」(2016/5/11)
PDF
Zero Data Loss Recovery Applianceのご紹介
PPTX
Oracle Audit Vault and Database Vault のご紹介
PDF
[Oracle Cloud Days Tokyo 2015] Oracle Database 12c最新情報 ~Maximum Availability ...
PPTX
Oracle常駐接続プーリング(DRCP)を導入した話
PDF
[dbts-2014-tokyo] 目指せExadata!! Oracle DB高速化を目指した構成
PDF
PPTX
Qlik Replicate - Change Tables(変更テーブル)のご説明
PDF
PPTX
Oracle Database (CDB) on Docker を動かしてみる
PDF
[D13] Disaster Recovery環境をOracle Standard Editionでつくる by Miyuki Ohasi
PPTX
RDB開発者のためのApache Cassandra データモデリング入門
PDF
My First 100 days with an Exadata (PPT)
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
PDF
Apache Hadoop YARNとマルチテナントにおけるリソース管理
PPTX
Viewers also liked
PDF
バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
PDF
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
PDF
Analyzing Oracle Database hang issues using various diagnostics.
PDF
パフォーマンスタブ見れないんですけど!! 株式会社コーソル 河野 敏彦
PDF
Introduction of Oracle Database Architecture
PDF
シンプルでシステマチックな Oracle Database, Exadata 性能分析
PDF
Corruption And Revive - db tech showcase 2013 特濃JPOUG
PDF
Oracle Database Cloud Service を使ってみよう! 株式会社コーソル 守田 典男
PDF
SQL Developerって必要ですか? 株式会社コーソル 河野 敏彦
PDF
全社情報共有サイトへのAlfresco Community 5 導入事例紹介 - 第27回Alfresco勉強会
PDF
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
PDF
おじさん二人が語る OOW デビューのススメ! Oracle OpenWorld 2016参加報告 [検閲版] 株式会社コーソル 杉本 篤信, 河野 敏彦
PDF
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い - Database Lounge Tokyo #2
PDF
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
PDF
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
PDF
Oracle SQL Developerを使い倒そう! 株式会社コーソル 守田 典男
PDF
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
PDF
バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
Similar to Oracle Database In Lock
PPT
PDF
[INSIGHT OUT 2011] C22 RAC buffer sharing の仕組み(yamashita)
PDF
C21 SQL Server のスレッド管理 by 古賀啓一郎
PDF
PDF
PPTX
PDF
PDF
PDF
COD2012 C3 : SQL Server 2012で振り返る、SQLOSのスレッド スケジューリング
PDF
PDF
Principles of Transaction Processing Second Edition 9章 4~9節
PDF
Postgre sql9.3 newlockmode_and_etc
PDF
45分で理解する SQL Serverでできることできないこと
PDF
データベース12 - トランザクションと同時実行制御
PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
PPTX
A critique of ansi sql isolation levels 解説公開用
PDF
ORACLE MASTER Bronze Oracle Database 12c 傾向と対策 (SQL および Bronze DBA)
PPTX
PPTX
Jvm reading-synchronization
PDF
Oracle Database In Lock 1. 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