ヘッダーをスキップ
Oracle® TimesTen Application-Tier Database Cache概要
11gリリース2 (11.2.2)
B66721-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 イベント通知

TimesTenおよびTimesTen Cacheのイベント通知は、データベースに対する変更を検出する関数を提供する、トランザクション・ログAPI(XLA)を介して行われます。XLAはログ・レコードを監視します。ログ・レコードは、表内の行における挿入、更新または削除を記述します。XLAをマテリアライズド・ビューと併用して、複数の表にまたがって特定の行に行われた変更に通知の範囲を絞り込むことができます。

また、TimesTenおよびTimesTen CacheではSNMPトラップを使用して、イベントに関する非同期の警告を送信できます。

この章の内容は次のとおりです。

トランザクション・ログAPIによるトランザクション変更の検出

TimesTenおよびTimesTen Cacheが提供するトランザクション・ログAPI(XLA)によって、アプリケーションではローカル・データベースのトランザクション・ログを監視し、他のアプリケーションで実行された変更を検出できます。また、XLAが提供する関数によって、XLAアプリケーションでは、検出した変更を別のデータベースに適用できます。XLAはC言語のAPIです。TimesTenおよびTimesTen Cacheでは、個別のJavaラッパー・インタフェースと、TTClassesの一部としてXLAのC++ラッパー・インタフェースが提供されます。

アプリケーションではXLAを使用して、変更通知スキームを実装します。このスキームでは、XLAアプリケーションがデータベースに変更がないかどうかを監視し、変更に基づいて対処できます。たとえば、株式取引環境におけるTimesTenデータベースは、株価のデータ・ストリームによって絶えず更新されます。自動取引アプリケーションではXLAを使用して、特定の株価の更新についてデータベースを監視し、その情報に基づいて発注するかどうかを判断します。詳細は、「リアルタイム取引価格サービス・アプリケーション」を参照してください。

また、XLAを使用してカスタム・データ・レプリケーション・ソリューションを構築し、TimesTenレプリケーションのかわりに使用することもできます。このようなXLA対応のレプリケーション・ソリューションには、TimesTen以外のデータベースによるレプリケーションや、別のTimesTenデータベースへの更新の転送が含まれます。

XLAの動作

XLAは、トランザクションの更新レコードをトランザクション・ログ・バッファから直接取得します。レコードがバッファ内に存在しない場合、XLAは図7-1に示すように、ディスク上のトランザクション・ログ・ファイルから更新レコードを取得します。トランザクション・ログ・ファイルが使用可能であるかぎり、レコードは使用可能です。読取りアクセスは、ブックマークを使用して、ログ更新ストリームにおける位置を保持します。ブックマークはデータベースに保存されるため、データベースの接続、停止および障害が発生しても永続的に維持されます。

図7-1 XLAの動作

図7-1の説明が続きます。
図7-1「XLAの動作」の説明

ログ更新レコード

更新レコードを作成したトランザクションをコミットすると、その更新レコードをただちにログから読み取れます。ログ・スニファ・アプリケーションでは、ログに書き込まれた更新レコードのグループを取得できます。

返される各レコードには、固定長の更新ヘッダーと、内部書式に従って保存された1行または2行のデータが含まれます。更新ヘッダーには、次のものが記述されます。

  • 更新行が適用される表

  • そのレコードがトランザクションの最初のコミット・レコードかまたは最後のコミット・レコードか

  • レコードが表すトランザクション・タイプ

  • 返される行データの長さ

  • 更新された列

マテリアライズド・ビューとXLAによる表の監視

多くのデータベース・システムでは簡素化と、複数の表を含むSELECT問合せのパフォーマンス向上のために、マテリアライズド・ビューが使用されます。TimesTenおよびTimesTen Cacheのマテリアライズド・ビューもこの同じ機能を備えていますが、TimesTenおよびTimesTen Cacheにおけるこの機能のその他の目的は、XLAと連携して、複数の表の特定の行と列を追跡することです。

マテリアライズド・ビューが存在する場合、XLAは重要な更新レコードを、1つのマテリアライズド・ビューのみで監視できます。マテリアライズド・ビューが存在しない場合は、XLAアプリケーションで、すべてのディテール表の更新レコード(アプリケーションにとって重要ではない行および列への更新が反映されているレコードを含む)に対して監視を行う必要があります。

図7-2は、マテリアライズド・ビューの結果セットを構成するディテール表の列に対して行われる更新を示しています。マテリアライズド・ビューに対する更新を監視するXLAアプリケーションは、更新されたレコードを取得します。マテリアライズド・ビューの結果セットの一部でない、同じディテール表のその他の列や行に対する更新はXLAアプリケーションでは透過的です。

図7-2 XLAによる、マテリアライズド・ビュー表の更新の検出

図7-2の説明が続きます。
図7-2「XLAによる、マテリアライズド・ビュー表の更新の検出」の説明

XLAとマテリアライズド・ビューを使用して特定の株式への更新を検出する取引アプリケーションの例については、「リアルタイム取引価格サービス・アプリケーション」を参照してください。

TimesTenおよびTimesTen Cacheに実装されているマテリアライズド・ビューでは、複数の表にわたる更新の検出においてパフォーマンスおよび機能が強化されています。TimesTenおよびIMDB Cache以外のマテリアライズド・ビューに精通しているユーザーは、次のメリットとデメリットに注意してください。

  • アプリケーションは、明示的にマテリアライズド・ビューを作成する必要があります。TimesTen問合せオプティマイザには、マテリアライズド・ビューを自動的に作成する機能はありません。

  • 問合せオプティマイザが、ディテール表に対する問合せを再書込みしてマテリアライズド・ビューを参照することはありません。アプリケーションの問合せでビューを直接参照する必要があります。

  • マテリアライズド・ビューの作成に使用するSQLには一定の制限があります。

マテリアライズド・ビューを作成する場合、アプリケーションでは、ビューのメンテナンスを即時メンテナンスまたは遅延メンテナンスのいずれにするかを指定する必要があります。即時メンテナンスでは、ビューのディテール表に変更が加えられるとただちにビューがリフレッシュされます。遅延メンテナンスでは、ディテール表を更新したトランザクションがコミットされて初めてビューがリフレッシュされます。遅延メンテナンスが指定されているビューは、非同期マテリアライズド・ビューと呼ばれます。リフレッシュは自動で行うことも、アプリケーションから開始することもできます。また、リフレッシュには、増分リフレッシュと完全リフレッシュがあります。アプリケーションでは、自動リフレッシュの頻度を指定する必要があります。非同期マテリアライズド・ビューのXLA通知の順序が、関連付けられたディテール表に対するトランザクションの順序と必ずしも同じではないことに注意してください。

SNMPトラップによる問題の監視

Simple Network Management Protocol(SNMP)は、ネットワーク管理サービスのためのプロトコルです。通常、ネットワーク管理ソフトウェアではSNMPを使用して、ネットワーク・デバイス(ルーターやスイッチなど)の状態の問合せや制御を行います。また、これらのデバイスはUDP/IPパケットの形式で、SNMPトラップと呼ばれる非同期の警告を生成して、管理システムに問題を通知する場合もあります。

TimesTenおよびTimesTen CacheではSNMPを介して問合せや制御を行うことはできません。ただし、TimesTenおよびTimesTen Cacheでは、ユーザーのリカバリ・メカニズムを簡素化するために、特定の重大なイベントに対してSNMPトラップを送信します。TimesTenでは次のイベントに対してトラップを送信します。

  • TimesTen Cacheの自動リフレッシュ障害

  • データベースの領域不足

  • レプリケート済トランザクションの障害

  • デーモンの異常停止

  • データベースの無効化

  • アサーション障害

こうしたイベントが発生すると、TimesTenデーモンによってログ・エントリも書き込まれますが、SNMPトラップを介してこれらのイベントを明らかにすることにより、適切に構成されたネットワーク管理ソフトウェアでただちに対処することができます。

詳細情報

XLAの詳細は、『Oracle TimesTen In-Memory Database C 開発者ガイド』のXLAおよびTimesTenイベント管理に関する説明と、『Oracle TimesTen In-Memory Database Java開発者ガイド』のJMS/XLAを使用したイベント管理に関する説明を参照してください。

TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。

マテリアライズド・ビューの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のマテリアライズド・ビューの理解に関する説明を参照してください。『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』CREATE MATERIALIZED VIEW文も参照してください。

SNMPトラップの詳細は、Oracle TimesTen In-Memory Databaseのエラー・メッセージおよびSNMPトラップのSNMPトラップを使用した診断に関する説明を参照してください。