[著者紹介] |
本記事は、第4回の記事の後編です。
前回の記事では、Oracle Business Intelligence Publisher (以下、BI Publisher) の機能概要、アーキテクチャおよび運用での活用例をご紹介しました。
今回はBI Publisherのレポート作成手順、運用効率化の為の自動配信の仕組み、および、開発時に便利なエクスポート・インポート機能をご紹介します。
なお、本記事で取り扱う EMCC やBI Publisherの画面例で使用する製品バージョンは、特に断りがない限り EMCC 13c Release 2、BI Publisher 12.1.3とします。
また、監視対象やリポジトリとして使用するOracle Database は 12c Release 1 とします。
まず、レポート作成手順についてご紹介します。
本項目ではBI Publisherレポートの作成詳細手順についてご紹介します。 EMCCおよびBI Publisherが構成され、データソース設定(前回記事の4.1 データソース設定を参照)がされていることを前提とした場合、レポート作成は以下の手順で実施します。
作成手順をご紹介するにあたり、出力結果が以下図1のようになる「SQL実行回数(秒間)のレポート」を例として取り扱います。 情報の取得元はデータベース内部に保管されたAWR情報(DBA_HISTビュー)です。
図1:SQL実行回数(秒間)レポート
はじめに、データ・モデルおよびレポートを格納する為のカタログ・フォルダを作成します。手順は下記の通りで、カタログ・フォルダ名は任意の名称で問題ありません。 カタログ・フォルダは、作成したユーザのみが参照可能な「マイ・フォルダ」と複数ユーザが参照可能な「共有フォルダ」に分かれています。「共有フォルダ」にはデフォルトで用意されているレポートが「/共有フォルダ/Enterprise Manager Cloud Control」配下に格納されています。
本手順では、SYSMANユーザでログインし、「マイ・フォルダ」内にカタログ・フォルダを作成します。
図2:カタログ・フォルダ作成画面
つぎに、レポートのインプット情報となるデータ・モデルを作成します。 前回の記事でご紹介させていただいた通り、データ・モデル作成時にはデータ・セット、値リストおよびパラメータの設定が必要です。
まず、データ・モデルを下記手順で作成します。
図3:データ・モデル作成画面
データ・モデルの作成画面を起動した後、以降に記載するサンプルSQLをデータ・セットに設定します。
図4:データ・セット設定画面
「OK」を押下後、メッセージ(1つ以上のバインド変数を選択して、対応するパラメータを作成してください)が出力されますが、後続の手順で作成する為、「OK」を押下します。
図5:データ・セット設定画面
データ・セットに定義するサンプルSQLの概要およびSQL文は以下の通りです。
【サンプルSQL概要】
該当時間のSQL実行回数(秒間)をAWRのスナップショット間の差分情報から 取得します。
(動作確認環境)
SELECT di.INSTANCE_NAME, bsn.SNAP_ID begin_snap_id, TO_CHAR(esn.BEGIN_INTERVAL_TIME,'YY-MM-DD HH24:MI') begin_time, ROUND((esy.VALUE - bsy.VALUE)/(EXTRACT (HOUR FROM esn.END_INTERVAL_TIME-esn.BEGIN_INTERVAL_TIME) * 3600 + EXTRACT (MINUTE FROM esn.END_INTERVAL_TIME-esn.BEGIN_INTERVAL_TIME)*60 + EXTRACT (SECOND FROM esn.END_INTERVAL_TIME-esn.BEGIN_INTERVAL_TIME)), 1) execute_count ① FROM DBA_HIST_SNAPSHOT bsn, DBA_HIST_SNAPSHOT esn, DBA_HIST_SYSSTAT bsy, DBA_HIST_SYSSTAT esy, ② DBA_HIST_DATABASE_INSTANCE di 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 AND bsn.DBID = bsy.DBID AND bsn.INSTANCE_NUMBER = bsy.INSTANCE_NUMBER AND bsn.SNAP_ID = bsy.SNAP_ID AND esn.DBID = esy.DBID AND esn.INSTANCE_NUMBER = esy.INSTANCE_NUMBER AND esn.SNAP_ID = esy.SNAP_ID AND bsy.STAT_ID = esy.STAT_ID AND bsy.STAT_ID = :stat_id ③ AND bsn.END_INTERVAL_TIME >= :start_time ③ AND esn.BEGIN_INTERVAL_TIME <= :end_time ③ AND bsn.DBID = di.DBID AND bsn.INSTANCE_NUMBER = di.INSTANCE_NUMBER AND bsn.STARTUP_TIME = di.STARTUP_TIME AND di.DB_NAME=:db_name ③ AND di.INSTANCE_NAME IN(:instance_name) ③ ORDER BY di.INSTANCE_NAME,BEGIN_TIME
【サンプルSQL補足】
次に、データベース名等のパラメータ値をSQLで抽出する為、下記手順で値リストの設定をします。
図6:値リスト設定画面
今回のサンプルSQLに使用する値リスト、および、それぞれの値リストに使用するサンプルSQLは、下記の表に記載した通りです。
値リスト名 | 値リストサンプルSQL |
db_name |
SELECT DISTINCT DB_NAME FROM DBA_HIST_DATABASE_INSTANCE |
instance_name |
SELECT DISTINCT INSTANCE_NAME FROM DBA_HIST_DATABASE_INSTANCE WHERE DB_NAME=:db_name ORDER BY INSTANCE_NAME |
stat_id |
SELECT A.STAT_ID FROM DBA_HIST_STAT_NAME A WHERE A.STAT_NAME = 'execute count' AND A.DBID = (SELECT B.DBID FROM DBA_HIST_DATABASE_INSTANCE B WHERE B.DB_NAME = :db_name AND ROWNUM = 1) AND ROWNUM = 1 |
表1:サンプルSQLに使用する値リスト
値リスト「stat_id」について補足します。「stat_id」で指定する値を切り替えることにより、SQL実行回数以外のレポートも簡単に作成することが可能です。
具体的には、表1にある「stat_id」の値リストサンプルSQLで指定しているSTAT_NAMEを抽出したい情報に変更します。 参考情報としてSTAT_NAMEに指定できる値と作成されるレポートの組み合わせをいくつかご紹介します。
作成対象レポート | STAT_NAME |
CPU使用量 | CPU used by this session |
ログバッファ割り当て処理リトライ回数 | redo buffer allocation retries |
ブロックロスト発生回数 | gc blocks lost |
コミット数 | user commits |
Redoログ生成量 | redo size |
インスタンス間転送CRブロック | gc cr blocks received |
インスタンス間転送Currentブロック | gc current blocks received |
論理読み込みブロック数 | session logical reads |
物理読み込みブロック数 | physical reads |
Session数 | logons current |
表2:STAT_NAME一覧
次に、下記手順でパラメータ設定をします。上記で定義した値リストは、下記手順で対象のパラメータと紐づけします。
図7:パラメータ設定画面
今回のサンプルSQLに使用するパラメータは、下記の表に記載した通りです。
パラメータ名 | データ型 | デフォルト値 | パラメータ・タイプ | 値リスト | オプション |
db_name |
文字列 | - | メニュー |
db_name |
・変更時に他のパラメータをリフレッシュ |
instance_name |
文字列 | - | メニュー |
instance_name |
・複数選択 ・全選択可能(すべての値が渡されました) |
start_time |
日付 | {$sysdate()-2$} | 日付 | - | - |
end_time |
日付 | {$sysdate()-1$} | 日付 | - | - |
stat_id |
整数 | - | メニュー |
stat_id |
・全選択可能(すべての値が渡されました) |
表3:サンプルSQLに使用するパラメータ
上記で設定するオプションである「変更時に他のパラメータをリフレッシュ」についてご補足します。
このオプションは、データベース名とインスタンス名のように値に依存関係がある場合に使用します。
表1:サンプルSQLに使用する値リストでご紹介している通り、インスタンス名(instance_name)は、データベース名(db_name)の値が変更されると値の再取得が必要となります。該当のオプションにチェックを入れると、データベース名(db_name)を変更した場合に自動的にインスタンス名(instance_name)を取得可能となり、手動での再取得が不要となります。その為、チェックを入れていただくことを推奨致します。
最後にサンプル・データおよびデータ・モデルの保存を下記手順で実施します。
図8:サンプル・データ保存画面
図9:データ・モデル保存画面
以上がデータ・モデルの作成手順です。
ここでは、画面ショットを使用してレポート作成方法を紹介します。
作成したデータ・モデルを使用して、レポートを作成します。
図10:レポート作成画面 ①
作成するレポートのレイアウトおよび抽出項目を設定します。
図11:レポート作成画面 ②
グラフと併せて表示する表形式のデータを選択し、レポート作成は完了です。
図12:レポート作成画面 ③
作成したレポートを保存し、表示できることを確認します。
図13:レポート作成画面 ④
以上がレポートの作成手順です。
次に、作成したレポートをメールで自動配信する設定についてご紹介します。
前回の記事でもご紹介させていただいた通り、BI Publisherで作成したレポートをメールで自動配信することにより運用負荷を更に軽減することが可能です。
本項目では、レポートを自動配信する為の下記設定手順についてご紹介します。
(1) メールサーバの設定
(2) レポート・ジョブの作成
まず、メールサーバの設定を下記手順で実施します。
図14:メールサーバ追加画面 ①
図15:メールサーバ追加画面 ②
図16:メールサーバ追加画面 ③
以上がメールサーバの追加手順です。
次にレポート・ジョブの作成手順をご紹介します。
定期的に配信したいレポートを選択し、ジョブを作成します。
週次レポートを配信する運用を例として手順を記載します。
図17:レポート・ジョブ作成画面 ①
週次レポートを配信したい場合は、1週間分の情報を取得できるように「開始日付」および「終了日付」のパラメータ設定を変更する必要があります。
例えば毎週日曜日に動作する週次レポート(平日)を配信するジョブを発行したい場合はデータ・モデル内のパラメータを下記のように設定します。
パラメータ名 | データ型 | デフォルト値 | パラメータ・タイプ | 値リスト | オプション |
start_time |
日付 | {$sysdate()-6$} | 日付 | - | - |
end_time |
日付 | {$sysdate()-3$} | 日付 | - | - |
表4:週次レポートに使用するパラメータ
※日曜日に実行される処理で平日(月曜日~金曜日)をSQLのデータ取得期間として指定するため、sysdate(日曜日)から見て6日前(月曜日)をstart_time、sysdate(日曜日)から見て3日前(金曜日)をend_timeのデフォルト値にそれぞれ指定しています。
図18:レポート・ジョブ作成画面 ②
「出力」タブでは配信フォーマットやメール本文に記載する情報を入力します。
図19:レポート・ジョブ作成画面 ③
配信するレポートフォーマットは下記から選択可能です。
「スケジュール」タブでは、運用に適した配信頻度および時刻を設定します。 本手順では、週次レポートを配信する前提の為、「週次」を選択します。
図20:レポート・ジョブ作成画面 ④
頻度は下記から選択可能です。
「スケジュール」タブでの設定完了後、ジョブを発行することが可能です。
図21:レポート・ジョブ作成画面 ⑤
以上が自動配信設定手順です。
次に、作成したデータ・モデルおよびレポートのエクスポートおよびインポート手順についてご紹介します。
本番環境のデータ・モデルやレポートをバックアップする時や、開発環境で作成したデータ・モデルやレポートを本番環境へリリースする時に、エクスポートおよびインポート機能を活用することができます。
まず、エクスポート手順をご紹介します。
図22:エクスポート画面
上記手順では、データ・モデルのエクスポート手順をご紹介しましたが、レポートのエクスポート手順も同様です。
次に、インポート手順をご紹介します。上記でエクスポートしたデータ・モデルを違うフォルダにインポートします。
図23:インポート画面
以上がインポート手順です。
インポート時の注意点として、フォルダ構成またはデータソースの名称が同一でない場合は、インポート後の環境で下記対応が必要となります。
図24:レポート起動時のエラーメッセージ
図25:データソースのエラーメッセージ
エススポートおよびインポート機能のご紹介は以上です。
最後にBI Publisherを構成する場合のEMサーバの要件について記載します。
EMサーバで必要となるOracle Management Service(以下 OMS)とOracle Management Repository(以下 OMR)の要件についてそれぞれ記載します。
なお、本項目は製品マニュアルの抜粋であるため、最新情報を確認する意味で参考情報と示した実際のマニュアル記述もあわせてご確認ください。
OMSの要件は規模別に下記の通りです。規模についての補足情報は後述します。
下記の物理メモリーには、BI Publisherに必要なメモリーが含まれています。
規模 | CPU | RAM | ハード・ディスク領域 | 一時ディレクトリのハード・ディスク領域 | Oracle Weblogic Server JVMヒープ・サイズ |
小 | 4 | 10GB | 28GB | 10GB | 1.7GB |
中 | 6 | 12GB | 28GB | 10GB | 4GB |
大 | 12 | 24GB | 28GB | 10GB | 8GB |
表5:OMSの要件
また、OMRの要件は規模別に下記の通りです。
規模 | CPU | RAM | ハード・ディスク領域 |
小 | 4 | 7GB | 147GB |
中 | 6 | 10GB | 455GB |
大 | 12 | 18GB | 649GB |
表6:OMRの要件
EMCCの構成規模の考え方は下記の通りです。
規模 | エージェント数 | ターゲット数 | 同時ユーザセッション数 |
小 | 100未満 | 1000未満 | 10未満 |
中 | 100以上1000未満 | 1000以上10000未満 | 10以上25未満 |
大 | 1000以上 | 10000以上 | 25以上50未満 |
表7:EMCC構成規模
以上がBI Publisherを構成する場合のEMサーバの要件となります。
本記事では具体例を使用したBI Publisherのレポート作成手順、および、運用効率化の為の自動配信の仕組みや開発時に便利なエクスポート・インポート機能をご紹介させていただきました。
前回の記事と併せてBI Publisherの運用イメージは持っていただけたでしょうか。
BI Publisherをご活用いただくことで皆様のDB運用が効率化すれば幸いです。