コンカレントが遅くなったときにやること(1)
私が教えてほしいです。正直。
・・・だと終わってしまうので、私だったらどうするかなぁと考えてみました。以下恥さらし。
まず最初に
落ち着きましょう。ちょうだいじ。
現状を把握する
コンカレントが全然終わらないのか、それとも待てば終わるのか。全部の処理が遅いのか、特定のコンカレントだけ遅いのか。再現するのか。どのくらい時間がかかっているのか。くらいはざっくり把握します。
緊急度を判断する
- そのパフォーマンスで業務が回らないのか。
- 放置した場合、どこにどう影響するのか。
- 余裕があれば調べてほしい程度なのか徹夜してでも対応が必要なのか。
担当者に徹夜してでも…と要望出すなら要望を出す側も徹夜対応が必要です。だって対応策の可否判断は要望を出した側の責任ですから。 - 回避策はないのか。
以上を考えたうえで対応期限を判断します。いろんな意味で健康を損ねない方向で。
標準プログラムなのか、アドオンなのかを判断する
開発担当者に聞けば(開発担当者なら)、標準プログラムなのかアドオンプログラムなのかわかるはず。
標準プログラムなら→KROWNでコンカレント名をキーワードにして検索します。情報が見つかったりパフォーマンス改善パッチが出ていたりします。MetalinkでSRを起票するのも有効です。あとはもうSRの指示に従います。終了。
アドオンプログラムなら→次へ。
コンカレントのタイプを特定する
PL/SQLかReportsかshell(ホスト)かjavaかで対応違ってくると思います。PL/SQL以外ワカンネ。コンカレントが遅い場合、たいていDB処理が遅いんだと思うのですが。
(再実行可能なら)調査のための仕掛けをする
よくやるのはSQLトレースです。PL/SQLタイプなら、プログラム定義画面で「トレース使用可能」にチェックを入れればSQLトレースが取得できます。たぶん。Reportsは確かプログラムいじらないとトレース取得できなかったと記憶していますが詳細は忘れました。javaワカンネ。shellもっとワカンネ。
他にはstatspackやAWR(はふつう仕掛けられてますが)などを仕掛けます。OEMが使えればリアルタイムで遅いのが確認できてよいです。凹めます。
再実行してみる
本番環境だとやりにくいですけど。