SlideShare a Scribd company logo
1 of 101
Download to read offline
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
デモとディスカッションで
体験するOracle DBトラブル対応
日本オラクル株式会社
クラウド・テクノロジーコンサルティング事業本部
2018/8/22
日本オラクル株式会社 Confidential
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
自己紹介(柴田 歩)
• 日本オラクル株式会社
クラウド・テクノロジーコンサルティング事業本部
プリンシパルコンサルタント
柴田 歩(しばた あゆむ)
• 2007年4月に中途で日本オラクルに入社
• DBの製品コンサルとして、DB関連のプロジェクトを歴任
• やきうのお兄ちゃんが綴るDBブログ、絶賛更新中!
– ねら~ITエンジニア雑記
https://gonsuke777.hatenablog.com/
2日本オラクル株式会社 Confidential
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
▪ iostat await svctm の
見かた、考え方
▪ https://www.slideshare.net/shibataay
umu/iostat-await-svctm
▪ まだ統計固定で消耗してるの?
-JPOUG Advent Calendar 2015-
▪ http://d.hatena.ne.jp/gonsuke777/20
151208/1449587953
▪ JPOUG Tech Talk Night #6「固定
化か?最新化か?オプティマイザ統
計の運用をもう一度考える。」
▪ http://d.hatena.ne.jp/gonsuke777/20
160226/1456488499
過去コンテンツもよろしくです彡(^)(^)
• DDD 2013 SQLチューニングに
必要な考え方と最新テクニック
• http://www.oracle.com/technetwor
k/jp/ondemand/ddd-2013-
2051348-ja.html
コレ
3
• DDD 2016 SQL性能を最大限に引き出す
DB 12cクエリー・オプティマイザ 新機能
活用と統計情報運用の戦略
• http://www.oracle.com/technetwork/jp/ond
emand/ddd-2016-3373953-ja.html
コレ
日本オラクル株式会社 Confidential
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
はじめに
•本セミナーではデモ形式でOracle Databaseの
障害を体験していただきます。
•擬似的に障害を発生させて、負荷傾向を分析し
てディスカッションを行いながら、原因を特定
する過程を体験して頂きます。
日本オラクル株式会社 Confidential 4
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
目次
1章. 前提知識(座学)
2章. デモの流れ・ご説明
3章. デモ(障害発生)とディスカッション
4章. まとめ
日本オラクル株式会社 Confidential 5
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
1章. 前提知識(座学)
日本オラクル株式会社 Confidential 6
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
唐突ですが、
DBの稼働状況を
見える化してますか?
日本オラクル株式会社 Confidential 7
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
DBの稼働状況を確認するための各種情報
• CPU使用率(sar, mpstat, vmstatなど)
• Memory使用状況(vmstat, freeなど)
• Disk I/O統計(iostatなど)
• AWR/Statspack(html, txtレポート)
• ASH(Active Session History)
• アラートログ(alert_xxxxx.log)
• ORAエラー(アラートログ、標準出力、アプリログなど)
日本オラクル株式会社 Confidential 8
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
DBの稼働状況を確認するための各種情報
• CPU使用率(sar, mpstat, vmstatなど)
• Memory使用状況(vmstat, freeなど)
• Disk I/O統計(iostatなど)
• AWR/Statspack(html, txtレポート)
• ASH(Active Session History)
• アラートログ(alert_xxxxx.log)
• ORAエラー(アラートログ、標準出力、アプリログなど)
日本オラクル株式会社 Confidential 9
デモの前提知識として、
ASHについてざっくり解説
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ASH(Active Session Hisotory)とは?
• ASH(Active Session History)とは Oracle Database の
を 蓄積/格納した動的ビュー&ディクショナリ のこと
– V$ACTIVE_SESSION_HISTORY
– GV$ACTIVE_SESSION_HISTORY
– DBA_HIST_ACTIVE_SESSION_HISTORY ※
※DBA_HIST_~が付与されておりAWR表の一部、(G)V$~が揮発しても後から参照可能
日本オラクル株式会社 Confidential
Active な Session の 履歴
10
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Active な Session とは?
•接続済Sessionが以下のどちらかの状態であること
–DB CPU(CPUを使用中)
–非アイドルの待機イベントで待機中
•以下の Time Model を 基本としている。
日本オラクル株式会社 Confidential
DB Time = CPU Time + Non-Idle
wait time
11
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
参考:代表的な非アイドル待機イベント(1)
• Disk I/O系の待機イベント(Foreground系)
– db file sequential read/direct path read など
• Disk I/O系の待機イベント(Background系)
– log file parallel write/db file parallel write など
• ロック(enqueue)系の待機イベント
– enq: TX - row lock contention/enq: TM - contention など
• Commit/REDOログ待ち系の待機イベント
– log file sync など
• Latch/mutex系の待機イベント
– latch free/latch: shared pool/cursor: mutex S など
日本オラクル株式会社 Confidential 12
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
参考:代表的な非アイドル待機イベント(2)
• RAC - Cache Fusion系の待機イベント
– gc cr(or current) block 2-way (or 3-way)
– gc cr(or current) grant 2-way
– gc buffer busy acquire/release など
• Network系の待機イベント
– SQL*Net message to client
– SQL*Net message from dblink
– SQL*Net message to dblink など
日本オラクル株式会社 Confidential 13
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
参考:代表的なアイドル待機イベント
• 代表的なアイドルの待機イベント
– SQL*Net message from client
– PX Idle Wait
– PL/SQL lock timer
– pmon timer
– smon timer
– rdbms ipc message
日本オラクル株式会社 Confidential 14
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Inter
Connect
GV$ACTIVE_
SESSION_
HISTORY
GV$SESSION
各動的ビュー(V$~) と ディクショナリ(DBA~) の 関係図
日本オラクル株式会社 Confidential
DB #1
V$SESSION
接続済Session
(アイドル含む)の
リアルな状態を保持
V$ACTIVE_SES
SION_HISTORY
Active な Session を
1秒に1回サンプリング
して履歴として保持
DB #2
V$SESSION
V$ACTIVE_SES
SION_HISTORY
DBA_HIST_ACTIVE_
SESS_HISTORY
V$ACTIVE~の履歴を
10秒/1回に間引いて
DBA_HIST_ACTIVE~表
に格納(後から見れる)
GV$~ビューは
V$~ビューを
RACのノード跨りで
参照可能
15
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
1秒に1回、ActiveなSessionがサンプリングされてASHに格納
日本オラクル株式会社 Confidential 16
Session 1
Session 2
Session 3
Session 4
Session x…
Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling
(G)V$ACTIVE_
SESSION_
HISTORY
凡例
Active
Session
1秒
ActiveなSessionが
1秒に1回サンプリングさ
れてASHに格納される。
V$SESSION
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
V$ACTIVE_SESSION_HISTORYビューの定義
• 1秒/1回の頻度で Active な Session が V$SESSION から
サンプリングされて、当ビューの履歴として格納される。
日本オラクル株式会社 Confidential
SQL> DESC V$ACTIVE_SESSION_HISTORY;
Name Null? Type
--------------------------- -------- --------------
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
IS_AWR_SAMPLE VARCHAR2(1)
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
SESSION_TYPE VARCHAR2(10)
FLAGS NUMBER
USER_ID NUMBER
SQL_ID VARCHAR2(13)
IS_SQLID_CURRENT VARCHAR2(1)
SQL_CHILD_NUMBER NUMBER
SQL_OPCODE NUMBER
SQL_OPNAME VARCHAR2(64)
FORCE_MATCHING_SIGNATURE NUMBER
TOP_LEVEL_SQL_ID VARCHAR2(13)
TOP_LEVEL_SQL_OPCODE NUMBER
SQL_ADAPTIVE_PLAN_RESOLVED NUMBER
SQL_FULL_PLAN_HASH_VALUE NUMBER
SQL_PLAN_HASH_VALUE NUMBER
SQL_PLAN_LINE_ID NUMBER
SQL_PLAN_OPERATION VARCHAR2(30)
SQL_PLAN_OPTIONS VARCHAR2(30)
SQL_EXEC_ID NUMBER
SQL_EXEC_START DATE
PLSQL_ENTRY_OBJECT_ID NUMBER
PLSQL_ENTRY_SUBPROGRAM_ID NUMBER
PLSQL_OBJECT_ID NUMBER
PLSQL_SUBPROGRAM_ID NUMBER
QC_INSTANCE_ID NUMBER
QC_SESSION_ID NUMBER
QC_SESSION_SERIAL# NUMBER
PX_FLAGS NUMBER
EVENT VARCHAR2(64)
EVENT_ID NUMBER
EVENT# NUMBER
SEQ# NUMBER
P1TEXT VARCHAR2(64)
P1 NUMBER
P2TEXT VARCHAR2(64)
P2 NUMBER
P3TEXT VARCHAR2(64)
P3 NUMBER
WAIT_CLASS VARCHAR2(64)
WAIT_CLASS_ID NUMBER
WAIT_TIME NUMBER
SESSION_STATE VARCHAR2(7)
TIME_WAITED NUMBER
BLOCKING_SESSION_STATUS VARCHAR2(11)
BLOCKING_SESSION NUMBER
BLOCKING_SESSION_SERIAL# NUMBER
BLOCKING_INST_ID NUMBER
BLOCKING_HANGCHAIN_INFO VARCHAR2(1)
CURRENT_OBJ# NUMBER
CURRENT_FILE# NUMBER
CURRENT_BLOCK# NUMBER
CURRENT_ROW# NUMBER
TOP_LEVEL_CALL# NUMBER
TOP_LEVEL_CALL_NAME VARCHAR2(64)
CONSUMER_GROUP_ID NUMBER
XID RAW(8)
REMOTE_INSTANCE# NUMBER
TIME_MODEL NUMBER
IN_CONNECTION_MGMT VARCHAR2(1)
IN_PARSE VARCHAR2(1)
IN_HARD_PARSE VARCHAR2(1)
IN_SQL_EXECUTION VARCHAR2(1)
IN_PLSQL_EXECUTION VARCHAR2(1)
IN_PLSQL_RPC VARCHAR2(1)
IN_PLSQL_COMPILATION VARCHAR2(1)
IN_JAVA_EXECUTION VARCHAR2(1)
IN_BIND VARCHAR2(1)
IN_CURSOR_CLOSE VARCHAR2(1)
IN_SEQUENCE_LOAD VARCHAR2(1)
IN_INMEMORY_QUERY VARCHAR2(1)
IN_INMEMORY_POPULATE VARCHAR2(1)
IN_INMEMORY_PREPOPULATE VARCHAR2(1)
IN_INMEMORY_REPOPULATE VARCHAR2(1)
IN_INMEMORY_TREPOPULATE VARCHAR2(1)
CAPTURE_OVERHEAD VARCHAR2(1)
REPLAY_OVERHEAD VARCHAR2(1)
IS_CAPTURED VARCHAR2(1)
IS_REPLAYED VARCHAR2(1)
SERVICE_HASH NUMBER
PROGRAM VARCHAR2(48)
MODULE VARCHAR2(64)
ACTION VARCHAR2(64)
CLIENT_ID VARCHAR2(64)
MACHINE VARCHAR2(64)
PORT NUMBER
ECID VARCHAR2(64)
DBREPLAY_FILE_ID NUMBER
DBREPLAY_CALL_COUNTER NUMBER
TM_DELTA_TIME NUMBER
TM_DELTA_CPU_TIME NUMBER
TM_DELTA_DB_TIME NUMBER
DELTA_TIME NUMBER
DELTA_READ_IO_REQUESTS NUMBER
DELTA_WRITE_IO_REQUESTS NUMBER
DELTA_READ_IO_BYTES NUMBER
DELTA_WRITE_IO_BYTES NUMBER
DELTA_INTERCONNECT_IO_BYTES NUMBER
DELTA_READ_MEM_BYTES NUMBER
PGA_ALLOCATED NUMBER
TEMP_SPACE_ALLOCATED NUMBER
CON_DBID NUMBER
CON_ID NUMBER
DBOP_NAME VARCHAR2(30)
DBOP_EXEC_ID NUMBER
17
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Enterprise Manager による ASH分析
• パフォーマンス・ハブのアクティビティで ASH を GUI参照
日本オラクル株式会社 Confidential 18
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ASHの見える化
日本オラクル株式会社 Confidential 19
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
今回のセミナーでは、
ASHを見える化して
皆様と一緒に眺めながら、
障害の切り分けを
デモしようと思います
日本オラクル株式会社 Confidential 20
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
参考:ASHを参照するために必要なオプション
• ASH を 参照するには Enterprise Edition のオプション機
能となるDiagnostic Packのライセンスが必要となります。
– Oracle Databaseライセンス情報ユーザー・マニュアル
12cリリース1 (12.1) B71334-09
Oracle Diagnostics Pack
http://docs.oracle.com/cd/E57425_01/121/DBLIC/options.htm#CIHIHDDJ
> Oracle Diagnostics Packに含まれる機能は、次のとおりです。
> :
> アクティブ・セッション履歴(ASH)
> :
• Oracle Cloud の DBCS では Enterprise Edition以上で
Diagnostic Pack の機能が利用可能
日本オラクル株式会社 Confidential 21
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
2章. デモの流れ・ご説明
日本オラクル株式会社 Confidential 22
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
デモの環境
• Oracle CloudのDBCSにSwingbenchで負荷掛け
• 負荷の様子をDBCSのEM(DB Express) や
SQL Developer Webで、負荷の傾向を参照
日本オラクル株式会社 Confidential 23
DBCS IaaS
Oracle Cloud
Internet Internet
皆様
皆様
皆様
Terminal
で接続
私
Swingbench
で負荷掛け
Swingbench
EM or SQL
Developer Web
で参照
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Swingbenchについて
• Dominic Giles氏( @dominic_giles )が
作成されている Oracle Database への負荷掛けツール
– http://dominicgiles.com/swingbench.html
日本オラクル株式会社 Confidential 24
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
デモの流れ
1. 皆様が社内Network/EM(DB Express)/
SQL Developer Webに接続する。
2. 私(柴田)がSwingbenchで負荷掛け開始
3. 皆様がEM/SQL Developerを確認
4. 私(柴田)が障害を発生させる。
5. 皆様がEM/SQL Developerを確認
6. 原因をディスカッション
7. 障害の解説
日本オラクル株式会社 Confidential 25
2~3シナリオ
を実施予定
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
お手元の紙を参照して、
社内Networkに接続&
EM(DB Express)/
SQL Developer Web
に接続してみて下さい。
日本オラクル株式会社 Confidential 26
※PCをお持ちの方は、両方接続することを
オススメしておきます。
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
まずは正常時の
負荷/傾向を確認
日本オラクル株式会社 Confidential 27
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
正常時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 28
$ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx-
xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml
Author : Dominic Giles
Version : 2.6.0.1082
Results will be written to results.xml.
Hit Return to Terminate Run...
Time Users TPM TPS S I U D C R
01:56:14 [0/10] 0 0 0 0 0 0 0 0
01:56:15 [0/10] 0 0 0 0 0 0 0 0
01:56:16 [0/10] 0 0 0 0 0 0 0 0
01:56:17 [10/10] 0 0 0 0 0 0 0 0
01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0
01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0
01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0
01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0
01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0
01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0
01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0
01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0
:
Transaction数、DML数、COMMIT数など。
(ざっくり)ここの数字が大きければ処理量が多い。
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
正常時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 29
$ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx-
xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml
Author : Dominic Giles
Version : 2.6.0.1082
Results will be written to results.xml.
Hit Return to Terminate Run...
Time Users TPM TPS S I U D C R
01:56:14 [0/10] 0 0 0 0 0 0 0 0
01:56:15 [0/10] 0 0 0 0 0 0 0 0
01:56:16 [0/10] 0 0 0 0 0 0 0 0
01:56:17 [10/10] 0 0 0 0 0 0 0 0
01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0
01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0
01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0
01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0
01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0
01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0
01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0
01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0
:
一番右はROLLBACK数で、通常時は0
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
正常時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 30
$ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx-
xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml
Author : Dominic Giles
Version : 2.6.0.1082
Results will be written to results.xml.
Hit Return to Terminate Run...
Time Users TPM TPS S I U D C R
01:56:14 [0/10] 0 0 0 0 0 0 0 0
01:56:15 [0/10] 0 0 0 0 0 0 0 0
01:56:16 [0/10] 0 0 0 0 0 0 0 0
01:56:17 [10/10] 0 0 0 0 0 0 0 0
01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0
01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0
01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0
01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0
01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0
01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0
01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0
01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0
:
この TPS(Transaction per sec、
秒間あたりのトランザクション数)に注目
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
正常時の負荷/傾向・EM(DB Express)
• CPU負荷(緑)が中心
日本オラクル株式会社 Confidential 31
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
正常時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 32
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
3章. デモ(障害発生)とディスカッション
日本オラクル株式会社 Confidential 33
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
本章では、
2つ(時間が有れば3つ)の
障害を交えて、
デモとディスカッション
を実施します。
日本オラクル株式会社 Confidential 34
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1.
では第1の障害を
発生させてみます。
日本オラクル株式会社 Confidential 35
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害発生時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 36
02:12:29 [10/10] 418734 6687 418734 0 418734 0 418734 0
02:12:30 [10/10] 418956 6561 418956 0 418956 0 418956 0
02:12:31 [10/10] 419363 6768 419363 0 419363 0 419363 0
02:12:32 [10/10] 419559 6905 419560 0 419560 0 419560 0
02:12:33 [10/10] 419323 6873 419323 0 419323 0 419323 0
02:12:34 [10/10] 418634 6325 418634 0 418634 0 418634 0
02:12:35 [10/10] 418860 6826 418860 0 418860 0 418860 0
02:12:36 [10/10] 419087 7431 419087 0 419087 0 419087 0
02:12:37 [10/10] 419194 7297 419195 0 419195 0 419195 0
02:12:38 [10/10] 419273 7320 419273 0 419273 0 419273 0
02:12:39 [10/10] 419046 6856 419047 0 419047 0 419047 0
02:12:40 [10/10] 419424 7298 419424 0 419424 0 419424 0
02:12:41 [10/10] 414255 1743 414255 0 414255 0 414255 0
02:12:42 [10/10] 407203 0 407203 0 407203 0 407203 0
02:12:43 [10/10] 400188 0 400188 0 400188 0 400188 0
02:12:44 [10/10] 393213 0 393213 0 393213 0 393213 0
02:12:45 [10/10] 386132 0 386132 0 386132 0 386132 0
02:12:46 [10/10] 379177 0 379177 0 379177 0 379177 0
02:12:47 [10/10] 371984 0 371983 0 371983 0 371983 0
02:12:48 [10/10] 364938 0 364938 0 364938 0 364938 0
02:12:49 [10/10] 357461 0 357461 0 357461 0 357461 0
:
TPSが0に減少(処理量ゼロ)
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害発生時の負荷/傾向・EM(DB Express)
• 待機クラス「Application」で待機
日本オラクル株式会社 Confidential 37
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害発生時の負荷/傾向・EM(DB Express)
• 待機イベント「enq: TM - contention」で待機
日本オラクル株式会社 Confidential 38
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害発生時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 39
Blockedが
上昇
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
enqueue(エンキュー)
で待たされている。
日本オラクル株式会社 Confidential 40
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
enqueue(エンキュー)とは?
•enqueue(エンキュー)とは、Oracle Database
における排他制御(ロック)の仕組み
•ロック(enqueue)系の待機イベント
– enq: TX - row lock contention…行ロック待機
– enq: TM - contention…表ロック待機 など
– 他にも色々有ります。
•誰かがenqueue(ロック)を取って、
トランザクションが待たされている。
日本オラクル株式会社 Confidential 41
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
次の一手は?
日本オラクル株式会社 Confidential 42
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. ディスカッション
•Swingbenchの処理(トランザクション)は
enqueue(エンキュー)で待たされている
ことが確認できた。次の一手は?
–ロック競合の箇所を特定 ⇒ V$LOCKを見る。
–ASH や V$SESSION の BLOCKING~列を見る。
日本オラクル株式会社 Confidential 43
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
EM(DB Express)で
ロックを取っている
セッションを
特定してみる
日本オラクル株式会社 Confidential 44
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害発生時の負荷/傾向・EM(DB Express)
• ブロックしているセッションを特定
日本オラクル株式会社 Confidential 45
プルダウン ⇒ リソース使用量
⇒ ブロックしているセッション
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
V$ACTIVE_SESSION_HISTORYビューの概要
•ASH(V$ACTIVE~)のBLOCKING~列を見える化
日本オラクル株式会社 Confidential
SQL> DESC V$ACTIVE_SESSION_HISTORY;
Name Null? Type
--------------------------- -------- --------------
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
IS_AWR_SAMPLE VARCHAR2(1)
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
SESSION_TYPE VARCHAR2(10)
FLAGS NUMBER
USER_ID NUMBER
SQL_ID VARCHAR2(13)
IS_SQLID_CURRENT VARCHAR2(1)
:
:
SESSION_STATE VARCHAR2(7)
TIME_WAITED NUMBER
BLOCKING_SESSION_STATUS VARCHAR2(11)
BLOCKING_SESSION NUMBER
BLOCKING_SESSION_SERIAL# NUMBER
BLOCKING_INST_ID NUMBER
BLOCKING_HANGCHAIN_INFO VARCHAR2(1)
:
46
ASHのこの列を見える化
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ロックを取った
セッションを
特定した!対応は?
日本オラクル株式会社 Confidential 47
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. ロックを取ったセッションをKILL
日本オラクル株式会社 Confidential 48
02:57:47 SQL> ALTER SYSTEM KILL SESSION '375, 47599';
System altered.
Elapsed: 00:00:00.01
02:58:20 SQL>
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害解消時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 49
02:58:12 [10/10] 0 0 0 0 0 0 0 0
02:58:13 [10/10] 0 0 0 0 0 0 0 0
02:58:14 [10/10] 0 0 0 0 0 0 0 0
02:58:15 [10/10] 0 0 0 0 0 0 0 0
02:58:16 [10/10] 0 0 0 0 0 0 0 0
02:58:17 [10/10] 0 0 0 0 0 0 0 0
02:58:18 [10/10] 0 0 0 0 0 0 0 0
02:58:19 [10/10] 0 0 0 0 0 0 0 0
02:58:20 [10/10] 0 0 0 0 0 0 0 0
02:58:21 [10/10] 1911 1911 1911 0 1911 0 1911 0
02:58:22 [10/10] 8662 6751 8662 0 8662 0 8662 0
02:58:23 [10/10] 16128 7466 16129 0 16129 0 16129 0
02:58:24 [10/10] 23872 7744 23873 0 23873 0 23873 0
02:58:25 [10/10] 30415 6543 30415 0 30415 0 30415 0
02:58:26 [10/10] 37221 6806 37221 0 37221 0 37221 0
02:58:27 [10/10] 43709 6488 43709 0 43709 0 43709 0
02:58:28 [10/10] 51036 7327 51036 0 51036 0 51036 0
02:58:29 [10/10] 58734 7698 58734 0 58734 0 58734 0
02:58:30 [10/10] 66011 7277 66011 0 66011 0 66011 0
02:58:31 [10/10] 73160 7149 73160 0 73160 0 73160 0
02:58:32 [10/10] 80191 7031 80191 0 80191 0 80191 0
02:58:33 [10/10] 87613 7422 87613 0 87613 0 87613 0
TPSが回復
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害解消時の負荷/傾向・EM(DB Express)
• 待機イベント「enq: TM - contention」が解消
日本オラクル株式会社 Confidential 50
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1. 障害解消時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 51
Blocked
が解消
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Case1. の障害発生のやり方
• アプリ(Swingbench)が参照する表を、排他モードでロック
(LOCK TABLE ~ IN EXCLUSIVE MODE;)
日本オラクル株式会社 Confidential 52
SQL> LOCK TABLE ORDERS IN EXCLUSIVE MODE;
Table(s) Locked.
Elapsed: 00:00:00.02
SQL>
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case1.障害のまとめ
•処理量(トランザクション量)低下時のASH傾向
–enqueue(エンキュー)で待たされている。
–enq: TM - contention(表ロック)で待機
•原因の追及
–ASHのBLOCKING_SESSIONから、
ロックを取ったセッションを特定
•対応方法
–ロックを取ったセッションをKILL
日本オラクル株式会社 Confidential 53
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2.
次に第2の障害を
発生させてみます
日本オラクル株式会社 Confidential 54
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 55
03:28:53 [10/10] 427344 7327 427346 0 427346 0 427346 0
03:28:54 [10/10] 426975 6455 426975 0 426975 0 426975 0
03:28:55 [10/10] 426130 6682 426130 0 426130 0 426130 0
03:28:56 [10/10] 425960 7129 425962 0 425962 0 425962 0
03:28:57 [10/10] 424963 6484 424963 0 424963 0 424963 0
03:28:58 [10/10] 424909 6738 424909 0 424909 0 424909 0
03:28:59 [10/10] 425169 6883 425169 0 425169 0 425169 0
03:29:00 [10/10] 425491 7524 425493 0 425493 0 425493 0
03:29:01 [10/10] 425783 7029 425783 0 425783 0 425783 0
03:29:02 [10/10] 425542 6956 425542 0 425542 0 425542 0
03:29:03 [10/10] 420595 2485 420595 0 420595 0 420595 0
03:29:04 [10/10] 413897 12 413897 0 413897 0 413897 0
03:29:05 [10/10] 406855 12 406855 0 406855 0 406855 0
03:29:06 [10/10] 399703 12 399703 0 399703 0 399702 0
03:29:07 [10/10] 392520 12 392520 0 392520 0 392520 0
03:29:08 [10/10] 385239 13 385238 0 385238 0 385238 0
03:29:09 [10/10] 378447 13 378446 0 378445 0 378445 0
03:29:10 [10/10] 371725 11 371725 0 371725 0 371725 0
03:29:11 [10/10] 364761 11 364760 0 364760 0 364760 0
03:29:12 [10/10] 357647 12 357647 0 357647 0 357647 0
:
TPSが10台に減少
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・EM(DB Express)
• CPUのActiveセッションが増加
日本オラクル株式会社 Confidential 56
増加
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 57
Active
が上昇
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
CPUを使用する
セッションが増えて
処理量は落ちた。
日本オラクル株式会社 Confidential 58
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
次の一手は?
日本オラクル株式会社 Confidential 59
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. ディスカッション1
•Swingbenchの処理量(トランザクション量)が
激減(0ではない)して、CPUを使用するセッション
が増えている。次の一手は?
–負荷が高いSQL(sql_id)の特定
–リアルタイムSQL監視で詳細を確認
–AWRを見る。
日本オラクル株式会社 Confidential 60
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
負荷が高い
SQL(sql_id)
を特定してみる
日本オラクル株式会社 Confidential 61
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・EM(DB Express)
• 負荷が高いSQL(sql_id)の特定
日本オラクル株式会社 Confidential 62
sql_id = '7hk2m2702ua0g'の負荷が高い
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・EM(DB Express)
• sql_idをクリックして更にドリルダウン
日本オラクル株式会社 Confidential 63
実行計画のハッシュ値が2種類
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
V$ACTIVE_SESSION_HISTORYビューの概要
• ASH(V$ACTIVE~)の
SQL_PLAN_HASH_VALUE列を見える化している。
日本オラクル株式会社 Confidential
SQL> DESC V$ACTIVE_SESSION_HISTORY;
Name Null? Type
--------------------------- -------- --------------
SAMPLE_ID NUMBER
SAMPLE_TIME TIMESTAMP(3)
IS_AWR_SAMPLE VARCHAR2(1)
SESSION_ID NUMBER
SESSION_SERIAL# NUMBER
SESSION_TYPE VARCHAR2(10)
FLAGS NUMBER
USER_ID NUMBER
SQL_ID VARCHAR2(13)
IS_SQLID_CURRENT VARCHAR2(1)
:
:
SQL_ADAPTIVE_PLAN_RESOLVED NUMBER
SQL_FULL_PLAN_HASH_VALUE NUMBER
SQL_PLAN_HASH_VALUE NUMBER
SQL_PLAN_LINE_ID NUMBER
SQL_PLAN_OPERATION VARCHAR2(30)
SQL_PLAN_OPTIONS VARCHAR2(30)
SQL_EXEC_ID NUMBER
SQL_EXEC_START DATE
:
64
ASHのこの列を見える化
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・EM(DB Express)
• 正常時のPLAN_HASH_VALUE
日本オラクル株式会社 Confidential 65
正常時はPLAN_HASH_VALUEが2048963432
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害発生時の負荷/傾向・EM(DB Express)
• 障害時のPLAN_HASH_VALUE
日本オラクル株式会社 Confidential 66
障害時はPLAN_HASH_VALUEが2768138649
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
SQLの実行計画が
変動して、負荷が
高くなっている。
日本オラクル株式会社 Confidential 67
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
次の一手は?
日本オラクル株式会社 Confidential 68
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. ディスカッション2
• SQL(sql_id = '7hk2m2702ua0g')の実行計画が
変動して負荷が高まり、スループットが落ちてい
る。次の一手は?
– オプティマイザ統計を取り直す。
– 実行計画を確認する。
– SPM(SQL Plan Management)/アウトライン
– SQL修正(ヒント句)
– 統計のリストア
– SQLチューニング・アドバイザ
日本オラクル株式会社 Confidential 69
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. (今回は)関連表の統計情報を採取
日本オラクル株式会社 Confidential 70
04:44:19 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'ORDERS', DEGREE => 4,
NO_INVALIDATE => FALSE);
PL/SQL procedure successfully completed.
Elapsed: 00:00:03.51
04:44:22 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'ORDER_ITEMS', DEGREE => 4,
NO_INVALIDATE => FALSE);
PL/SQL procedure successfully completed.
Elapsed: 00:00:03.05
04:44:25 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'CUSTOMERS', DEGREE => 4,
NO_INVALIDATE => FALSE);
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.04
04:44:27 SQL>
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害解消時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 71
04:44:09 [10/10] 681 11 681 0 681 0 681 0
04:44:10 [10/10] 684 14 684 0 684 0 684 0
04:44:11 [10/10] 685 12 685 0 685 0 685 0
04:44:12 [10/10] 681 10 681 0 681 0 681 0
04:44:13 [10/10] 679 11 679 0 679 0 679 0
04:44:14 [10/10] 679 11 679 0 679 0 679 0
04:44:15 [10/10] 680 12 680 0 680 0 680 0
04:44:16 [10/10] 677 11 677 0 677 0 677 0
04:44:17 [10/10] 677 13 677 0 677 0 677 0
04:44:18 [10/10] 679 12 679 0 679 0 679 0
04:44:19 [10/10] 681 12 681 0 681 0 681 0
04:44:20 [10/10] 679 9 679 0 679 0 679 0
04:44:21 [10/10] 679 10 679 0 679 0 679 0
04:44:22 [10/10] 2301 1637 2301 0 2301 0 2301 0
04:44:23 [10/10] 5156 2865 5156 0 5156 0 5156 0
04:44:24 [10/10] 8333 3190 8333 0 8333 0 8333 0
04:44:25 [10/10] 12275 3955 12275 0 12275 0 12275 0
04:44:26 [10/10] 17591 5326 17591 0 17591 0 17591 0
04:44:27 [10/10] 21568 3990 21568 0 21568 0 21568 0
04:44:28 [10/10] 26670 5113 26670 0 26670 0 26670 0
04:44:29 [10/10] 34256 7598 34256 0 34256 0 34256 0
04:44:30 [10/10] 41429 7185 41429 0 41429 0 41429 0
:
TPSが回復
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害解消時の負荷/傾向・EM(DB Express)
• CPUのActiveセッションが減少
日本オラクル株式会社 Confidential 72
減少
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害解消時の負荷/傾向・EM(DB Express)
• 実行計画が(おそらく効率の良い)異なるものに変動している。
日本オラクル株式会社 Confidential 73
実行計画が変動
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害解消時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 74
Active
が減少
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Case2. の障害発生のやり方
• アプリ(Swingbench)が参照する表と索引に、
実態とは乖離した不適切な統計を手動設定(SET_~_STATS)
日本オラクル株式会社 Confidential 75
EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORDER_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1,
clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ITEM_ORDER_IX', numrows => 100000000, numlblks=> 100000000, numdist => 1,
clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'CUSTOMERS_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1,
clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORDER_ITEMS_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1,
clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORD_WAREHOUSE_IX', numrows => 100000000, numlblks=> 100000000, numdist =>
1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_TABLE_STATS ('SOE', 'ORDER_ITEMS', numrows => 100, numblks => 10, NO_INVALIDATE => FALSE);
EXEC DBMS_STATS.SET_TABLE_STATS ('SOE', 'ORDERS', numrows => 100, numblks => 10, NO_INVALIDATE => FALSE);
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Case2. の障害発生時の実行計画
• Case2. 障害発生時のsql_id='7hk2m2702ua0g'の実行計画
日本オラクル株式会社 Confidential 76
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Case2. の正常時の実行計画
• Case2. 正常時のsql_id='7hk2m2702ua0g'の実行計画
日本オラクル株式会社 Confidential 77
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case2. 障害のまとめ
•処理量(トランザクション量)低下時のASH傾向
–一部SQL(sql_id='7hk2m2702ua0g')の負荷が高くなっている。
•原因を追求
–ASHのSQL_PLAN_HASH_VALUEから実行計画の変動を特定
–SQLの実行計画が効率の悪いものに変動している。
•対応方法
–(今回は)オプティマイザ統計を採取したところ、
SQLの実行計画の効率が良くなって処理量が回復した。
日本オラクル株式会社 Confidential 78
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3.
最後に第3の障害を
発生させてみます
日本オラクル株式会社 Confidential 79
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害発生時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 80
08:32:15 [10/10] 414374 6815 414372 0 414372 0 414372 0
08:32:16 [10/10] 414459 6799 414459 0 414459 0 414459 0
08:32:17 [10/10] 415357 7062 415357 0 415357 0 415357 0
08:32:18 [10/10] 415801 6713 415801 0 415801 0 415801 0
08:32:19 [10/10] 415902 6945 415902 0 415902 0 415902 0
08:32:20 [10/10] 415697 6752 415696 0 415696 0 415696 0
08:32:21 [10/10] 415414 6445 415414 0 415414 0 415414 0
08:32:22 [10/10] 416088 7145 416088 0 416088 0 416088 0
08:32:23 [10/10] 416344 7148 416344 0 416344 0 416344 0
08:32:24 [10/10] 413395 4076 413475 0 413395 0 413395 80
08:32:25 [10/10] 406553 0 406874 0 406552 0 406552 322
08:32:26 [10/10] 399691 0 400249 0 399691 0 399691 558
08:32:27 [10/10] 393506 0 394324 0 393505 0 393505 819
08:32:28 [10/10] 386678 0 387744 0 386678 0 386678 1066
08:32:29 [10/10] 379901 0 381202 0 379901 0 379901 1301
08:32:30 [10/10] 373179 0 374714 0 373179 0 373179 1535
08:32:31 [10/10] 366441 0 368200 0 366441 0 366441 1759
08:32:32 [10/10] 360064 0 362058 0 360064 0 360064 1994
08:32:33 [10/10] 353111 0 355339 0 353111 0 353111 2228
08:32:34 [10/10] 345850 0 348306 0 345849 0 345849 2456
TPSが0に減少
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害発生時の負荷/傾向・EM(DB Express)
• 「cursor: pin s wait on X」「kksfbc child completion」が発生
日本オラクル株式会社 Confidential 81
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害発生時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 82
Activeと
Blocked
が上昇
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「cursor: pin s wait on X」
「kksfbc child completion」
が発生して、
スループットが0に
日本オラクル株式会社 Confidential 83
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
次の一手は?
日本オラクル株式会社 Confidential 84
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. ディスカッション
• 「cursor: pin s wait on X」「kksfbc child completion」
が発生して、スループットが0になってしまっている。次の
一手は?
• ヒント:今まで見てきている情報だけでは(おそらく)解明
できません。追加の情報を貰うとするならば……?
– ハードパースしてないか? リテラルのSQLを流してないか?
⇒ アプリを作っている人に聞く
– Shared Poolの問題じゃないか? 再帰SQLの確認、
共有プールの分割状況の確認
– AWR, sp2csv, 初期パラ, 共有プールの情報
– アラートログ, AWRダンプ, アプリログ
日本オラクル株式会社 Confidential 85
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. アプリのログを確認
日本オラクル株式会社 Confidential 86
08:51:04 SQL> SET SERVEROUTPUT ON SIZE 1000000;
08:51:04 SQL> VAR B1 VARCHAR2(2000);
08:51:04 SQL> EXEC :B1 := ORDERENTRY.PROCESSORDERS(69, 10, 20);
SQLERRM => ORA-01502: index 'SOE.ORDER_PK' or partition of such index is in unusable state
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.05
08:51:04 SQL>
ORAエラーが発生
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. アラートログを確認
日本オラクル株式会社 Confidential 87
:
2018-08-12T08:53:24.754059+00:00
PDB4(3):WARNING: too many parse errors, count=249325 SQL hash=0x368413c7
PDB4(3):PARSE ERROR: ospid=9828, error=1502 for statement:
2018-08-12T08:53:24.754296+00:00
PDB4(3):UPDATE /*+ index(orders, order_pk) */ ORDERS SET ORDER_STATUS = FLOOR(DBMS_RANDOM.VALUE(:B3 +
1, :B2 )) WHERE ORDER_ID = :B1
PDB4(3):Additional information: hd=0x86235430 phd=0xa0e77000 flg=0x110676 cisid=116 sid=116 ciuid=116
uid=116 sqlid=f9u2k84v884y7
PDB4(3):...Current username=SOE
PDB4(3):...Application: Process Orders Action:
2018-08-12T08:53:24.754805+00:00
PDB4(3):----- PL/SQL Call Stack -----
object line object
handle number name
0xa0e91238 828 package body SOE.ORDERENTRY.PROCESSORDERS
0x6d2c6458 1 anonymous block
:
ORAエラーが発生
疑わしいUPDATE文
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 動的ビュー(V$DIAG_ALERT_EXT)でアラートログを参照
• OSログイン不可でも、動的ビュー(V$DIAG_ALERT_EXT)で
アラートログを参照可能
日本オラクル株式会社 Confidential 88
SET LINESIZE 32767;
SET PAGESIZE 0;
SELECT MESSAGE_TEXT FROM V$DIAG_ALERT_EXT;
:
WARNING: too many parse errors, count=13200 SQL hash=0x368413c7
PARSE ERROR: ospid=17678, error=1502 for statement:
UPDATE /*+ index(orders, order_pk) */ ORDERS SET ORDER_STATUS = FLOOR(DBMS_RANDOM.VALUE(:B3 + 1, :B2 ))
WHERE ORDER_ID = :B1
Additional information: hd=0x9ae9cf30 phd=0x9aec4018 flg=0x110676 cisid=116 sid=116 ciuid=116 uid=116
sqlid=f9u2k84v884y7
...Current username=SOE
...Application: Process Orders Action:
----- PL/SQL Call Stack -----
object line object
handle number name
0x9aecac30 828 package body SOE.ORDERENTRY.PROCESSORDERS
0x99857aa8 1 anonymous block
:
ORAエラーが発生
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. SQL Developer Webでアラートを参照
• (左上)ボタン ⇒ SQL Developer ⇒ DBA ⇒ Alerts
日本オラクル株式会社 Confidential 89
ORAエラーが発生
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ORA-1502エラー
でUPDATE文
が実行できない。
日本オラクル株式会社 Confidential 90
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. エラーメッセージ・マニュアルより
日本オラクル株式会社 Confidential 91
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 使用不可の索引を再作成(REBUILD)
日本オラクル株式会社 Confidential 92
09:23:41 SQL> ALTER INDEX ORDER_PK REBUILD;
Index altered.
Elapsed: 00:00:03.52
09:23:45 SQL>
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害解消時の負荷/傾向・Swingbench
日本オラクル株式会社 Confidential 93
09:23:37 [10/10] 0 0 14228 0 0 0 0 14228
09:23:38 [10/10] 0 0 14238 0 0 0 0 14238
09:23:39 [10/10] 0 0 14227 0 0 0 0 14227
09:23:40 [10/10] 0 0 14244 0 0 0 0 14244
09:23:41 [10/10] 0 0 14248 0 0 0 0 14248
09:23:42 [10/10] 0 0 14266 0 0 0 0 14266
09:23:43 [10/10] 0 0 14295 0 0 0 0 14295
09:23:44 [10/10] 0 0 14301 0 0 0 0 14301
09:23:45 [10/10] 0 0 14312 0 0 0 0 14312
09:23:46 [10/10] 2022 2022 16255 0 2022 0 2022 14233
09:23:47 [10/10] 8908 6886 22906 0 8908 0 8908 13998
09:23:48 [10/10] 16078 7170 29846 0 16078 0 16078 13768
09:23:49 [10/10] 23312 7234 36842 0 23312 0 23312 13530
09:23:50 [10/10] 30141 6829 43429 0 30141 0 30141 13288
09:23:51 [10/10] 36606 6465 49650 0 36606 0 36606 13044
09:23:52 [10/10] 43635 7029 56457 0 43635 0 43635 12822
09:23:53 [10/10] 50537 6902 63103 0 50538 0 50538 12565
09:23:54 [10/10] 57819 7282 70144 0 57819 0 57819 12325
09:23:55 [10/10] 64443 6624 76531 0 64443 0 64443 12088
09:23:56 [10/10] 70925 6482 82785 0 70925 0 70925 11860
09:23:57 [10/10] 77577 6652 89198 0 77577 0 77577 11621
09:23:58 [10/10] 84533 6956 95919 0 84533 0 84533 11386
:
TPSが回復
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害解消時の負荷/傾向・EM(DB Express)
• 「cursor: pin s wait on X」「kksfbc child completion」が解消
日本オラクル株式会社 Confidential 94
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3. 障害解消時の負荷/傾向・SQL Developer Web
日本オラクル株式会社 Confidential 95
Activeと
Blocked
が減少
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参考:Case3. の障害発生のやり方
• アプリ(Swingbench)が参照する表の索引を無効化(UNUSABLE)
日本オラクル株式会社 Confidential 96
SQL> ALTER INDEX ORDER_PK UNUSABLE;
Index altered.
Elapsed: 00:00:00.12
SQL>
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Case3.障害のまとめ
•処理量(トランザクション量)低下時のASH傾向
–「cursor: pin s wait on X」「kksfbc child completion」
が大量に発生している。
•原因の追及
–ASHだけでは原因を特定できない。
–アプリのログやアラートログより、
ORA-1502エラーが発生しているのを確認
–ORDERS表の主キー(ORDER_PK)が使用不可
•対応方法
–ORDERS表の主キーを再作成(REBUILD)
日本オラクル株式会社 Confidential 97
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
4章. まとめ
98日本オラクル株式会社 Confidential
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
本セミナーのまとめ
• 情報採取の重要性
–Option機能(Diagnostic Pack)が有ると、
自動で情報(AWR, ASH等)を採取してくれる。
–Optionが無い場合は自前で実装する。
• 見える化の効果
–直感的 かつ 素早く分析できる。
–正常時/異常時との比較
• ドリルダウンで詳細な分析
–元ネタの情報/仕組みを知っていると、より詳細な分析が可能
–アプリログ/アラートログの確認など、セオリーも大事です。
99日本オラクル株式会社 Confidential
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
ご参加、ご清聴
ありがとうございました!
日本オラクル株式会社 Confidential 10
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 日本オラクル株式会社 Confidential 10

More Related Content

What's hot

Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
 

What's hot (20)

押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介pg_dbms_statsの紹介
pg_dbms_statsの紹介
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
Standard Edition 2でも使えるOracle Database 12c Release 2オススメ新機能
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
 
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Apache Sparkの紹介
Apache Sparkの紹介Apache Sparkの紹介
Apache Sparkの紹介
 

Similar to デモとディスカッションで体験するOracle DBトラブル対応

[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
Insight Technology, Inc.
 

Similar to デモとディスカッションで体験するOracle DBトラブル対応 (20)

(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
Tech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_shareTech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_share
 
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!
 
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
 
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
 
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステムochacafe#6 人にもマシンにもやさしいAPIのエコシステム
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
Autonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションAutonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーション
 
20150920 中国地方db勉強会
20150920 中国地方db勉強会20150920 中国地方db勉強会
20150920 中国地方db勉強会
 
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
 
Oracle Application Expressと Oracle BI Publisherの連携例
Oracle Application Expressと Oracle BI Publisherの連携例Oracle Application Expressと Oracle BI Publisherの連携例
Oracle Application Expressと Oracle BI Publisherの連携例
 
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
GoldenGateテクニカルセミナー4「テクニカルコンサルタントが語るOracle GoldenGate現場で使える極意」(2016/5/11)
 
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
 

More from 歩 柴田

More from 歩 柴田 (7)

DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
 
Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。Autonomous Database で Oracle Database19c 新機能 を味わう。
Autonomous Database で Oracle Database19c 新機能 を味わう。
 
V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
固定化か?最新化か?オプティマイザ統計の運用をもう一度考える。 -JPOUG Tech Talk Night #6-
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 

Recently uploaded

Recently uploaded (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

デモとディスカッションで体験するOracle DBトラブル対応

  • 1. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | デモとディスカッションで 体験するOracle DBトラブル対応 日本オラクル株式会社 クラウド・テクノロジーコンサルティング事業本部 2018/8/22 日本オラクル株式会社 Confidential
  • 2. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 自己紹介(柴田 歩) • 日本オラクル株式会社 クラウド・テクノロジーコンサルティング事業本部 プリンシパルコンサルタント 柴田 歩(しばた あゆむ) • 2007年4月に中途で日本オラクルに入社 • DBの製品コンサルとして、DB関連のプロジェクトを歴任 • やきうのお兄ちゃんが綴るDBブログ、絶賛更新中! – ねら~ITエンジニア雑記 https://gonsuke777.hatenablog.com/ 2日本オラクル株式会社 Confidential
  • 3. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ▪ iostat await svctm の 見かた、考え方 ▪ https://www.slideshare.net/shibataay umu/iostat-await-svctm ▪ まだ統計固定で消耗してるの? -JPOUG Advent Calendar 2015- ▪ http://d.hatena.ne.jp/gonsuke777/20 151208/1449587953 ▪ JPOUG Tech Talk Night #6「固定 化か?最新化か?オプティマイザ統 計の運用をもう一度考える。」 ▪ http://d.hatena.ne.jp/gonsuke777/20 160226/1456488499 過去コンテンツもよろしくです彡(^)(^) • DDD 2013 SQLチューニングに 必要な考え方と最新テクニック • http://www.oracle.com/technetwor k/jp/ondemand/ddd-2013- 2051348-ja.html コレ 3 • DDD 2016 SQL性能を最大限に引き出す DB 12cクエリー・オプティマイザ 新機能 活用と統計情報運用の戦略 • http://www.oracle.com/technetwork/jp/ond emand/ddd-2016-3373953-ja.html コレ 日本オラクル株式会社 Confidential
  • 4. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | はじめに •本セミナーではデモ形式でOracle Databaseの 障害を体験していただきます。 •擬似的に障害を発生させて、負荷傾向を分析し てディスカッションを行いながら、原因を特定 する過程を体験して頂きます。 日本オラクル株式会社 Confidential 4
  • 5. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 目次 1章. 前提知識(座学) 2章. デモの流れ・ご説明 3章. デモ(障害発生)とディスカッション 4章. まとめ 日本オラクル株式会社 Confidential 5
  • 6. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 1章. 前提知識(座学) 日本オラクル株式会社 Confidential 6
  • 7. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 唐突ですが、 DBの稼働状況を 見える化してますか? 日本オラクル株式会社 Confidential 7
  • 8. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | DBの稼働状況を確認するための各種情報 • CPU使用率(sar, mpstat, vmstatなど) • Memory使用状況(vmstat, freeなど) • Disk I/O統計(iostatなど) • AWR/Statspack(html, txtレポート) • ASH(Active Session History) • アラートログ(alert_xxxxx.log) • ORAエラー(アラートログ、標準出力、アプリログなど) 日本オラクル株式会社 Confidential 8
  • 9. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | DBの稼働状況を確認するための各種情報 • CPU使用率(sar, mpstat, vmstatなど) • Memory使用状況(vmstat, freeなど) • Disk I/O統計(iostatなど) • AWR/Statspack(html, txtレポート) • ASH(Active Session History) • アラートログ(alert_xxxxx.log) • ORAエラー(アラートログ、標準出力、アプリログなど) 日本オラクル株式会社 Confidential 9 デモの前提知識として、 ASHについてざっくり解説
  • 10. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ASH(Active Session Hisotory)とは? • ASH(Active Session History)とは Oracle Database の を 蓄積/格納した動的ビュー&ディクショナリ のこと – V$ACTIVE_SESSION_HISTORY – GV$ACTIVE_SESSION_HISTORY – DBA_HIST_ACTIVE_SESSION_HISTORY ※ ※DBA_HIST_~が付与されておりAWR表の一部、(G)V$~が揮発しても後から参照可能 日本オラクル株式会社 Confidential Active な Session の 履歴 10
  • 11. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Active な Session とは? •接続済Sessionが以下のどちらかの状態であること –DB CPU(CPUを使用中) –非アイドルの待機イベントで待機中 •以下の Time Model を 基本としている。 日本オラクル株式会社 Confidential DB Time = CPU Time + Non-Idle wait time 11
  • 12. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 参考:代表的な非アイドル待機イベント(1) • Disk I/O系の待機イベント(Foreground系) – db file sequential read/direct path read など • Disk I/O系の待機イベント(Background系) – log file parallel write/db file parallel write など • ロック(enqueue)系の待機イベント – enq: TX - row lock contention/enq: TM - contention など • Commit/REDOログ待ち系の待機イベント – log file sync など • Latch/mutex系の待機イベント – latch free/latch: shared pool/cursor: mutex S など 日本オラクル株式会社 Confidential 12
  • 13. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 参考:代表的な非アイドル待機イベント(2) • RAC - Cache Fusion系の待機イベント – gc cr(or current) block 2-way (or 3-way) – gc cr(or current) grant 2-way – gc buffer busy acquire/release など • Network系の待機イベント – SQL*Net message to client – SQL*Net message from dblink – SQL*Net message to dblink など 日本オラクル株式会社 Confidential 13
  • 14. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 参考:代表的なアイドル待機イベント • 代表的なアイドルの待機イベント – SQL*Net message from client – PX Idle Wait – PL/SQL lock timer – pmon timer – smon timer – rdbms ipc message 日本オラクル株式会社 Confidential 14
  • 15. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Inter Connect GV$ACTIVE_ SESSION_ HISTORY GV$SESSION 各動的ビュー(V$~) と ディクショナリ(DBA~) の 関係図 日本オラクル株式会社 Confidential DB #1 V$SESSION 接続済Session (アイドル含む)の リアルな状態を保持 V$ACTIVE_SES SION_HISTORY Active な Session を 1秒に1回サンプリング して履歴として保持 DB #2 V$SESSION V$ACTIVE_SES SION_HISTORY DBA_HIST_ACTIVE_ SESS_HISTORY V$ACTIVE~の履歴を 10秒/1回に間引いて DBA_HIST_ACTIVE~表 に格納(後から見れる) GV$~ビューは V$~ビューを RACのノード跨りで 参照可能 15
  • 16. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 1秒に1回、ActiveなSessionがサンプリングされてASHに格納 日本オラクル株式会社 Confidential 16 Session 1 Session 2 Session 3 Session 4 Session x… Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling Sampling (G)V$ACTIVE_ SESSION_ HISTORY 凡例 Active Session 1秒 ActiveなSessionが 1秒に1回サンプリングさ れてASHに格納される。 V$SESSION
  • 17. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | V$ACTIVE_SESSION_HISTORYビューの定義 • 1秒/1回の頻度で Active な Session が V$SESSION から サンプリングされて、当ビューの履歴として格納される。 日本オラクル株式会社 Confidential SQL> DESC V$ACTIVE_SESSION_HISTORY; Name Null? Type --------------------------- -------- -------------- SAMPLE_ID NUMBER SAMPLE_TIME TIMESTAMP(3) IS_AWR_SAMPLE VARCHAR2(1) SESSION_ID NUMBER SESSION_SERIAL# NUMBER SESSION_TYPE VARCHAR2(10) FLAGS NUMBER USER_ID NUMBER SQL_ID VARCHAR2(13) IS_SQLID_CURRENT VARCHAR2(1) SQL_CHILD_NUMBER NUMBER SQL_OPCODE NUMBER SQL_OPNAME VARCHAR2(64) FORCE_MATCHING_SIGNATURE NUMBER TOP_LEVEL_SQL_ID VARCHAR2(13) TOP_LEVEL_SQL_OPCODE NUMBER SQL_ADAPTIVE_PLAN_RESOLVED NUMBER SQL_FULL_PLAN_HASH_VALUE NUMBER SQL_PLAN_HASH_VALUE NUMBER SQL_PLAN_LINE_ID NUMBER SQL_PLAN_OPERATION VARCHAR2(30) SQL_PLAN_OPTIONS VARCHAR2(30) SQL_EXEC_ID NUMBER SQL_EXEC_START DATE PLSQL_ENTRY_OBJECT_ID NUMBER PLSQL_ENTRY_SUBPROGRAM_ID NUMBER PLSQL_OBJECT_ID NUMBER PLSQL_SUBPROGRAM_ID NUMBER QC_INSTANCE_ID NUMBER QC_SESSION_ID NUMBER QC_SESSION_SERIAL# NUMBER PX_FLAGS NUMBER EVENT VARCHAR2(64) EVENT_ID NUMBER EVENT# NUMBER SEQ# NUMBER P1TEXT VARCHAR2(64) P1 NUMBER P2TEXT VARCHAR2(64) P2 NUMBER P3TEXT VARCHAR2(64) P3 NUMBER WAIT_CLASS VARCHAR2(64) WAIT_CLASS_ID NUMBER WAIT_TIME NUMBER SESSION_STATE VARCHAR2(7) TIME_WAITED NUMBER BLOCKING_SESSION_STATUS VARCHAR2(11) BLOCKING_SESSION NUMBER BLOCKING_SESSION_SERIAL# NUMBER BLOCKING_INST_ID NUMBER BLOCKING_HANGCHAIN_INFO VARCHAR2(1) CURRENT_OBJ# NUMBER CURRENT_FILE# NUMBER CURRENT_BLOCK# NUMBER CURRENT_ROW# NUMBER TOP_LEVEL_CALL# NUMBER TOP_LEVEL_CALL_NAME VARCHAR2(64) CONSUMER_GROUP_ID NUMBER XID RAW(8) REMOTE_INSTANCE# NUMBER TIME_MODEL NUMBER IN_CONNECTION_MGMT VARCHAR2(1) IN_PARSE VARCHAR2(1) IN_HARD_PARSE VARCHAR2(1) IN_SQL_EXECUTION VARCHAR2(1) IN_PLSQL_EXECUTION VARCHAR2(1) IN_PLSQL_RPC VARCHAR2(1) IN_PLSQL_COMPILATION VARCHAR2(1) IN_JAVA_EXECUTION VARCHAR2(1) IN_BIND VARCHAR2(1) IN_CURSOR_CLOSE VARCHAR2(1) IN_SEQUENCE_LOAD VARCHAR2(1) IN_INMEMORY_QUERY VARCHAR2(1) IN_INMEMORY_POPULATE VARCHAR2(1) IN_INMEMORY_PREPOPULATE VARCHAR2(1) IN_INMEMORY_REPOPULATE VARCHAR2(1) IN_INMEMORY_TREPOPULATE VARCHAR2(1) CAPTURE_OVERHEAD VARCHAR2(1) REPLAY_OVERHEAD VARCHAR2(1) IS_CAPTURED VARCHAR2(1) IS_REPLAYED VARCHAR2(1) SERVICE_HASH NUMBER PROGRAM VARCHAR2(48) MODULE VARCHAR2(64) ACTION VARCHAR2(64) CLIENT_ID VARCHAR2(64) MACHINE VARCHAR2(64) PORT NUMBER ECID VARCHAR2(64) DBREPLAY_FILE_ID NUMBER DBREPLAY_CALL_COUNTER NUMBER TM_DELTA_TIME NUMBER TM_DELTA_CPU_TIME NUMBER TM_DELTA_DB_TIME NUMBER DELTA_TIME NUMBER DELTA_READ_IO_REQUESTS NUMBER DELTA_WRITE_IO_REQUESTS NUMBER DELTA_READ_IO_BYTES NUMBER DELTA_WRITE_IO_BYTES NUMBER DELTA_INTERCONNECT_IO_BYTES NUMBER DELTA_READ_MEM_BYTES NUMBER PGA_ALLOCATED NUMBER TEMP_SPACE_ALLOCATED NUMBER CON_DBID NUMBER CON_ID NUMBER DBOP_NAME VARCHAR2(30) DBOP_EXEC_ID NUMBER 17
  • 18. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Enterprise Manager による ASH分析 • パフォーマンス・ハブのアクティビティで ASH を GUI参照 日本オラクル株式会社 Confidential 18
  • 19. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ASHの見える化 日本オラクル株式会社 Confidential 19
  • 20. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 今回のセミナーでは、 ASHを見える化して 皆様と一緒に眺めながら、 障害の切り分けを デモしようと思います 日本オラクル株式会社 Confidential 20
  • 21. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 参考:ASHを参照するために必要なオプション • ASH を 参照するには Enterprise Edition のオプション機 能となるDiagnostic Packのライセンスが必要となります。 – Oracle Databaseライセンス情報ユーザー・マニュアル 12cリリース1 (12.1) B71334-09 Oracle Diagnostics Pack http://docs.oracle.com/cd/E57425_01/121/DBLIC/options.htm#CIHIHDDJ > Oracle Diagnostics Packに含まれる機能は、次のとおりです。 > : > アクティブ・セッション履歴(ASH) > : • Oracle Cloud の DBCS では Enterprise Edition以上で Diagnostic Pack の機能が利用可能 日本オラクル株式会社 Confidential 21
  • 22. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 2章. デモの流れ・ご説明 日本オラクル株式会社 Confidential 22
  • 23. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | デモの環境 • Oracle CloudのDBCSにSwingbenchで負荷掛け • 負荷の様子をDBCSのEM(DB Express) や SQL Developer Webで、負荷の傾向を参照 日本オラクル株式会社 Confidential 23 DBCS IaaS Oracle Cloud Internet Internet 皆様 皆様 皆様 Terminal で接続 私 Swingbench で負荷掛け Swingbench EM or SQL Developer Web で参照
  • 24. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Swingbenchについて • Dominic Giles氏( @dominic_giles )が 作成されている Oracle Database への負荷掛けツール – http://dominicgiles.com/swingbench.html 日本オラクル株式会社 Confidential 24
  • 25. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | デモの流れ 1. 皆様が社内Network/EM(DB Express)/ SQL Developer Webに接続する。 2. 私(柴田)がSwingbenchで負荷掛け開始 3. 皆様がEM/SQL Developerを確認 4. 私(柴田)が障害を発生させる。 5. 皆様がEM/SQL Developerを確認 6. 原因をディスカッション 7. 障害の解説 日本オラクル株式会社 Confidential 25 2~3シナリオ を実施予定
  • 26. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | お手元の紙を参照して、 社内Networkに接続& EM(DB Express)/ SQL Developer Web に接続してみて下さい。 日本オラクル株式会社 Confidential 26 ※PCをお持ちの方は、両方接続することを オススメしておきます。
  • 27. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | まずは正常時の 負荷/傾向を確認 日本オラクル株式会社 Confidential 27
  • 28. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 正常時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 28 $ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx- xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml Author : Dominic Giles Version : 2.6.0.1082 Results will be written to results.xml. Hit Return to Terminate Run... Time Users TPM TPS S I U D C R 01:56:14 [0/10] 0 0 0 0 0 0 0 0 01:56:15 [0/10] 0 0 0 0 0 0 0 0 01:56:16 [0/10] 0 0 0 0 0 0 0 0 01:56:17 [10/10] 0 0 0 0 0 0 0 0 01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0 01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0 01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0 01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0 01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0 01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0 01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0 01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0 : Transaction数、DML数、COMMIT数など。 (ざっくり)ここの数字が大きければ処理量が多い。
  • 29. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 正常時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 29 $ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx- xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml Author : Dominic Giles Version : 2.6.0.1082 Results will be written to results.xml. Hit Return to Terminate Run... Time Users TPM TPS S I U D C R 01:56:14 [0/10] 0 0 0 0 0 0 0 0 01:56:15 [0/10] 0 0 0 0 0 0 0 0 01:56:16 [0/10] 0 0 0 0 0 0 0 0 01:56:17 [10/10] 0 0 0 0 0 0 0 0 01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0 01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0 01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0 01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0 01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0 01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0 01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0 01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0 : 一番右はROLLBACK数で、通常時は0
  • 30. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 正常時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 30 $ ./charbench -c ../configs/SOE_Server_Side_V2.xml -cs xxxxxxxx.xxxxxxxx- xxxxxxxx.xxxxxxxx.xxxxxxxx:xxxx/pdb4.xxxxxxxx.xxxxxxxx.xxxxxxxx -dt thin -rt 0:30 -v users,tpm,tps,dml Author : Dominic Giles Version : 2.6.0.1082 Results will be written to results.xml. Hit Return to Terminate Run... Time Users TPM TPS S I U D C R 01:56:14 [0/10] 0 0 0 0 0 0 0 0 01:56:15 [0/10] 0 0 0 0 0 0 0 0 01:56:16 [0/10] 0 0 0 0 0 0 0 0 01:56:17 [10/10] 0 0 0 0 0 0 0 0 01:56:18 [10/10] 3066 3066 3066 0 3066 0 3066 0 01:56:19 [10/10] 9772 6706 9773 0 9773 0 9773 0 01:56:20 [10/10] 16629 6857 16629 0 16629 0 16629 0 01:56:21 [10/10] 22927 6298 22927 0 22927 0 22927 0 01:56:22 [10/10] 29828 6901 29828 0 29828 0 29828 0 01:56:23 [10/10] 37149 7321 37149 0 37149 0 37149 0 01:56:24 [10/10] 44041 6892 44041 0 44041 0 44041 0 01:56:25 [10/10] 50960 6919 50960 0 50960 0 50960 0 : この TPS(Transaction per sec、 秒間あたりのトランザクション数)に注目
  • 31. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 正常時の負荷/傾向・EM(DB Express) • CPU負荷(緑)が中心 日本オラクル株式会社 Confidential 31
  • 32. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 正常時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 32
  • 33. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 3章. デモ(障害発生)とディスカッション 日本オラクル株式会社 Confidential 33
  • 34. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 本章では、 2つ(時間が有れば3つ)の 障害を交えて、 デモとディスカッション を実施します。 日本オラクル株式会社 Confidential 34
  • 35. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. では第1の障害を 発生させてみます。 日本オラクル株式会社 Confidential 35
  • 36. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害発生時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 36 02:12:29 [10/10] 418734 6687 418734 0 418734 0 418734 0 02:12:30 [10/10] 418956 6561 418956 0 418956 0 418956 0 02:12:31 [10/10] 419363 6768 419363 0 419363 0 419363 0 02:12:32 [10/10] 419559 6905 419560 0 419560 0 419560 0 02:12:33 [10/10] 419323 6873 419323 0 419323 0 419323 0 02:12:34 [10/10] 418634 6325 418634 0 418634 0 418634 0 02:12:35 [10/10] 418860 6826 418860 0 418860 0 418860 0 02:12:36 [10/10] 419087 7431 419087 0 419087 0 419087 0 02:12:37 [10/10] 419194 7297 419195 0 419195 0 419195 0 02:12:38 [10/10] 419273 7320 419273 0 419273 0 419273 0 02:12:39 [10/10] 419046 6856 419047 0 419047 0 419047 0 02:12:40 [10/10] 419424 7298 419424 0 419424 0 419424 0 02:12:41 [10/10] 414255 1743 414255 0 414255 0 414255 0 02:12:42 [10/10] 407203 0 407203 0 407203 0 407203 0 02:12:43 [10/10] 400188 0 400188 0 400188 0 400188 0 02:12:44 [10/10] 393213 0 393213 0 393213 0 393213 0 02:12:45 [10/10] 386132 0 386132 0 386132 0 386132 0 02:12:46 [10/10] 379177 0 379177 0 379177 0 379177 0 02:12:47 [10/10] 371984 0 371983 0 371983 0 371983 0 02:12:48 [10/10] 364938 0 364938 0 364938 0 364938 0 02:12:49 [10/10] 357461 0 357461 0 357461 0 357461 0 : TPSが0に減少(処理量ゼロ)
  • 37. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害発生時の負荷/傾向・EM(DB Express) • 待機クラス「Application」で待機 日本オラクル株式会社 Confidential 37
  • 38. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害発生時の負荷/傾向・EM(DB Express) • 待機イベント「enq: TM - contention」で待機 日本オラクル株式会社 Confidential 38
  • 39. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害発生時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 39 Blockedが 上昇
  • 40. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | enqueue(エンキュー) で待たされている。 日本オラクル株式会社 Confidential 40
  • 41. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | enqueue(エンキュー)とは? •enqueue(エンキュー)とは、Oracle Database における排他制御(ロック)の仕組み •ロック(enqueue)系の待機イベント – enq: TX - row lock contention…行ロック待機 – enq: TM - contention…表ロック待機 など – 他にも色々有ります。 •誰かがenqueue(ロック)を取って、 トランザクションが待たされている。 日本オラクル株式会社 Confidential 41
  • 42. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 次の一手は? 日本オラクル株式会社 Confidential 42
  • 43. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. ディスカッション •Swingbenchの処理(トランザクション)は enqueue(エンキュー)で待たされている ことが確認できた。次の一手は? –ロック競合の箇所を特定 ⇒ V$LOCKを見る。 –ASH や V$SESSION の BLOCKING~列を見る。 日本オラクル株式会社 Confidential 43
  • 44. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | EM(DB Express)で ロックを取っている セッションを 特定してみる 日本オラクル株式会社 Confidential 44
  • 45. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害発生時の負荷/傾向・EM(DB Express) • ブロックしているセッションを特定 日本オラクル株式会社 Confidential 45 プルダウン ⇒ リソース使用量 ⇒ ブロックしているセッション
  • 46. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | V$ACTIVE_SESSION_HISTORYビューの概要 •ASH(V$ACTIVE~)のBLOCKING~列を見える化 日本オラクル株式会社 Confidential SQL> DESC V$ACTIVE_SESSION_HISTORY; Name Null? Type --------------------------- -------- -------------- SAMPLE_ID NUMBER SAMPLE_TIME TIMESTAMP(3) IS_AWR_SAMPLE VARCHAR2(1) SESSION_ID NUMBER SESSION_SERIAL# NUMBER SESSION_TYPE VARCHAR2(10) FLAGS NUMBER USER_ID NUMBER SQL_ID VARCHAR2(13) IS_SQLID_CURRENT VARCHAR2(1) : : SESSION_STATE VARCHAR2(7) TIME_WAITED NUMBER BLOCKING_SESSION_STATUS VARCHAR2(11) BLOCKING_SESSION NUMBER BLOCKING_SESSION_SERIAL# NUMBER BLOCKING_INST_ID NUMBER BLOCKING_HANGCHAIN_INFO VARCHAR2(1) : 46 ASHのこの列を見える化
  • 47. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ロックを取った セッションを 特定した!対応は? 日本オラクル株式会社 Confidential 47
  • 48. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. ロックを取ったセッションをKILL 日本オラクル株式会社 Confidential 48 02:57:47 SQL> ALTER SYSTEM KILL SESSION '375, 47599'; System altered. Elapsed: 00:00:00.01 02:58:20 SQL>
  • 49. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害解消時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 49 02:58:12 [10/10] 0 0 0 0 0 0 0 0 02:58:13 [10/10] 0 0 0 0 0 0 0 0 02:58:14 [10/10] 0 0 0 0 0 0 0 0 02:58:15 [10/10] 0 0 0 0 0 0 0 0 02:58:16 [10/10] 0 0 0 0 0 0 0 0 02:58:17 [10/10] 0 0 0 0 0 0 0 0 02:58:18 [10/10] 0 0 0 0 0 0 0 0 02:58:19 [10/10] 0 0 0 0 0 0 0 0 02:58:20 [10/10] 0 0 0 0 0 0 0 0 02:58:21 [10/10] 1911 1911 1911 0 1911 0 1911 0 02:58:22 [10/10] 8662 6751 8662 0 8662 0 8662 0 02:58:23 [10/10] 16128 7466 16129 0 16129 0 16129 0 02:58:24 [10/10] 23872 7744 23873 0 23873 0 23873 0 02:58:25 [10/10] 30415 6543 30415 0 30415 0 30415 0 02:58:26 [10/10] 37221 6806 37221 0 37221 0 37221 0 02:58:27 [10/10] 43709 6488 43709 0 43709 0 43709 0 02:58:28 [10/10] 51036 7327 51036 0 51036 0 51036 0 02:58:29 [10/10] 58734 7698 58734 0 58734 0 58734 0 02:58:30 [10/10] 66011 7277 66011 0 66011 0 66011 0 02:58:31 [10/10] 73160 7149 73160 0 73160 0 73160 0 02:58:32 [10/10] 80191 7031 80191 0 80191 0 80191 0 02:58:33 [10/10] 87613 7422 87613 0 87613 0 87613 0 TPSが回復
  • 50. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害解消時の負荷/傾向・EM(DB Express) • 待機イベント「enq: TM - contention」が解消 日本オラクル株式会社 Confidential 50
  • 51. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1. 障害解消時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 51 Blocked が解消
  • 52. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Case1. の障害発生のやり方 • アプリ(Swingbench)が参照する表を、排他モードでロック (LOCK TABLE ~ IN EXCLUSIVE MODE;) 日本オラクル株式会社 Confidential 52 SQL> LOCK TABLE ORDERS IN EXCLUSIVE MODE; Table(s) Locked. Elapsed: 00:00:00.02 SQL>
  • 53. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case1.障害のまとめ •処理量(トランザクション量)低下時のASH傾向 –enqueue(エンキュー)で待たされている。 –enq: TM - contention(表ロック)で待機 •原因の追及 –ASHのBLOCKING_SESSIONから、 ロックを取ったセッションを特定 •対応方法 –ロックを取ったセッションをKILL 日本オラクル株式会社 Confidential 53
  • 54. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 次に第2の障害を 発生させてみます 日本オラクル株式会社 Confidential 54
  • 55. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 55 03:28:53 [10/10] 427344 7327 427346 0 427346 0 427346 0 03:28:54 [10/10] 426975 6455 426975 0 426975 0 426975 0 03:28:55 [10/10] 426130 6682 426130 0 426130 0 426130 0 03:28:56 [10/10] 425960 7129 425962 0 425962 0 425962 0 03:28:57 [10/10] 424963 6484 424963 0 424963 0 424963 0 03:28:58 [10/10] 424909 6738 424909 0 424909 0 424909 0 03:28:59 [10/10] 425169 6883 425169 0 425169 0 425169 0 03:29:00 [10/10] 425491 7524 425493 0 425493 0 425493 0 03:29:01 [10/10] 425783 7029 425783 0 425783 0 425783 0 03:29:02 [10/10] 425542 6956 425542 0 425542 0 425542 0 03:29:03 [10/10] 420595 2485 420595 0 420595 0 420595 0 03:29:04 [10/10] 413897 12 413897 0 413897 0 413897 0 03:29:05 [10/10] 406855 12 406855 0 406855 0 406855 0 03:29:06 [10/10] 399703 12 399703 0 399703 0 399702 0 03:29:07 [10/10] 392520 12 392520 0 392520 0 392520 0 03:29:08 [10/10] 385239 13 385238 0 385238 0 385238 0 03:29:09 [10/10] 378447 13 378446 0 378445 0 378445 0 03:29:10 [10/10] 371725 11 371725 0 371725 0 371725 0 03:29:11 [10/10] 364761 11 364760 0 364760 0 364760 0 03:29:12 [10/10] 357647 12 357647 0 357647 0 357647 0 : TPSが10台に減少
  • 56. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・EM(DB Express) • CPUのActiveセッションが増加 日本オラクル株式会社 Confidential 56 増加
  • 57. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 57 Active が上昇
  • 58. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | CPUを使用する セッションが増えて 処理量は落ちた。 日本オラクル株式会社 Confidential 58
  • 59. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 次の一手は? 日本オラクル株式会社 Confidential 59
  • 60. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. ディスカッション1 •Swingbenchの処理量(トランザクション量)が 激減(0ではない)して、CPUを使用するセッション が増えている。次の一手は? –負荷が高いSQL(sql_id)の特定 –リアルタイムSQL監視で詳細を確認 –AWRを見る。 日本オラクル株式会社 Confidential 60
  • 61. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 負荷が高い SQL(sql_id) を特定してみる 日本オラクル株式会社 Confidential 61
  • 62. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・EM(DB Express) • 負荷が高いSQL(sql_id)の特定 日本オラクル株式会社 Confidential 62 sql_id = '7hk2m2702ua0g'の負荷が高い
  • 63. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・EM(DB Express) • sql_idをクリックして更にドリルダウン 日本オラクル株式会社 Confidential 63 実行計画のハッシュ値が2種類
  • 64. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | V$ACTIVE_SESSION_HISTORYビューの概要 • ASH(V$ACTIVE~)の SQL_PLAN_HASH_VALUE列を見える化している。 日本オラクル株式会社 Confidential SQL> DESC V$ACTIVE_SESSION_HISTORY; Name Null? Type --------------------------- -------- -------------- SAMPLE_ID NUMBER SAMPLE_TIME TIMESTAMP(3) IS_AWR_SAMPLE VARCHAR2(1) SESSION_ID NUMBER SESSION_SERIAL# NUMBER SESSION_TYPE VARCHAR2(10) FLAGS NUMBER USER_ID NUMBER SQL_ID VARCHAR2(13) IS_SQLID_CURRENT VARCHAR2(1) : : SQL_ADAPTIVE_PLAN_RESOLVED NUMBER SQL_FULL_PLAN_HASH_VALUE NUMBER SQL_PLAN_HASH_VALUE NUMBER SQL_PLAN_LINE_ID NUMBER SQL_PLAN_OPERATION VARCHAR2(30) SQL_PLAN_OPTIONS VARCHAR2(30) SQL_EXEC_ID NUMBER SQL_EXEC_START DATE : 64 ASHのこの列を見える化
  • 65. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・EM(DB Express) • 正常時のPLAN_HASH_VALUE 日本オラクル株式会社 Confidential 65 正常時はPLAN_HASH_VALUEが2048963432
  • 66. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害発生時の負荷/傾向・EM(DB Express) • 障害時のPLAN_HASH_VALUE 日本オラクル株式会社 Confidential 66 障害時はPLAN_HASH_VALUEが2768138649
  • 67. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | SQLの実行計画が 変動して、負荷が 高くなっている。 日本オラクル株式会社 Confidential 67
  • 68. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 次の一手は? 日本オラクル株式会社 Confidential 68
  • 69. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. ディスカッション2 • SQL(sql_id = '7hk2m2702ua0g')の実行計画が 変動して負荷が高まり、スループットが落ちてい る。次の一手は? – オプティマイザ統計を取り直す。 – 実行計画を確認する。 – SPM(SQL Plan Management)/アウトライン – SQL修正(ヒント句) – 統計のリストア – SQLチューニング・アドバイザ 日本オラクル株式会社 Confidential 69
  • 70. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. (今回は)関連表の統計情報を採取 日本オラクル株式会社 Confidential 70 04:44:19 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'ORDERS', DEGREE => 4, NO_INVALIDATE => FALSE); PL/SQL procedure successfully completed. Elapsed: 00:00:03.51 04:44:22 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'ORDER_ITEMS', DEGREE => 4, NO_INVALIDATE => FALSE); PL/SQL procedure successfully completed. Elapsed: 00:00:03.05 04:44:25 SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS('SOE', 'CUSTOMERS', DEGREE => 4, NO_INVALIDATE => FALSE); PL/SQL procedure successfully completed. Elapsed: 00:00:02.04 04:44:27 SQL>
  • 71. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害解消時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 71 04:44:09 [10/10] 681 11 681 0 681 0 681 0 04:44:10 [10/10] 684 14 684 0 684 0 684 0 04:44:11 [10/10] 685 12 685 0 685 0 685 0 04:44:12 [10/10] 681 10 681 0 681 0 681 0 04:44:13 [10/10] 679 11 679 0 679 0 679 0 04:44:14 [10/10] 679 11 679 0 679 0 679 0 04:44:15 [10/10] 680 12 680 0 680 0 680 0 04:44:16 [10/10] 677 11 677 0 677 0 677 0 04:44:17 [10/10] 677 13 677 0 677 0 677 0 04:44:18 [10/10] 679 12 679 0 679 0 679 0 04:44:19 [10/10] 681 12 681 0 681 0 681 0 04:44:20 [10/10] 679 9 679 0 679 0 679 0 04:44:21 [10/10] 679 10 679 0 679 0 679 0 04:44:22 [10/10] 2301 1637 2301 0 2301 0 2301 0 04:44:23 [10/10] 5156 2865 5156 0 5156 0 5156 0 04:44:24 [10/10] 8333 3190 8333 0 8333 0 8333 0 04:44:25 [10/10] 12275 3955 12275 0 12275 0 12275 0 04:44:26 [10/10] 17591 5326 17591 0 17591 0 17591 0 04:44:27 [10/10] 21568 3990 21568 0 21568 0 21568 0 04:44:28 [10/10] 26670 5113 26670 0 26670 0 26670 0 04:44:29 [10/10] 34256 7598 34256 0 34256 0 34256 0 04:44:30 [10/10] 41429 7185 41429 0 41429 0 41429 0 : TPSが回復
  • 72. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害解消時の負荷/傾向・EM(DB Express) • CPUのActiveセッションが減少 日本オラクル株式会社 Confidential 72 減少
  • 73. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害解消時の負荷/傾向・EM(DB Express) • 実行計画が(おそらく効率の良い)異なるものに変動している。 日本オラクル株式会社 Confidential 73 実行計画が変動
  • 74. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害解消時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 74 Active が減少
  • 75. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Case2. の障害発生のやり方 • アプリ(Swingbench)が参照する表と索引に、 実態とは乖離した不適切な統計を手動設定(SET_~_STATS) 日本オラクル株式会社 Confidential 75 EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORDER_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ITEM_ORDER_IX', numrows => 100000000, numlblks=> 100000000, numdist => 1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'CUSTOMERS_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORDER_ITEMS_PK', numrows => 100000000, numlblks=> 100000000, numdist => 1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_INDEX_STATS ('SOE', 'ORD_WAREHOUSE_IX', numrows => 100000000, numlblks=> 100000000, numdist => 1, clstfct => 100000, indlevel => 6, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_TABLE_STATS ('SOE', 'ORDER_ITEMS', numrows => 100, numblks => 10, NO_INVALIDATE => FALSE); EXEC DBMS_STATS.SET_TABLE_STATS ('SOE', 'ORDERS', numrows => 100, numblks => 10, NO_INVALIDATE => FALSE);
  • 76. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Case2. の障害発生時の実行計画 • Case2. 障害発生時のsql_id='7hk2m2702ua0g'の実行計画 日本オラクル株式会社 Confidential 76
  • 77. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Case2. の正常時の実行計画 • Case2. 正常時のsql_id='7hk2m2702ua0g'の実行計画 日本オラクル株式会社 Confidential 77
  • 78. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case2. 障害のまとめ •処理量(トランザクション量)低下時のASH傾向 –一部SQL(sql_id='7hk2m2702ua0g')の負荷が高くなっている。 •原因を追求 –ASHのSQL_PLAN_HASH_VALUEから実行計画の変動を特定 –SQLの実行計画が効率の悪いものに変動している。 •対応方法 –(今回は)オプティマイザ統計を採取したところ、 SQLの実行計画の効率が良くなって処理量が回復した。 日本オラクル株式会社 Confidential 78
  • 79. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 最後に第3の障害を 発生させてみます 日本オラクル株式会社 Confidential 79
  • 80. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害発生時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 80 08:32:15 [10/10] 414374 6815 414372 0 414372 0 414372 0 08:32:16 [10/10] 414459 6799 414459 0 414459 0 414459 0 08:32:17 [10/10] 415357 7062 415357 0 415357 0 415357 0 08:32:18 [10/10] 415801 6713 415801 0 415801 0 415801 0 08:32:19 [10/10] 415902 6945 415902 0 415902 0 415902 0 08:32:20 [10/10] 415697 6752 415696 0 415696 0 415696 0 08:32:21 [10/10] 415414 6445 415414 0 415414 0 415414 0 08:32:22 [10/10] 416088 7145 416088 0 416088 0 416088 0 08:32:23 [10/10] 416344 7148 416344 0 416344 0 416344 0 08:32:24 [10/10] 413395 4076 413475 0 413395 0 413395 80 08:32:25 [10/10] 406553 0 406874 0 406552 0 406552 322 08:32:26 [10/10] 399691 0 400249 0 399691 0 399691 558 08:32:27 [10/10] 393506 0 394324 0 393505 0 393505 819 08:32:28 [10/10] 386678 0 387744 0 386678 0 386678 1066 08:32:29 [10/10] 379901 0 381202 0 379901 0 379901 1301 08:32:30 [10/10] 373179 0 374714 0 373179 0 373179 1535 08:32:31 [10/10] 366441 0 368200 0 366441 0 366441 1759 08:32:32 [10/10] 360064 0 362058 0 360064 0 360064 1994 08:32:33 [10/10] 353111 0 355339 0 353111 0 353111 2228 08:32:34 [10/10] 345850 0 348306 0 345849 0 345849 2456 TPSが0に減少
  • 81. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害発生時の負荷/傾向・EM(DB Express) • 「cursor: pin s wait on X」「kksfbc child completion」が発生 日本オラクル株式会社 Confidential 81
  • 82. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害発生時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 82 Activeと Blocked が上昇
  • 83. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「cursor: pin s wait on X」 「kksfbc child completion」 が発生して、 スループットが0に 日本オラクル株式会社 Confidential 83
  • 84. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 次の一手は? 日本オラクル株式会社 Confidential 84
  • 85. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. ディスカッション • 「cursor: pin s wait on X」「kksfbc child completion」 が発生して、スループットが0になってしまっている。次の 一手は? • ヒント:今まで見てきている情報だけでは(おそらく)解明 できません。追加の情報を貰うとするならば……? – ハードパースしてないか? リテラルのSQLを流してないか? ⇒ アプリを作っている人に聞く – Shared Poolの問題じゃないか? 再帰SQLの確認、 共有プールの分割状況の確認 – AWR, sp2csv, 初期パラ, 共有プールの情報 – アラートログ, AWRダンプ, アプリログ 日本オラクル株式会社 Confidential 85
  • 86. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. アプリのログを確認 日本オラクル株式会社 Confidential 86 08:51:04 SQL> SET SERVEROUTPUT ON SIZE 1000000; 08:51:04 SQL> VAR B1 VARCHAR2(2000); 08:51:04 SQL> EXEC :B1 := ORDERENTRY.PROCESSORDERS(69, 10, 20); SQLERRM => ORA-01502: index 'SOE.ORDER_PK' or partition of such index is in unusable state PL/SQL procedure successfully completed. Elapsed: 00:00:00.05 08:51:04 SQL> ORAエラーが発生
  • 87. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. アラートログを確認 日本オラクル株式会社 Confidential 87 : 2018-08-12T08:53:24.754059+00:00 PDB4(3):WARNING: too many parse errors, count=249325 SQL hash=0x368413c7 PDB4(3):PARSE ERROR: ospid=9828, error=1502 for statement: 2018-08-12T08:53:24.754296+00:00 PDB4(3):UPDATE /*+ index(orders, order_pk) */ ORDERS SET ORDER_STATUS = FLOOR(DBMS_RANDOM.VALUE(:B3 + 1, :B2 )) WHERE ORDER_ID = :B1 PDB4(3):Additional information: hd=0x86235430 phd=0xa0e77000 flg=0x110676 cisid=116 sid=116 ciuid=116 uid=116 sqlid=f9u2k84v884y7 PDB4(3):...Current username=SOE PDB4(3):...Application: Process Orders Action: 2018-08-12T08:53:24.754805+00:00 PDB4(3):----- PL/SQL Call Stack ----- object line object handle number name 0xa0e91238 828 package body SOE.ORDERENTRY.PROCESSORDERS 0x6d2c6458 1 anonymous block : ORAエラーが発生 疑わしいUPDATE文
  • 88. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 動的ビュー(V$DIAG_ALERT_EXT)でアラートログを参照 • OSログイン不可でも、動的ビュー(V$DIAG_ALERT_EXT)で アラートログを参照可能 日本オラクル株式会社 Confidential 88 SET LINESIZE 32767; SET PAGESIZE 0; SELECT MESSAGE_TEXT FROM V$DIAG_ALERT_EXT; : WARNING: too many parse errors, count=13200 SQL hash=0x368413c7 PARSE ERROR: ospid=17678, error=1502 for statement: UPDATE /*+ index(orders, order_pk) */ ORDERS SET ORDER_STATUS = FLOOR(DBMS_RANDOM.VALUE(:B3 + 1, :B2 )) WHERE ORDER_ID = :B1 Additional information: hd=0x9ae9cf30 phd=0x9aec4018 flg=0x110676 cisid=116 sid=116 ciuid=116 uid=116 sqlid=f9u2k84v884y7 ...Current username=SOE ...Application: Process Orders Action: ----- PL/SQL Call Stack ----- object line object handle number name 0x9aecac30 828 package body SOE.ORDERENTRY.PROCESSORDERS 0x99857aa8 1 anonymous block : ORAエラーが発生
  • 89. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. SQL Developer Webでアラートを参照 • (左上)ボタン ⇒ SQL Developer ⇒ DBA ⇒ Alerts 日本オラクル株式会社 Confidential 89 ORAエラーが発生
  • 90. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ORA-1502エラー でUPDATE文 が実行できない。 日本オラクル株式会社 Confidential 90
  • 91. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. エラーメッセージ・マニュアルより 日本オラクル株式会社 Confidential 91
  • 92. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 使用不可の索引を再作成(REBUILD) 日本オラクル株式会社 Confidential 92 09:23:41 SQL> ALTER INDEX ORDER_PK REBUILD; Index altered. Elapsed: 00:00:03.52 09:23:45 SQL>
  • 93. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害解消時の負荷/傾向・Swingbench 日本オラクル株式会社 Confidential 93 09:23:37 [10/10] 0 0 14228 0 0 0 0 14228 09:23:38 [10/10] 0 0 14238 0 0 0 0 14238 09:23:39 [10/10] 0 0 14227 0 0 0 0 14227 09:23:40 [10/10] 0 0 14244 0 0 0 0 14244 09:23:41 [10/10] 0 0 14248 0 0 0 0 14248 09:23:42 [10/10] 0 0 14266 0 0 0 0 14266 09:23:43 [10/10] 0 0 14295 0 0 0 0 14295 09:23:44 [10/10] 0 0 14301 0 0 0 0 14301 09:23:45 [10/10] 0 0 14312 0 0 0 0 14312 09:23:46 [10/10] 2022 2022 16255 0 2022 0 2022 14233 09:23:47 [10/10] 8908 6886 22906 0 8908 0 8908 13998 09:23:48 [10/10] 16078 7170 29846 0 16078 0 16078 13768 09:23:49 [10/10] 23312 7234 36842 0 23312 0 23312 13530 09:23:50 [10/10] 30141 6829 43429 0 30141 0 30141 13288 09:23:51 [10/10] 36606 6465 49650 0 36606 0 36606 13044 09:23:52 [10/10] 43635 7029 56457 0 43635 0 43635 12822 09:23:53 [10/10] 50537 6902 63103 0 50538 0 50538 12565 09:23:54 [10/10] 57819 7282 70144 0 57819 0 57819 12325 09:23:55 [10/10] 64443 6624 76531 0 64443 0 64443 12088 09:23:56 [10/10] 70925 6482 82785 0 70925 0 70925 11860 09:23:57 [10/10] 77577 6652 89198 0 77577 0 77577 11621 09:23:58 [10/10] 84533 6956 95919 0 84533 0 84533 11386 : TPSが回復
  • 94. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害解消時の負荷/傾向・EM(DB Express) • 「cursor: pin s wait on X」「kksfbc child completion」が解消 日本オラクル株式会社 Confidential 94
  • 95. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3. 障害解消時の負荷/傾向・SQL Developer Web 日本オラクル株式会社 Confidential 95 Activeと Blocked が減少
  • 96. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参考:Case3. の障害発生のやり方 • アプリ(Swingbench)が参照する表の索引を無効化(UNUSABLE) 日本オラクル株式会社 Confidential 96 SQL> ALTER INDEX ORDER_PK UNUSABLE; Index altered. Elapsed: 00:00:00.12 SQL>
  • 97. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Case3.障害のまとめ •処理量(トランザクション量)低下時のASH傾向 –「cursor: pin s wait on X」「kksfbc child completion」 が大量に発生している。 •原因の追及 –ASHだけでは原因を特定できない。 –アプリのログやアラートログより、 ORA-1502エラーが発生しているのを確認 –ORDERS表の主キー(ORDER_PK)が使用不可 •対応方法 –ORDERS表の主キーを再作成(REBUILD) 日本オラクル株式会社 Confidential 97
  • 98. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 4章. まとめ 98日本オラクル株式会社 Confidential
  • 99. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 本セミナーのまとめ • 情報採取の重要性 –Option機能(Diagnostic Pack)が有ると、 自動で情報(AWR, ASH等)を採取してくれる。 –Optionが無い場合は自前で実装する。 • 見える化の効果 –直感的 かつ 素早く分析できる。 –正常時/異常時との比較 • ドリルダウンで詳細な分析 –元ネタの情報/仕組みを知っていると、より詳細な分析が可能 –アプリログ/アラートログの確認など、セオリーも大事です。 99日本オラクル株式会社 Confidential
  • 100. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | ご参加、ご清聴 ありがとうございました! 日本オラクル株式会社 Confidential 10
  • 101. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 日本オラクル株式会社 Confidential 10