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

SQL Anywhere 12.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 dbeng12/dbsrv12 サーバーオプションを参照してください。

  • ファイルサイズ   ファイルが指定したサイズに達したとき。これはデータベースファイル (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 イベントが起動します。たとえば、初めてサーバーが起動され、データベースを所有する必要があると判断した場合に起動します。また、前回ミラーとして動作していたサーバーが、プライマリサーバーがダウンしており、監視サーバーに確認した結果、所有権を取得する必要があると判断した場合にも起動します。

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


イベントのトリガー条件