[解決済み] ORA-02049およびOracleのロック問題全般のトラブルシューティング方法
2022-02-18 12:28:22
質問内容
いくつかの長時間稼働するトランザクションや集中的なトランザクションで、時々 ORA-02049 を受け取ります。これには一見パターンがないように見えますが、それは単純なINSERTで起こります。
私はOracleから何らかの情報を得る方法を全く知らないのですが、何か方法があるのでしょうか?ロックに関するログや、少なくとも現在のロックを確認する方法はないでしょうか?
解決方法は?
1つの方法として考えられるのは
INIT.ORA
のパラメータは
distributed_lock_timeout
を大きな値に設定します。そうすると、より長い時間、観測することができるようになります。
v$lock
テーブルのロックがより長く続くためです。
この自動化を実現するためには、次のいずれかの方法があります。
-
の値をログに記録するSQLジョブを5~10秒ごとに実行する。
v$lock
またはsandosが上で示したクエリをテーブルに入れ、それを分析して、どのセッションがロックを引き起こしているかを確認します。 -
を実行します。
STATSPACK
またはAWR
報告します。ロックされたセッションは、経過時間が長く表示されるため、特定することができます。
v$session
はさらに3カラム
blocking_instance, blocking_session, blocking_session_status
を上記のクエリに追加することで、ロックされているものを把握することができます。
関連
-
[解決済み] varchar データ型から datetime データ型に変換すると、SQL クエリで範囲外の値が発生する
-
[解決済み】MySQLの「ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションを再起動してみてください」を回避する方法
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み】OracleでAUTO_INCREMENTでidを作成する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】PL/SQL SELECTに複数のCOUNT(DISTINCT xxx)を指定すると、予期しない結果になる。
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み] テスト
-
[解決済み】一括読み込みデータ変換エラー(切り捨て)
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] SQLでchar値をmoneyに変換できない
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] トリガーがコンパイルエラーで作成される
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。