管理者は、データベースが正常に動作しているか否かに注意を怠ってはならない。今回は、データベースの状態監視とメンテナンス方法について解説する。(編集局)
「データベースの運用・管理」といっても、その範囲は非常に多岐にわたります。とはいえ、大きなフレームワークとして、
の2つに分けられます。データベースのバックアップについては第4回で紹介済みなので、今回はメンテナンス作業について説明します。
データベースのメンテナンスとは、システムを問題なく稼働させるために、必要なデータベース・オブジェクトを正常な状態に保つ作業です。例えば、表スペースは常にアクセス可能であり、更新系のシステムであれば新規データのための一定の表スペースが確保されている状態です。また、索引はディスクスペースのフラグメンテーションがなく高速にアクセス可能であり、DB2のオプティマイザ−のために統計情報が最新状態に保たれている状態です。
データベースの運用・管理という作業は地味ですが、特に24時間365日の運用を必要とするシステムでは極めて大切で、かつ難しい作業です。
まず、各データベース・オブジェクトが正常な状態であるかどうかを監視する体制を整える必要があります。
DB2 V8.1では、「ヘルス・センター」と呼ぶGUIの監視ツールが提供されています。このヘルス・センターを使えば、データベース・オブジェクト(データベース、表スペース、表、索引、ロギング)を監視できます。
ヘルス・センターを使って監視しても良いのですが、常にGUI環境が利用できるとは限りません。ここでは、コマンドライン版の監視ツール「ヘルス・モニター」を前提にした監視方法を紹介します。
監視に際しては、管理者に対して迅速に異常を通知する仕組みが必要です。add contactコマンドで、アラートなどの発生時に電子メールやポケットベルに異常を通知する設定を行います。
$ db2 add contact dba type email address dba@atmarkit.co.jp DB20000I ADD CONTACT コマンドが正常に終了しました。
また、DB2 Administration Server (DAS) 構成パラメータの「連絡先リストのロケーション」(CONTACT_HOST)と「SMTPサーバ」(SMTP_SERVER)に、適切なロケーションとサーバ名を設定します。
$ db2 update admin config using CONTACT_HOST localhost DB20000I UPDATE ADMIN CONFIGURATION コマンドが正常に終了しました。
$ db2 update admin config using SMTP_SERVER localhost DB20000I UPDATE ADMIN CONFIGURATION コマンドが正常に終了しました。
「ヘルス・インディケーター」を設定することにより、ヘルス・モニターのしきい値を指定できます。アラート発生時のアクションも構成できます。
ヘルス・インディケーターのカテゴリは以下のとおりです。
まず、現在の設定を確認します。データベース・マネージャーとデータベースを両方確認します。
$ db2 get alert config for dbm
アラート構成
標識名 = db2.db2_op_status
タイプ = 状態ベース
機密性 = 0
公式 = db2.db2_status;
アクション = Disabled
しきい値または状態のチェック = Enabled
標識名 = db2.sort_privmem_util
タイプ = しきい値ベース
警告 = 90
アラーム = 100
機密性 = 0
公式 = ((db2.sort_heap_allocated/sheapthres)*100);
アクション = Disabled
しきい値または状態のチェック = Enabled
標識名 = db2.mon_heap_util
タイプ = しきい値ベース
警告 = 85
アラーム = 95
機密性 = 0
公式 = ((db2.mon_heap_cur_size/db2.mon_heap_max_size)*100);
アクション = Disabled
しきい値または状態のチェック = Enabled
$ db2 get alert config for db on sample
アラート構成
標識名 = db.db_op_status
タイプ = 状態ベース
機密性 = 0
公式 = db.db_status;
アクション = Disabled
しきい値または状態のチェック = Enabled
標識名 = db.sort_shrmem_util
タイプ = しきい値ベース
警告 = 70
アラーム = 85
機密性 = 0
公式 = ((db.sort_shrheap_allocated/sheapthres_shr)*100);
アクション = Disabled
しきい値または状態のチェック = Enabled
(以下略)
「しきい値または状態のチェック」のパラメータを確認し、必要な監視項目がDisabledになっている場合は、以下のコマンドで変更します。
$ db2 update alert config for dbm using db2.db2_op_status set THRESHOLDSCHECKED yes DB20000I UPDATE ALERT CONFIGURATION コマンドが正常に終了しました。 $ db2 update alert config for db on sample using db.db_op_status set THRESHOLDSCHECKED yes DB20000I UPDATE ALERT CONFIGURATION コマンドが正常に終了しました。
ほかの監視項目についても、必要に応じてしきい値を変更します。詳しい方法はDB2のオンライン・マニュアル「UPDATE ALERT CONFIGURATION コマンド」を参照してください。
http://www.db2.jp/db2manual/ja_JP/index.htm?openup=core/r0008746.htm
ここまでの作業が終わったら、データベース・マネージャー構成パラメータhealth_monをオンにして、監視を開始します。
$ db2 update dbm cfg using health_mon on DB20000I UPDATE DATABASE MANAGER CONFIGURATION コマンドが正常に終了しました。
監視を開始したら、コマンドラインで監視情報を表示してみましょう。
$ db2 get health snapshot for all on sample
データベースのヘルス・スナップショット
スナップショット・タイム・スタンプ = 03/25/2004 02:36:47.129407
データベース名 = SAMPLE
データベース・パス = /home/db2inst1/db2inst1/NODE0000/SQL00004/
入力データベース別名 = SAMPLE
データベース・サーバで実行中のオペレーティング
・システム = LINUX
データベースのロケーション = ローカル
データベースの最重大アラート状態 = 不明
ヘルス・インディケーター:
未評価
表スペースのヘルス・スナップショット
スナップショット・タイム・スタンプ = 03/25/2004 02:36:47.129407
データベース名 = SAMPLE
データベース・パス = /home/db2inst1/db2inst1/NODE0000/SQL00004/
入力データベース別名 = SAMPLE
アクセスされた表スペース数 = 0
ヘルス・インディケーター:
未評価
DB2には、異常への対応方法をガイドする機能があります。これにより、迅速な対応が可能です。
異常が起こった場合は、get recommendationsコマンドでDB2が推奨する対応方法を確認します。以下はその一例です。
$ db2 get recommendations for health indicator db.db_op_status
RECOMMENDATIONS FOR db.db_op_status
データベースを静止解除
管理者による明示的な要求により、データベースが静止ペンディング状態になりました。
QUIESCE_CONNECT 権限があるか、または DBADM または SYSADM ユーザーである場合は、データベースへのアクセス権はまだあり、正常に使用することができます。 そのほかのユーザーの場合は、データベースへの新規接続は許可されず、新規作業単位を開始することはできません。 また、静止要求によっては、アクティブな作業単位を即時に完了またはロールバックすることができます。 アクティブ状態に戻すために静止解除を発行することができます。
コントロールセンターから次のステップで操作します:
1. 「データベース」フォルダーが表示されるまで
オブジェクト・ツリーを展開し、次に希望のデータベースが
表示されるまでフォルダーを展開します。
2. データベースを右クリックして、ポップアップ・メニューで「静止解除」を
クリックします。
コマンド行プロセッサーから、次に示されている例のように入力します :
CONNECT TO database-alias db
UNQUIESCE DATABASE
データベースを静止解除
管理者による明示的な要求により、データベースが静止状態になりました。 データベースへの新規接続は許可されず、新規作業単位を開始することはできません。 アクティブ状態に戻すために静止解除を発行してください。
コントロールセンターから次のステップで操作します:
1. 「データベース」フォルダーが表示されるまで
オブジェクト・ツリーを展開し、次に希望のデータベースが
表示されるまでフォルダーを展開します。
2. データベースを右クリックして、ポップアップ・メニューで「静止解除」を
クリックします。
コマンド行プロセッサーから、次に示されている例のように入力します :
CONNECT TO database-alias db
UNQUIESCE DATABASE
Copyright © ITmedia, Inc. All Rights Reserved.