33 SDO_TRKRパッケージ(位置追跡)
MDSYS.SDO_TRKRパッケージには、位置追跡サーバーを使用するためのサブプログラムが含まれています。
これらのサブプログラムを使用するには、「位置追跡サーバー」に記載の概念と技術について理解する必要があります。
- SDO_TRKR.CREATE_TRACKING_SET
- SDO_TRKR.DROP_TRACKING_SET
- SDO_TRKR.GET_NOTIFICATION_MSG
- SDO_TRKR.SEND_LOCATION_MSGS
- SDO_TRKR.SEND_TRACKING_MSG
- SDO_TRKR.START_TRACKING_SET
- SDO_TRKR.STOP_TRACKING_SET
親トピック: リファレンス情報
33.1 SDO_TRKR.CREATE_TRACKING_SET
構文
SDO_TRKR.CREATE_TRACKING_SET( tracking_set_name IN VARCHAR2, num_trkr_queues IN NUMBER(38) DEFAULT 4, num_loc_queues IN NUMBER(38) DEFAULT 1);
説明
位置追跡サーバーに必要な追跡セット、具体的には表およびキューを作成します。
パラメータ
- tracking_set_name
-
追跡セットの名前。
- num_trkr_queues
-
追跡メッセージを管理するために作成するキューの数。このパラメータに対するデフォルト値は4です。追跡地域表内の地域数が多い場合、トラッカ・キューを多くするとパフォーマンスが向上することがあります。作成されたトラッカ・キューごとにスケジューラ・ジョブも作成されるため、トラッカ・キューの数はシステム・リソースとバランスをとる必要もあります。
- num_loc_queues
-
位置メッセージを管理するために作成するキューの数。このパラメータのデフォルト値は1です。追跡されるオブジェクト数が多い場合、位置キューを多くするとパフォーマンスが向上することがあります。作成された位置キューごとにスケジューラ・ジョブも作成されるため、位置キューの数はシステム・リソースとバランスをとる必要もあります。
使用上のノート
このプロシージャでは、位置追跡サーバーに必要な表およびキューを作成します。これは、位置追跡サーバーを有効にするために必要な最初のステップです。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、8個の追跡キューと8個の位置キューを持つTRACKING_EXAMPLEという名前の追跡ネットワークを作成します。
EXECUTE SDO_TRKR.CREATE_TRACKING_SET('TRACKING_EXAMPLE', 8, 8);
親トピック: SDO_TRKRパッケージ(位置追跡)
33.2 SDO_TRKR.DROP_TRACKING_SET
構文
SDO_TRKR.DROP_TRACKING_SET( tracking_set_name IN VARCHAR2);
説明
追跡セットを削除します。これは、位置追跡サーバーに必要な表、キューおよびジョブを削除します。
使用上のノート
このプロシージャは、以前にSDO_TRKR.CREATE_TRACKING_SETプロシージャをコールして作成した追跡セットを削除します。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、以前に作成した追跡セットを削除します。
EXECUTE SDO_TRKR.DROP_TRACKING_SET('TRACKING_EXAMPLE');
親トピック: SDO_TRKRパッケージ(位置追跡)
33.3 SDO_TRKR.GET_NOTIFICATION_MSG
構文
SDO_TRKR.GET_NOTIFICATION_MSG( tracking_set_name IN VARCHAR2, deq_wait IN NUMBER(38) DEFAULT DBMS_AQ.NO_WAIT, message OUT NOTIFICATION_MSG);
説明
追跡セット通知キューから次の通知メッセージを取得します。
パラメータ
使用上のノート
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、通知メッセージを追跡セットの通知キューから取得し、メッセージの内容を追跡セットの補助通知表に挿入します。メッセージの着信がないまま30秒間待機するまで、通知メッセージは取得され続けます。
... LOOP SDO_TRKR.GET_NOTIFICATION_MSG( tracking_set_name => 'TRACKING_EXAMPLE', message => message, deq_wait =>30); IF (message IS NULL) THEN EXIT; END IF; INSERT INTO tracking_example_notifications (object_id, region_id, time, x, y, state) (SELECT message.object_id, message.region_id, message.time, message.x, message.y, message.state FROM sys.dual); END LOOP; ...
親トピック: SDO_TRKRパッケージ(位置追跡)
33.4 SDO_TRKR.SEND_LOCATION_MSGS
構文
SDO_TRKR.SEND_LOCATION_MSGS( tracking_set_name IN VARCHAR2, location_msgs IN LOCATION_MSG_ARR );
説明
追跡セット内で追跡されているオブジェクトの新しい位置情報の配列を送信します。
パラメータ
使用上のノート
このプロシージャは、追跡目的で新しい位置メッセージを追加します。追跡対象のオブジェクトの新しい位置が取得されたら、このプロシージャを使用してそのオブジェクトの位置を更新できます。
location_msgs
パラメータはLOCATION_MSG_ARR型で、「位置追跡サーバー用のデータ型」に定義があります。
各メッセージにはタイムスタンプ値が含まれ、これは更新時間であり、位置情報とともに保持されます。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、新しい位置メッセージを追加します。メッセージには、オブジェクトID (1)、現在の時間、オブジェクトの新しい場所のX座標とY座標(2, 2)が含まれます。
EXECUTE SDO_TRKR.SEND_LOCATION_MSGS('TRACKING_EXAMPLE', LOCATION_MSG_ARR(location_msg(1, CURRENT_TIMESTAMP(), 2,2)));
親トピック: SDO_TRKRパッケージ(位置追跡)
33.5 SDO_TRKR.SEND_TRACKING_MSG
構文
SDO_TRKR.SEND_TRACKING_MSG( tracking_set_name IN VARCHAR2, tracking_msg IN TRACKER_MSG );
説明
追跡メッセージを追跡キューに挿入します。追跡対象のオブジェクトごとに1つのTRACKER_MSGが必要です。オブジェクト1が地域1、2、および3で追跡されている場合、オブジェクトID/地域IDペアごとに1つずつ、3つのTRACKER_MSGが必要です。
パラメータ
使用上のノート
このプロシージャでは、どのオブジェクトをどの地域内で追跡するかを位置追跡サーバーに指示するトラッカ表に新しい行を作成します。
tracking_ms
パラメータはTRACKER_MSG型で、「位置追跡サーバー用のデータ型」に定義があります。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、IDが8の地域について追跡されるIDが4の新しい追跡オブジェクトをTRACKING_EXAMPLEという名前の追跡セットに挿入します。通知メッセージは、オブジェクトが地域内(I
)にあるときに送信されます。O
が指定されている場合、通知はオブジェクトが地域外にあるときに送信され、T
が指定されている場合、通知はオブジェクトが地域内または地域外に遷移したときにのみ送信されます。
EXECUTE SDO_TRKR.SEND_TRACKING_MSG('TRACKING_EXAMPLE', TRACKER_MSG(4, 8, 'I'));
親トピック: SDO_TRKRパッケージ(位置追跡)
33.6 SDO_TRKR.START_TRACKING_SET
構文
SDO_TRKR.START_TRACKING_SET( tracking_set_name IN VARCHAR2);
説明
位置追跡サーバー用のキューを起動し、それらのキューをモニターするジョブを起動します。
使用上のノート
このプロシージャは、SDO_TRKR.CREATE_TRACKING_SETプロシージャをコールして以前に作成した追跡セットを起動します。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、以前に作成した追跡セットを起動します。
EXECUTE SDO_TRKR.START_TRACKING_SET('TRACKING_EXAMPLE');
親トピック: SDO_TRKRパッケージ(位置追跡)
33.7 SDO_TRKR.STOP_TRACKING_SET
構文
SDO_TRKR.STOP_TRACKING_REGIONS( tracking_set_name IN VARCHAR2 );
説明
位置追跡サーバー用のキューを停止し、それらのキューをモニターするジョブを停止します。
使用上のノート
このプロシージャは、SDO_TRKR.START_TRACKING_SETプロシージャをコールして以前に起動した追跡ネットワークを停止します。
位置追跡サーバーの概念および使用方法については、「位置追跡サーバー」を参照してください。
例
次の例では、以前に起動した追跡セットを停止します。
EXECUTE SDO_TRKR.STOP_TRACKING_REGIONS('TRACKING_EXAMPLE');
親トピック: SDO_TRKRパッケージ(位置追跡)