Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの保守 » スケジュールとイベントの使用によるタスクの自動化

 

システム・イベントの概要

SQL Anywhere は、いくつかのシステム・イベントを追跡します。各システム・イベントが提供するフックに一連のアクションをハングすることができます。データベース・サーバはイベントを追跡し、システム・イベントが定義された「トリガ条件」を満たしたときに (イベント・ハンドラに定義された) アクションを実行します。

トリガ条件の詳細については、イベントのトリガ条件の定義を参照してください。

イベント・ハンドラを定義して、選択したシステム・イベントが発生し、定義したトリガ条件を満たしたときに実行されるようにします。このようにしておくことで、データのセキュリティが向上し、管理が容易になります。イベント・ハンドラの動作は、実行中にエラーが検出されなければコミットされ、エラーが検出された場合はロールバックされます。

使用可能なシステム・イベントは次のとおりです。

  • BackupEnd   BackupEnd イベント・タイプを使用すると、バックアップ終了時にアクションを実行できます。

  • 接続イベント   接続が確立されたとき (Connect) または接続できなかったとき (ConnectFailed)。これらのイベントはセキュリティの目的で使用できます。イベント・ハンドラに接続する代わりに、ログイン・プロシージャを使用することもできます。login_procedure オプション [データベース]を参照してください。

  • DatabaseStart   DatabaseStart イベント・タイプを使用すると、データベース起動時にアクションを実行できます。

  • Deadlock   Deadlock イベントを使用すると、デッドロック発生時にアクションを実行できます。イベント・ハンドラでは、sa_report_deadlocks プロシージャを使用して、デッドロックが発生するに至った状況に関する情報を取得できます。Deadlock イベントを使用するときは、データベース・サーバがデッドロック情報を取得するように設定する必要があります。これを行うには、log_deadlocks オプションを On にし、sa_server_option または -zl サーバ・オプションを使用して RememberLastStatement 機能を有効にします。

    Deadlock イベントは、接続デッドロックとスレッド・デッドロックの発生時に起動します。デッドロック・イベントは、sa_report_deadlocks システム・プロシージャによって取得できるもの以上の情報は提供しません。しかし、このイベントを使用すると、デッドロックにすぐに対処できます。データベース・サーバに保持されるデッドロック関連の情報は量が限られているため、迅速な対応が重要なこともあります。次の項を参照してください。

  • Disconnect   Disconnect イベントを使用すると、ユーザまたはアプリケーションの切断時にアクションを実行できます。

  • ディスクの空き領域   データベース・ファイル (DBDiskSpace)、ログ・ファイル (LogDiskSpace)、テンポラリ・ファイル (TempDiskSpace) を格納しているデバイスの使用可能なディスク領域を追跡します。このシステム・イベントは、Windows Mobile では使用できません。

    ディスク領域イベントを使用すると、ディスク領域が不足したときに管理者に警告することができます。

    データベース・サーバの起動時に -fc オプションを指定して、データベース・サーバでファイル・システムがいっぱいになった場合のコールバック関数を実装できます。-fc サーバ・オプションを参照してください。

  • ファイル・サイズ   ファイルが指定したサイズに達したとき。これはデータベース・ファイル (GrowDB)、トランザクション・ログ (GrowLog)、テンポラリ・ファイル (GrowTemp) に使用できます。

    ファイル・サイズ・イベントを使用すると、データベース上での異常なアクションを追跡したり、バルク・オペレーションをモニタすることができます。

  • GlobalAutoIncrement   GLOBAL AUTOINCREMENT で定義されたカラムの残りの値がこの範囲の 1 % を下回ると、GlobalAutoIncrement イベントが起動します。これは、このイベント用のパラメータとして指定された残りの値のテーブルと数字に基づいて、global_database_id オプション用の新しい値を要求するのに使用できます。このイベントにおけるテーブルの残りの値を取得するには、EVENT_PARAMETER 関数を使用し、RemainingValues パラメータと TableName パラメータを指定します。RemainingValues は、そのカラム用に生成できる残りの値の数を返します。TableName は、範囲の終わりに近づいている GLOBAL AUTOINCREMENT カラムがあるテーブルを返します。EVENT_PARAMETER 関数 [システム]を参照してください。

  • RAISERROR エラー   RAISERROR イベント・タイプを使用すると、RAISERROR 文が実行されたときにアクションを実行できます。RAISERROR 文で使用するエラー番号は、EVENT_CONDITION 関数 (たとえば、EVENT_CONDITION( 'ErrorNumber' )) を使用してイベント・ハンドラ内に定義できます。

  • アイドル時間   データベース・サーバが指定した時間アイドル状態にあったとき (ServerIdle)。このイベント・タイプを使用すると、定型の管理操作をアクセスの少ない時間に行えます。

  • データベースのミラーリング   プライマリ・サーバからミラー・サーバまたは監視サーバへの接続が失われると、MirrorServerDisconnect イベントが起動します。接続が失われたサーバの名前を取得するには、EVENT_PARAMETER 関数を使用し、MirrorServerName パラメータを指定します。EVENT_PARAMETER 関数 [システム]を参照してください。サーバがデータベースの所有権を取得すると、MirrorFailover イベントが起動します。たとえば、サーバが最初に起動し、データベースを所有する必要があると判断すると、このイベントが起動します。また、直前までミラーとして動作していたサーバが、プライマリ・サーバが終了したことを特定し、監視サーバの状況を確認したうえで所有権を取得する必要があると判断するときも、このイベントが起動します。

    イベントは、現在ミラー・サーバとして動作しているサーバ上では起動しません。これは、データベースのコピーが依然として起動されている状態であるからです。同様に、ミラーリング・イベントを監視サーバ上で実行するように定義することはできません。ミラーリング・イベントは定義されているデータベースのコンテキスト上でのみ実行され、監視サーバはミラーされているデータベースのコピーを使用しないからです。データベース・ミラーリングにおけるシステム・イベントを参照してください。


イベントのトリガ条件の定義