Upload
matsuor
View
1.370
Download
0
Embed Size (px)
Citation preview
Copyright © 2015 NTT DATA INTELLILINK Corporation
JPOUG> SET EVENTS 20151017 意外と簡単じゃなかった OEM12cによる統合DB環境のCPU監視
NTTデータ先端技術株式会社 オラクル事業部 松尾 亮
2 Copyright © 2015 NTT DATA INTELLILINK Corporation
やりたいこと
統合DBサーバ
OLTP DWH
OEMサーバ
OEM リポジトリ
OMS (Oracle Management Service)
OMA (Oracle Management Agent)
Upload
監視 蓄積
DB毎のCPU使用率 OS全体のCPU使用率
こんなふうに監視したい
OLTP DWH
3 Copyright © 2015 NTT DATA INTELLILINK Corporation
OEMの監視メトリックを確認
データベースインスタンスのメトリック
→ 効率 → CPU使用率/秒 or データベースCPU時間(%) が使えるか?
4 Copyright © 2015 NTT DATA INTELLILINK Corporation
マニュアルを確認
5 Copyright © 2015 NTT DATA INTELLILINK Corporation
マニュアルを確認
正しい値というものはないらしい…
→ これでは監視に使えない
6 Copyright © 2015 NTT DATA INTELLILINK Corporation
他のメトリックを探してみた
データベースインスタンスのメトリック
→ 待機時間のボトルネック
→ 平均インスタンスCPU時間(%) が使えるか?
ここに鉛筆マークがない → 編集できない → 監視閾値が設定できない!
※閾値設定可能なメトリックだけ設計書に書いていたため、画面を見るまで発見できませんでした。。。
7 Copyright © 2015 NTT DATA INTELLILINK Corporation
マニュアルを確認
のってなーい
・
・
・
8 Copyright © 2015 NTT DATA INTELLILINK Corporation
分かんないので検証(収集間隔を10分→1分に変えてみる)
ここを変更
より短い間隔での状況を把握したいため、10分→1分に変更し、負荷検証実施。
閾値設定できないため監視に使えないが、まずは挙動を確認するためにやってみる。
収集間隔の変更前は期待した値が取得できてそうに見えたけど…
実際に掛けた負荷↓ OEMリポジトリDBに格納された値↓
えー?
9 Copyright © 2015 NTT DATA INTELLILINK Corporation
統合DBサーバ
OLTP DWH
OEMサーバ
OEM リポジトリ
OMS (Oracle Management Service)
OMA (Oracle Management Agent)
Upload
監視 蓄積
SQLを覗いてみる(調査手順)
①共有プールをFlush SQL> alter system flush shared_pool;
②メトリック収集を手動実行 $ emcli login -username=sysman -password=welcome1 $ emcli collect_metric -target_type="oracle_database" ¥ -target_name="oltp" ¥ -metric_name="wait_bottlenecks"
③v$sqlから探す SQL> set long 10000000 SQL> select SQL_FULLTEXT from v$sql where PARSING_SCHEMA_NAME = 'DBSNMP';
10 Copyright © 2015 NTT DATA INTELLILINK Corporation
SQLを覗いてみる(発見!)
SELECT : FROM : ( SELECT SUM(intsize_csec) as intsize_csec, MAX(end_time) as end_time, : AVG( CASE WHEN metric_name = 'CPU Usage Per Sec' THEN value / 100 ELSE null END ) cpu_time_ps, : FROM v$sysmetric_history WHERE metric_name IN(…'Database Time Per Sec', 'CPU Usage Per Sec', 'Host CPU Utilization (%)') AND group_id = 2 AND end_time > SYSDATE - 10 / (60 * 24) AND end_time <= SYSDATE :
主なポイント ・v$sysmetric_history から ・直近10分の ・平均値を 持ってきている
ここが収集間隔に合わせて動的に 変更されればいいのに…
11 Copyright © 2015 NTT DATA INTELLILINK Corporation
期待通り格納されなかったワケ
16:24 0.0
16:25 0.0
16:26 0.0
16:27 0.0
16:28 0.0
16:29 0.0
16:30 0.0
16:31 0.0
16:32 20.0
16:33 0.0
16:34 40.0
16:35 0.0
16:36 60.0
16:37 0.0
16:38 80.0
16:39 0.0
16:40 100.0
16:24 0.0
16:25 0.0
16:26 0.0
16:27 0.0
16:28 0.0
16:29 0.0
16:30 0.0
16:31 0.0
16:32 1.7
16:33 1.7
16:34 5.0
16:35 5.0
16:36 10.0
16:37 10.0
16:38 16.7
16:39 16.7
16:40 25.0
収集間隔を変更しても 10分間の平均値を
リポジトリに格納していた
v$sysmetric_history
(ターゲットDB)
mgmt$metric_details
(OEMリポジトリDB)
12 Copyright © 2015 NTT DATA INTELLILINK Corporation
SQLが分かったのでメトリック拡張に仕込んで解決
監視→メトリック拡張 →アクション→作成→メトリック拡張 SQLを埋め込んで、取得してきた値を監視する仕組みが構築できる。 取得した値は、OEMリポジトリDBに格納されるためレポーティングも可能。
13 Copyright © 2015 NTT DATA INTELLILINK Corporation
メトリック拡張に実装する場合の注意事項
① v$sysmetric_historyの単位はCPU_TIMEである
1秒あたりのCPU_TIME 1秒 ≒ 1秒間に1コア占有と考える。
つまり、32コア搭載のDBサーバの場合、
CPU_TIME 32秒/秒 ≒ CPU使用率100%/秒
CPU_TIME 16秒/秒 ≒ CPU使用率50%/秒
と考える。
ちなみに、OEMリポジトリに格納されていた値は初期化パラメータcpu_count値を
ベースにCPU使用率に変換されていた。
v$sysmetric_history → mgmt$metric_details
16秒/秒(cpu_count=32の場合) → 50%/秒
16秒/秒(cpu_count=16の場合) → 100%/秒
※前ページまでの検証時の値は分かりやすくするため、全てCPU使用率表示に加工しています。
14 Copyright © 2015 NTT DATA INTELLILINK Corporation
メトリック拡張に実装する場合の注意事項
② バックグラウンドプロセスのCPU_TIMEも追加する
WHERE metric_name IN
(‘Database Wait Time Ratio’, #削除
'Database Time Per Sec', #削除
‘CPU Usage Per Sec’, #残す(これはフォアグラウンドのCPU_TIME)
'Host CPU Utilization (%)‘, #削除
‘Background CPU Usage Per Sec’ #追加
)
③ 直近1件のみ取得するよう変更する
end_time > SYSDATE – 10 1 / (60 * 24) # 10→1に変更
④ 他、諸々SQLのカスタマイズは必要
不要な条件式、計算式、カラム等の削除など
CPU_TIME → CPU使用率への変換
※どの値で表示したいか(cpu_countベース?OSのCPUベース?CPU_TIMEのまま?)を検討
※加工に拘らず v$sysmetric_history を使ってイチから作るという意識の方がたぶん簡単です(笑)
15 Copyright © 2015 NTT DATA INTELLILINK Corporation
おわりに
マニュアルに書いてなくても…
サポートに非公開と言われても…
なんとかできることは多々ある!
疑問をもって検証してみましょう!!
と言いつつ、今回の検証は自分でやってません(笑)
16 Copyright © 2015 NTT DATA INTELLILINK Corporation
Special Thanks!検証してくれたお二人
17 Copyright © 2015 NTT DATA INTELLILINK Corporation
End!
ORA-03113:
通信チャネルでend-of-fileが検出されました
続きは夜会で...
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA INTELLILINK Corporation