質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

Q&A

解決済

1回答

4901閲覧

【oracle】過去のcommit回数を調べる方法

guitar-guitar

総合スコア42

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

0グッド

0クリップ

投稿2017/03/28 06:19

◆事象
oracle DB の待機イベントlogfilesyncが直接の起因でサーバプロセスが待ってしまい、コネクションプールあふれを起こしています。

◆知りたいこと
一般的にlogfilesyncはコミットの回数やREDOログファイルの書込み先DISKの性能依存が考えらえると思いますが
DB上から過去のコミット回数を調べるすべはないでしょうか?
該当時間帯にコミット回数が他の時間帯と比べて多かったのか、少なかったのかが判断したいです。

◆調査したこと
・ASH上で該当の時間帯にlogfilesyncのイベント数とtimewaitedの時間が著しく長いことを確認。
・ASH上で該当の時間帯に単純にSQLIDが記録されている回数が多いことを確認(しかしながらコミットの回数ではないと考えています。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

直接の回答ではありませんが、
待機イベント log file sync はlog buffer の情報がオンライン REDO ログファイルに書き込まれる際にLGWR プロセスの書き込み処理の終了を待つイベントですから、直接 commit の回数を表すものでないにしても、log file syncのWaitsが多ければ commit の回数も多いであろうと推測します。
100万行 insert 後最後に1回 commit すべきところ、1行insertした毎にcommitしていた、なんてプログラムがバッチあったことがあります。
SQL Statistics を当たれば該当するSQLを特定できるかもしれません。

投稿2017/03/29 02:15

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guitar-guitar

2017/03/29 06:47

ご回答いただきありがとうござます。 >直接 commit の回数を表すものでないにしても これはおっしゃる通りですね。 目的としては『該当時間帯にコミット回数が他の時間帯と比べて多かったのか、少なかったのかが判断したいです。』といのがあります。 SQLは実は特定しているのですが、DBからcommit回数が分かればよいと考えていました。 (log file syncが起きたのはcommitが多かったからだと結論付けができればよいと考えています。) ASH上にSQLIDは記録されているのですが、同じSQLIDが複数あった場合、実行された回数なのか、サマリなのかわからず・・・。
Orlofsky

2017/03/29 20:24

スナップショットを取得する間隔を調整することで「該当時間」とそれ以外を把握できます。 マニュアルに載っていない情報はググるかサポートに問合せましょう。
guitar-guitar

2017/04/03 10:26

過去のは見れませんが、今後の為にスナップショットのタイミングは検討してみます。 ご回答いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問