How to Use the PowerPoint Template

Similar documents
Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

Agenda はじめに 目的とゴール Part1の振り返り AWRを使用した性能分析 AWR 概要 AWRに格納される情報 AWR レポートにおける分析アプローチ AWR 確認ポイント Case Study AWRとアーキテクチャの関係 まとめ Part2のポイント まとめ Copyright 20

ORACLE TUNING PACK 11G

Oracle Direct 無償支援サービス ヒアリング・シート利用手順

はじめに コース概要と目的 Oracle データベースのパフォーマンス問題の分析方法 解決方法を説明します 受講対象者 データベース管理者の方を対象としています 前提条件 データベース アーキテクチャ データベース マネジメント を受講された方 もしくは同等の知識 をお持ちの方 テキスト内の記述につ

OWI(Oracle Wait Interface)の概要

第 3 章代表的なチューニングポイント 3 Q. ストアド プロシージャを使用した SQL 共有率の向上 A. ストアド プロシージャを使用した場合 同じストアド プロシージャを実行する複数のユーザーが 同じ共有 PL/SQL 領域を使用します また ストアド プロシージャは解析済みで格納されている

Oracle Database 12c Release 1 ( ) CoreTech Seminar

MaxGauge_診断分析プロセス

サポートエンジニアが語るパフォーマンス問題の原因調査とチューニング 日本オラクル株式会社データベーステクノロジーサポート本部 Principal Technical Support Engineer 田島教子

アジェンダ Oracle サーバの見える化はなぜ必要? WebSAMApplicationNavigator で簡単 安心に監視を実現 Oracle 監視の導入コスト 2 NEC Corporation 2009

意外と簡単!?Oracle Database 10g Release2 - データベース構築から運用まで - データベースの運用 - チューニング編 (Windows 版 ) Creation Date: Nov 2, 2005 Last Update: Nov 2, 2005 Version: 1

PowerPoint Presentation

Slide 1

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

意外と簡単

今さら聞けない!? Oracle入門 ~後編~

Microsoft PowerPoint - J-S301167_idx_comp.ppt [互換モード]

これは何? ORACLE の内部状態を示す情報の一つである 待機イベントについて解説します 待機イベントを知ることで 一歩進んだパフォーマンスチューニングが出来ます また 待機イベントという切り口を通して ORACLE のアーキテクチャに対する理解を深めていきます なお ORACLE のバージョンは

Oracle Solaris 仮想環境とプロビジョン環境の構築

今さら聞けない!? Oracle入門 ~前編~

Oracle Database 11gのSQL Plan Management

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

SQL Performance Analyzer

Oracle Reports、Crystal、ActuateからOracle Business Intelligence Publisherへの変換

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

データベース暗号化ツール「D’Amo」性能検証

Null

Oracle Database 11g:管理性の概要

目次 はじめに... 2 無料トライアルのサインアップ方法... 3 トライアル環境へのアクセス 参考情報

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

PowerPoint プレゼンテーション

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Oracle Real Application Clusters 10g: 第4世代

自己管理型データベース: 自動SGAメモリー管理

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

PowerPoint Presentation

Title Slide with Picture

Oracle Enterprise Manager Cloud Control:インストール

Oracle SQL Developer Data Modeler

PL/SQLからのオペレーティング・システム・コマンドの実行

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

3 Q. CONFIGURE で設定した RMAN 構成情報をデフォルトに戻す方法 A. CLEAR コマンドを使用すると 永続設定値をデフォルトに戻すことができます CLEAR コマンドでは 個々のパラメータを 1 つずつ CLEAR します SYS.DBMS_BACKUP_RESTORE.RES

Oracle Database 10g Release 2を使用したデータベース・パフォーマンス

Title Slide with Picture

Slide 1

Oracle Data Pumpのパラレル機能

実践!Oracle Enterprise Manager を使用した 簡単データベース管理 日本オラクル株式会社製品事業統括テクノロジー製品事業統括本部シニアセールスコンサルタント海老坂恵

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

Slide 1

PowerPoint プレゼンテーション

検証事例 富士通株式会社

Slide 1

K5 DB powered by Oracle® Cloud FAQ

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

(Microsoft PowerPoint - WQ21JDEadapter\215\\\220\254\216\350\217\207\217\221_ ppt)

Oracle TimesTenについて

Oracle Data Provider for .NET の新機能


自己管理型データベース: アプリケーションおよびSQLチューニング・ガイド

日本オラクル株式会社

Oracle Database 11g × Hitachi Storage Solutionsのベストプラクティス

Oracle SQL Developer 2.1概要と新機能

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

PowerPoint Presentation

Microsoft Office Visioによる 施設管理について

A. 前ページからの続きです DBMS_SPACE.UNUSED_SPACE の各パラメータの意味 segment_owner = オブジェクトの所有者 segment_name = オブジェクト名 segment_type = オブジェクトタイプ total_blocks = セグメント合計ブロッ

Oracle Enterprise Manager 10g R2 Grid Control: データベース管理の新機能

Oracle Direct Seminar <Insert Picture Here> もうアプリ修正は必要ない! 画期的な SQL チューニング手法 日本オラクル株式会社

Oracle BI Publisherの概要

Enterprise Cloud + 紹介資料

Oracle Real Application Testing と NetApp SnapManager for OracleによるOracle Databaseアップグレードテストの革新

ソフト活用事例③自動Rawデータ管理システム

Transcription:

運用ヘルスチェックでトラブルを予防しよう! 今西由人スタッフコンサルタント クラウド テクノロジーコンサルティング統括本部テクニカルアーキテクト本部 DB ソリューション部 2

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらないで下さい オラクル製品に関して記載されている機能の開発 リリースおよび時期については 弊社の裁量により決定されます 3

アジェンダ 1 2 3 4 はじめに AWRの概要 DB 全体の傾向分析 SQLを特定した傾向分析 4

アジェンダ 1 2 3 4 はじめに AWRの概要 DB 全体の分析 SQLを特定した分析 5

はじめに開発 運用工程におけるよくある課題 No 課題 対策案 1 2 3 本番リリース後の データ蓄積に伴うレスポンス劣化の障害が発生 リリース直後は I/O 量が少なかった メモリ内で処理が完結していた テストデータ量 種類が本番相当でないなど 性能試験が不十分となっている 開発者の SQL コーディング チューニングスキルが低く 適切な SQL コーディング チューニングが実施されない可能性 対策案 1 設計書 コーディングレビュー 2 将来の本番データを想定した性能試験 長期運用を考慮したロングラン試験 3 運用ヘルスチェック 本日の内容 6

はじめに運用ヘルスチェックの必要性 サービスの安定稼動維持のため 問題を未然に検知し対策をとる必要 問題の予兆を事前に検知するためには システムの状態を把握する性能分析を定期的に行う必要 システムのヘルスチェックは人間で例えたところの健康診断 7

はじめに運用ヘルスチェックにおける現状 As Is 作業が担当者に依存しているため 収集する情報や加工方法にバラつきが発生し 正しい分析ができていないケースがある To- Be DBA による実施 または 各プロジェクト担当者にナレッジやスキルを移管し 各プロジェクトにおける正しい観点での分析 プロジェクト ヘルスチェックの作業フロー ( 簡易版 ) プロジェクト ヘルスチェックの作業フロー ( 簡易版 ) A B C D 収集加工分析対策 収集加工分析対策 収集加工実施なし分析対策 タスクの流れ 収集加工分析対策 D B A 支援 A B C D 収集加工分析対策 収集加工分析対策 収集加工分析対策 収集加工分析対策 タスクの流れ 8

はじめに本セッションの内容 目的 データベースの診断情報を利用した運用中システムを対象としたヘルスチェックの観点や手法を実際のプロジェクトの事例を基にご紹介します 現在運用されているシステムを対象にヘルスチェックを実施いただき トラブルの未然防止に役立てていただければ幸いです 9

はじめに本セッションの内容 (DB 観点における性能ヘルスチェック ) 本日のご紹介範囲 PLAN 計画立案 ( チェック対象項目や期間 方法 ) DO 情報取得 ACTION 対処策検討 実施 ( インスタンス / SQL チューニング等 ) CHECK 結果確認 ( 特異点やボトルネックの確認 ) 10

アジェンダ 1 2 3 4 はじめに AWRの概要 DB 全体の分析 SQLを特定した分析 11

AWR の概要 AWR(Automatic Workload Repository/ 自動ワークロード リポジトリ ) とは? データベース内部の統計情報を収集 管理する機能 定期的にSGAからデータベース内部の統計情報を自動で収集し スナップショット間の情報をレポート出力可能 サーバプロセス 1 サーバプロセス 2 サーバプロセス 3 バックグラウンドプロセス スナップショット 1 スナップショット 2 AWR の分析範囲 スナップショット n 時間 AWR レポート AWR の利用には Oracle Database Enterprise Edition の有償オプションである Oracle Diagnostics Pack が必要となります 12

AWR の概要取得タイミングは?, 誰が取得できる?, どこに格納される? スナップショットはデフォルトでは 1 時間に一回バックグラウンドプロセスにより自動で取得 DBA 権限を持つユーザーがパッケージ ( DBMS_WORKLOAD_REPOSITORY ) 実行により手動取得可能 SYSAUX 表領域内の DBA_HIST から始まるビューに一部を除きインスタンス起動時からの累積値が格納される xx 月 01 日 15:00 xx 月 01 日 16:00 xx 月 01 日 17:00 xx 月 01 日 17:xx DBA DBMS_WORKLOAD _REPOSITORY SYSAUX SYSAUX SYSAUX SYSAUX 13

AWR の概要なぜ AWR を利用するのか? 特定の期間内のインスタンス全体の状態を把握 Load Profile SQL 実行回数や論理 物理読込み回数 処理量 Top 10 Foreground Events by Total Wait Time 物理読込みやキャッシュフュージョン等イベントごとの時間 処理時間 Memory Dynamic Components バッファキャッシュや共有プールのサイズ リソース使用量 SQL ordered by xxx 実行回数や論理 物理読込み量 CPU 利用時間の長い SQL 高負荷 SQL 14

AWR の概要 AWR をどのように活用するのか?( 例 1) インスタンスに関する統計レポート出力 SQL * Plus で DB インスタンスに接続し以下を実行 SQL> @?/rdbms/admin/awrrpt.sql SQL に関する統計レポート出力 SQL * Plus で DB インスタンスに接続し以下を実行 SQL> @?/rdbms/admin/awrsqrpt.sql 15

AWR の概要 AWR をどのように活用するのか?( 例 2) DBA_HIST ビューより情報取得しグラフ化 SELECT 文を発行し csv 形式で出力後 EXCEL に取り込み グラフ化 3,000,000 2,500,000 2,000,000 1,500,000 1,000,000 orcl1 - execute count orcl2 - execute count 500,000 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 11 16

AWR の概要 ご参考 AWR の CSV 出力スクリプト ( 例 1:Load Profile) set termout off set pagesize 50000 set linesize 10000 set trimspool on set colsep " " select '"' bsn.snap_id '","' to_char(bsn.end_interval_time,'yyyy') '","' 続きは Qiita で AWR から指定した期間の load profile を csv 形式で取得する方法 http://qiita.com/yimani/items/7e4e529c972acb46f02f to_char(bsn.end_interval_time,'mm') '","' to_char(bsn.end_interval_time,'dd') '","' to_char(bsn.end_interval_time,'hh24') '","' esn.snap_id '","' bsn.instance_number '","' 17

AWR の概要 ご参考 AWR の CSV 出力スクリプト ( 例 2:Foreground Wait Event) set serveroutput on declare event varchar2(100); waits number; time number; begin for snlp in ( select bsn.snap_id bsid, esn.snap_id esid, to_char(bsn.end_interval_time,'yyyy') yyyy, to_char(bsn.end_interval_time,'mm') mm, to_char(bsn.end_interval_time,'dd') dd, to_char(bsn.end_interval_time,'hh24') hh, bsn.instance_number inum from DBA_HIST_SNAPSHOT bsn, DBA_HIST_SNAPSHOT esn where bsn.dbid = esn.dbid and bsn.instance_number = esn.instance_number and bsn.end_interval_time = esn.begin_interval_time and bsn.startup_time = esn.startup_time 続きは Qiita で AWR から指定した期間の待機イベント TOP5 を csv 形式で取得する方法 http://qiita.com/yimani/items/e23dc94774e153e95e8e 18

AWR の概要 ご参考 CSV からスムーズなグラフ作成 DBA_HIST ビューより情報取得しグラフ化 ピボットグラフ ドラッグ & ドロップ 凡例 横軸 縦軸 19

AWR の概要 AWR を活用したヘルスチェックフロー ( 簡易版 ) 本日のご紹介範囲 ヘルスチェック開始 DB 全体の傾向分析 SQL の深堀 AWR より以下観点を確認 処理量 処理時間 リソース使用量 高負荷 SQL SQL を特定した分析 不要 SQLの負荷傾向が特異 SQLのレスポンス要件が厳しい 急遽リリースしたSQL 詳細調査 不要 原因分析 対策 ヘルスチェック終了 DBA_HIST_SQLSTAT を活用 問題解消まで繰り返し 20

アジェンダ 1 2 3 4 はじめに AWRの概要 DB 全体の分析 SQLを特定した分析 21

DB 全体の分析分析観点 AWR レポートを使用したヘルスチェックは 下記の理由から基本的には同一条件で取得した複数期間の比較により実施 AWR レポート単体での評価には H/W 性能や各処理特性を把握していないと難しく 傾向分析ができない 機能により要件 ( レスポンス時間やリソース使用量 ) が異なるため同じ基準での判断ができない DB に対する稼働状況 ( 処理量 ) を把握しつつ 処理時間に変化はないか リソースに変化はないか関係性を導き 負荷が上昇している SQL はないかという観点で性能の傾向分析を実施 1. 処理量は増えていないか? 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 22

1. 処理量は増えていないか? DB 全体の分析分析観点 : 処理量 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 主な傾向分析の指標として Load Profile より以下を確認 処理量の指標 SQL の実行回数 トランザクション数 REDO 生成量 ブロック読み込み量の指標 論理読み込みブロック数 物理読み込みブロック数 傾向に特異点はないか 550 540 530 520 510 500 490 480 470 460 分析例 : 各月ピーク日の物理読込みブロック数推移 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 10 10 10 1 2 3 2016 右肩上がりでの増加傾向はないか 時日月年 Physical reads: 23

1. 処理量は増えていないか? DB 全体の分析分析観点 : 処理時間 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 主な処理時間の傾向分析の指標として以下を確認 処理時間内訳の指標 : 時間モデル統計 AWRの Time Model Statistics から確認可能 待機時間の指標 : 待機イベント AWRの Top 10 Foreground Events by Total Wait Time から確認可能 グラフ化することで処理量の変化に対する処理時間の変化や傾向変化を容易に把握可能 3500 3000 2500 2000 1500 1000 500 待機時間が長い= ボトルネックとなりやすい 0 分析例 : 各月ピーク日の待機時間推移 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 10 10 10 1 2 3 2016 log file sync db file sequential read db file scattered read direct path read DB CPU 増加傾向にある待機イベントはないか 24

1. 処理量は増えていないか? DB 全体の分析分析観点 : 処理時間 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 待機時間が長い = ボトルネックとなりやすい という考えから 待機イベントの確認によりボトルネックの特定が可能 待機時間の長いイベント = チューニング効果の大きいイベント チューニング時に手をつけるべきイベント I/O?CPU? N/W?Etc 3500 3000 2500 2000 1500 1000 500 0 分析例 : 各月ピーク日の待機時間推移 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 10 10 10 log file sync db file sequential read db file scattered read direct path read DB CPU 発生起因や関連するリソースは? 1 2 3 2016 25

1. 処理量は増えていないか? DB 全体の分析分析観点 : リソース 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 主なリソースに関する傾向分析の指標として以下を確認 CPU 使用率 : AWR の HOST CPU から確認可能 SGA 使用量 : AWR の SGA breakdown difference から確認可能 バッファキャッシュヒット率 AWR の Instance Efficiency Percentages から確認可能 ライブラリキャッシュヒット率 AWR の Instance Efficiency Percentages から確認可能 PGA 使用量 : AWR の PGA Aggr Target Stats から確認可能 12000 10000 8000 6000 4000 2000 0 分析例 :SGA 内コンポーネントの推移 9 1011121314151617 9 1011121314151617 9 1011121314151617 10 10 10 9000 8000 7000 6000 large 5000 4000 3000 java 2000 1000 傾向に特異点 streams 0 shared 9 1011121314151617 9 1011121314151617 9 1011121314151617 はないか 分析例 : 割り当てられた PGA 総量 10 10 10 Total 1 2 3 2016 1 2 3 2016 26

1. 処理量は増えていないか? DB 全体の分析分析観点 : 高負荷 SQL 2. 処理時間に影響はないか? 3. リソースに影響はないか? 4. 高負荷 SQL はないか? 主な高負荷 SQL に関する指標として以下を確認 処理時間長いSQL : AWRの sql ordered by elapsed time から確認可能 CPU 時間長いSQL : AWRの sql ordered by cpu time から確認可能 論理読み込み量多いSQL : AWRの sql ordered by gets から確認可能 物理読み込み量の多いSQL : AWRの sql ordered by reads から確認可能 物理読込みの待機時間が多い時間帯に物理読込み量の多い SQL はどれだろう DB 処理時間の多い時間帯に長時間実行されている SQL はないだろうか 27

DB 全体の分析分析観点まとめ 問題の未然検知のため定期的なヘルスチェックによる傾向分析は必要 実施タイミング例 : 新規機能の検討タイミングやリリース後 落ち着いているシステムの場合は四半期に一度等 実施対象日例 : 各月における各業務ピーク日 傾向把握や特異点の検知のため複数期間で比較すると容易 右図 4 点の相互影響を確認しながら分析 28

DB 全体の分析 ご参考 分析対象 DBA_HIST ビューの例 分析内容 処理量 (SQL 実行回数や Redo 生成量 ) 処理時間 (db file sequential read 等の待機時間 ) リソース使用量 ( バッファ キャッシュや共有プール ) リソース使用量 (PGA サイズ ) 高負荷 SQL DBA_HISTビュー DBA_HIST_SYSSTAT DBA_HIST_SYSTEM_EVENT DBA_HIST_MEM_DYNAMIC_COMP DBA_HIST_PGASTAT DBA_HIST_SQLSTAT 29

アジェンダ 1 2 3 4 はじめに AWRの概要 DB 全体の分析 SQLを特定した分析 30

SQL を特定した分析分析期間をある 2 点のスナップショット間に限定した場合 AWR SQL レポートを用いて分析 SQL と分析期間が細かく限定できている場合に有効 実行計画は? SQL の実行回数や読み込み量は? 31

SQL を特定した分析分析期間を複数スナップショット間としたい場合 DBA_HIST_SQLSTAT ビューより SQL 情報を取得しグラフ化 AWR SQL レポートの情報が格納されているビューの一つ 一度に複数 SQL 複数期間の分析が可能 Excel に取り込みグラフ化することで容易に傾向把握が可能 グラフ化することで傾向や特異点の把握が容易 複数の AWR SQL レポートを比較した傾向分析は骨が折れる 秒 180 160 140 120 100 80 60 40 20 0 0 7 14 21 4 11 18 1 8 15 22 5 12 19 2 9 16 23 6 13 20 3 10 17 24 25 26 27 28 29 30 3 2016 0qc1hv1q61pu6 0w26sk6t6gq98 2y708xtd9vj74 57nun6q21t9rd 5ms6rbzdnq16t 772s25v1y0x8k 7829p337kgqzm 7kmbrw7q8hn4g 32

SQL を特定した分析 ご参考 期間と SQL ID を指定した DBA_HIST_SQLSTAT からの情報取得 SQL 例 set linesize 10000 set pagesize 10000 set trimspool on set termout off set colsep " " select sn.begin_interval_time, st.* from DBA_HIST_SQLSTAT st, DBA_HIST_SNAPSHOT sn where st.snap_id = sn.snap_id and st.dbid = sn.dbid and st.instance_number = sn.instance_number and sn.begin_interval_time between to_date('2016/03/01 13:50:00', 'yyyy/mm/dd hh24:mi:ss') and st.sql_id in ( aaa); spool off and to_date('2016/03/31 19:10:00', 'yyyy/mm/dd hh24:mi:ss') 続きは Qiita で AWR から指定した SQL ID の実行統計を取得する方法 http://qiita.com/yimani/items/9c8f7ce9dd456d19df51 33

SQL を特定した分析性能ヘルスチェックフロー 実行時間の 増加傾向確認 待機時間の 内訳 待機時間の 増加原因 実行時間が右肩上がりに増加する SQL はないか? IO 待機時間?CPU 使用時間? クラスタ待機時間? 読み込み量の増加? 実行計画の変動? 処理競合? DBA_HIST_SQLSTAT を活用した分析をご紹介 34

SQL を特定した分析 DBA_HIST_SQLSTAT を利用した傾向分析方法 分析したい内容例 算出方法 1 実行あたりの実行時間 ELAPSED_TIME_DELTA / EXECUTIONS_DELTA 1 実行あたりの実行時間内訳 (CPU 時間 ) CPU_TIME_DELTA / EXECUTIONS_DELTA 1 実行あたりの実行時間内訳 (I/O 時間 ) IOWAIT_DELTA / EXECUTIONS_DELTA 1 実行あたりの実行時間内訳 ( クラスタ待機時間 ) CLWAIT_DELTA / EXECUTIONS_DELTA 1 実行あたりの物理読込み量 DISK_READS_DELTA / EXECUTIONS_DELTA 1 実行あたりの論理読込み量 BUFFER_GETS_DELTA / EXECUTIONS_DELTA 実行計画の遷移 PLAN_HASH_VALUE 35

SQL を特定した分析 DBA_HIST_SQLSTAT を利用した実行時間の増加傾向 実行時間の内訳確認 DBA_HIST_SQLSTAT により実行時間の内訳 (CPU, I/O, Cluster etc) の把握が可能 秒 1.2 1 0.8 0.6 0.4 0.2 0 1 実行あたりの実行時間 9 11 13 15 17 10 12 14 16 9 11 13 15 17 10 10 10 1 2 3 2016 7kmbrw7q8hn4g 8835b6xt5yywq 94kdls9402ldsd 右肩上がりに増加するSQLを発見 0.9 秒 0.8 実行時間の内訳確認 0.7 CPU?, I/O?, Cluster? 0.6 Etc 0.5 0.4 0.3 0.2 0.1 0 1 実行あたりの実行時間内訳 9 11 13 15 17 10 12 14 16 9 11 13 15 17 10 10 10 1 2 3 2016 d4kbrw7q8hn4g - Sum of IOWAIT per exec d4kbrw7q8hn4g - Sum of CPU_TIME per exec d4kbrw7q8hn4g - Sum of CLWAIT per exec 36

SQL を特定した分析 DBA_HIST_SQLSTAT を利用した実行時間の増加要因調査例 実行計画の遷移 PLAN_HASH_VALUE より実行計画の遷移を確認 (PLAN HASH VALUE とは実行計画ごとに付与された値 ) 読み込み量の遷移 DISK_READS_DELTA / EXECUTIONS_DELTA より物理読込み量の遷移を確認 BUFFER_GETS_DELTA / EXECUTIONS_DELTA より論理読込み量の遷移を確認 PLAN HASH VALUE 読込みブロック数の推移 3,500,000,000 3,000,000,000 2,500,000,000 2,000,000,000 1,500,000,000 1,000,000,000 500,000,000 0 9 11 13 15 17 10 12 14 16 9 11 13 15 17 10 10 10 d4kbrw7q8hn4g 100,000 80,000 60,000 40,000 20,000 0 9 11 13 15 17 10 12 14 16 9 11 13 15 17 10 10 10 d4kbrw7q8hn4g - Sum of DISK_READS per exec d4kbrw7q8hn4g - Sum of BUFFER_GETS per exec 1 2 3 1 2 3 2016 2016 37

SQL を特定した分析 SQLHC を使用した詳細情報採取例 SQLHC( SQL チューニング ヘルスチェック スクリプト ) による情報取得 ライセンスの必要がない無償スクリプト SQL ID を指定することでコストベース オプティマイザ (CBO) の統計 スキーマ オブジェクトのメタデータ および分析対象の SQL のパフォーマンスに影響する可能性のあるパラメータ等の情報をレポーティング SQL チューニング ヘルスチェック スクリプト (SQLHC) ( ドキュメント ID 1542531.1) よりスクリプトのダウンロード可能 詳しくは本ドキュメントをご参照ください 作業実施者のスキルに依存せず 容易かつ網羅性の高い情報採取が可能 38

SQL を特定した分析 SQLHC の実行例 $ sqlplus / as sysdba SQL> @sqlhc.sql DBA 権限を持つスキーマで実行 Parameter 1: Oracle Pack License (Tuning, Diagnostics or None) [T D N] (required) 1 に値を入力してください : N PL/SQL プロシージャが正常に完了しました Parameter 2: SQL_ID of the SQL to be analyzed (required) 2 に値を入力してください : a1dkahc57tu6k ( 略 ) ライセンスの保有情報を入力 分析対象の SQL ID を入力 SQLDX files have been added to sqlhc_20160403_130159_a1dkahc57tu6k.zip Archive: sqlhc_20160403_130159_a1dkahc57tu6k.zip カレントディレクトリに分析結果出力 Length Date Time Name --------- ---------- ----- ---- 10266 04-03-2016 13:02 sqlhc_20160403_130159_a1dkahc57tu6k_1_health_check.html 119890 04-03-2016 13:03 sqlhc_20160403_130159_a1dkahc57tu6k_2_diagnostics.html 3872 04-03-2016 13:03 sqlhc_20160403_130159_a1dkahc57tu6k_3_execution_plans.html 214 04-03-2016 13:03 sqlhc_20160403_130159_a1dkahc57tu6k_4_sql_detail.html 23899 04-03-2016 13:03 sqlhc_20160403_130159_a1dkahc57tu6k_9_log.zip 2486 04-03-2016 13:03 sqlhc_20160403_130159_a1dkahc57tu6k_8_sqldx.zip --------- ------- 160627 6 files 39

SQL を特定した分析 SQLHC のアウトプット例 実行計画 アクセス対象となる表と索引の定義情報 初期化パラメータ 実行計画ごとの実行統計 40

SQL を特定した分析分析観点まとめ DBA_HIST_SQLSTAT ビューより情報採取し傾向分析 グラフ化することで傾向や特異点の把握が容易 AWR レポートには出力されない低負荷な SQL の情報採取も可能な場合あり 特異点があればドリルダウンし実行時間の内訳確認等 要因調査 SQLHC による容易かつ網羅性の高い情報採取 41

本日お伝えしたいことまとめヘルスチェックでトラブル発生を予防しよう! 運用ヘルスチェックにより 多くのトラブルを予防できます 障害発生時のみの情報採取 分析ではなく 正常稼動時から継続したチェックをお願いします ぜひ運用工程でのタスクの一つとしてご認識いただきたい 42