次の各項では、Oracle Streamsのキューと伝播の監視について説明します。
注意: Oracle Streams環境の監視には、Oracle Enterprise ManagerコンソールのOracle Streamsツールを使用する方法も適しています。詳細は、Oracle Database 2日でデータ・レプリケーションおよび統合ガイドおよびOracle Streamsツールのオンライン・ヘルプを参照してください。 |
関連項目:
|
次の各項では、キューとメッセージの情報の表示について説明します。
データベース内のすべてのANYDATA
キューを表示するには、次の問合せを実行します。
COLUMN OWNER HEADING 'Owner' FORMAT A10 COLUMN NAME HEADING 'Queue Name' FORMAT A28 COLUMN QUEUE_TABLE HEADING 'Queue Table' FORMAT A22 COLUMN USER_COMMENT HEADING 'Comment' FORMAT A15 SELECT q.OWNER, q.NAME, t.QUEUE_TABLE, q.USER_COMMENT FROM DBA_QUEUES q, DBA_QUEUE_TABLES t WHERE t.OBJECT_TYPE = 'SYS.ANYDATA' AND q.QUEUE_TABLE = t.QUEUE_TABLE AND q.OWNER = t.OWNER;
出力は次のようになります。
Owner Queue Name Queue Table Comment ---------- ---------------------------- ---------------------- --------------- SYS AQ$_SCHEDULER$_JOBQTAB_E SCHEDULER$_JOBQTAB exception queue SYS SCHEDULER$_JOBQ SCHEDULER$_JOBQTAB Scheduler job q ueue SYS AQ$_DIR$EVENT_TABLE_E DIR$EVENT_TABLE exception queue SYS DIR$EVENT_QUEUE DIR$EVENT_TABLE SYS AQ$_DIR$CLUSTER_DIR_TABLE_E DIR$CLUSTER_DIR_TABLE exception queue SYS DIR$CLUSTER_DIR_QUEUE DIR$CLUSTER_DIR_TABLE STRMADMIN AQ$_STREAMS_QUEUE_TABLE_E STREAMS_QUEUE_TABLE exception queue STRMADMIN STREAMS_QUEUE STREAMS_QUEUE_TABLE
例外キューは、ANYDATA
キューを作成すると自動的に作成されます。
DBA_STREAMS_MESSAGE_CONSUMERS
データ・ディクショナリ・ビューを問い合せると、データベース内のメッセージ・クライアントを表示できます。この項で説明する問合せを実行すると、各メッセージ・クライアントに関する次の情報が表示されます。
メッセージ・クライアントの名前
メッセージ・クライアントで使用されるキュー
メッセージ・クライアントで使用されるポジティブ・ルール・セット
メッセージ・クライアントで使用されるネガティブ・ルール・セット
次の問合せを実行すると、メッセージ・クライアントに関する前述の情報が表示されます。
COLUMN STREAMS_NAME HEADING 'Messaging|Client' FORMAT A25 COLUMN QUEUE_OWNER HEADING 'Queue|Owner' FORMAT A10 COLUMN QUEUE_NAME HEADING 'Queue Name' FORMAT A18 COLUMN RULE_SET_NAME HEADING 'Positive|Rule Set' FORMAT A11 COLUMN NEGATIVE_RULE_SET_NAME HEADING 'Negative|Rule Set' FORMAT A11 SELECT STREAMS_NAME, QUEUE_OWNER, QUEUE_NAME, RULE_SET_NAME, NEGATIVE_RULE_SET_NAME FROM DBA_STREAMS_MESSAGE_CONSUMERS;
出力は次のようになります。
Messaging Queue Positive Negative Client Owner Queue Name Rule Set Rule Set ------------------------- ---------- ------------------ ----------- ----------- SCHEDULER_PICKUP SYS SCHEDULER$_JOBQ RULESET$_8 SCHEDULER_COORDINATOR SYS SCHEDULER$_JOBQ RULESET$_4 HR STRMADMIN STREAMS_QUEUE RULESET$_15
メッセージ・クライアントによってデキュー可能なメッセージがキューにエンキューされる際に、通知が送信されるようにメッセージ通知を構成することができます。通知は、電子メール・アドレス、HTTP URLまたはPL/SQLプロシージャに送信できます。次の問合せを実行すると、データベース内で構成されたメッセージ通知が表示されます。
COLUMN STREAMS_NAME HEADING 'Messaging|Client' FORMAT A10 COLUMN QUEUE_OWNER HEADING 'Queue|Owner' FORMAT A5 COLUMN QUEUE_NAME HEADING 'Queue Name' FORMAT A20 COLUMN NOTIFICATION_TYPE HEADING 'Notification|Type' FORMAT A15 COLUMN NOTIFICATION_ACTION HEADING 'Notification|Action' FORMAT A25 SELECT STREAMS_NAME, QUEUE_OWNER, QUEUE_NAME, NOTIFICATION_TYPE, NOTIFICATION_ACTION FROM DBA_STREAMS_MESSAGE_CONSUMERS WHERE NOTIFICATION_TYPE IS NOT NULL;
出力は次のようになります。
Messaging Queue Notification Notification Client Owner Queue Name Type Action ---------- ----- -------------------- --------------- ------------------------- OE OE NOTIFICATION_QUEUE MAIL mary.smith@example.com
永続キュー内の各メッセージのコンシューマを決定するには、キュー所有者のスキーマ内でAQ$
queue_table_name
を問い合せます。この場合、queue_table_name
はキュー表名です。たとえば、oe_q_table_any
キュー表内のメッセージのコンシューマを検索するには、次の問合せを実行します。
COLUMN MSG_ID HEADING 'Message ID' FORMAT 9999 COLUMN MSG_STATE HEADING 'Message State' FORMAT A13 COLUMN CONSUMER_NAME HEADING 'Consumer' FORMAT A30 SELECT MSG_ID, MSG_STATE, CONSUMER_NAME FROM AQ$OE_Q_TABLE_ANY;
出力は次のようになります。
Message ID Message State Consumer -------------------------------- ------------- ------------------------------ B79AC412AE6E08CAE034080020AE3E0A PROCESSED OE B79AC412AE6F08CAE034080020AE3E0A PROCESSED OE B79AC412AE7008CAE034080020AE3E0A PROCESSED OE
関連項目: メッセージをANYDATA キューにエンキューする例については、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド を参照。 |
ANYDATA
キュー内で、ANYDATA
ペイロード内にカプセル化されているペイロードの内容を表示するには、ANYDATA
型のAccess
data_type
統計ファンクションを使用してキュー表を問い合せます。この場合、data_type
は表示するペイロードの型です。
関連項目: この項の問合せで表示されるメッセージをANYDATA キューにエンキューする例については、「ANYDATAラッパーでのユーザー・メッセージ・ペイロードのラップおよびそれらのエンキュー」を参照 |
たとえば、キュー表oe_queue_table
を持つキューにあるNUMBER
型のペイロードの内容を表示するには、キュー所有者として次の問合せを実行します。
SELECT qt.user_data.AccessNumber() "Numbers in Queue" FROM strmadmin.oe_q_table_any qt;
出力は次のようになります。
Numbers in Queue ---------------- 16
同様に、キュー表oe_q_table_any
を持つキューにあるVARCHAR2
型のペイロードの内容を表示するには、次の問合せを実行します。
SELECT qt.user_data.AccessVarchar2() "Varchar2s in Queue" FROM strmadmin.oe_q_table_any qt;
出力は次のようになります。
Varchar2s in Queue -------------------------------------------------------------------------------- Chemicals - SW
ユーザー定義のデータ型の内容を表示するには、作成したカスタム・ファンクションを使用してキュー表を問い合せます。たとえば、oe.cust_address_typ
のペイロードの内容を表示するには、次のようなファンクションを作成します。
CREATE OR REPLACE FUNCTION oe.view_cust_address_typ( in_any IN ANYDATA) RETURN oe.cust_address_typ IS address oe.cust_address_typ; num_var NUMBER; BEGIN IF (in_any.GetTypeName() = 'OE.CUST_ADDRESS_TYP') THEN num_var := in_any.GetObject(address); RETURN address; ELSE RETURN NULL; END IF; END; / GRANT EXECUTE ON oe.view_cust_address_typ TO strmadmin; GRANT EXECUTE ON oe.cust_address_typ TO strmadmin;
次の例のように、ファンクションを使用してキュー表を問い合せます。
SELECT oe.view_cust_address_typ(qt.user_data) "Customer Addresses" FROM strmadmin.oe_q_table_any qt WHERE qt.user_data.GetTypeName() = 'OE.CUST_ADDRESS_TYP';
出力は次のようになります。
Customer Addresses(STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID -------------------------------------------------------------------------------- CUST_ADDRESS_TYP('1646 Brazil Blvd', '361168', 'Chennai', 'Tam', 'IN')
バッファ・キューには、次の記憶域が含まれます。
バッファ・キューはOracle Streamsプールに格納されます。Oracle Streamsプールは、Oracle Streamsによって使用されるSGAのメモリーの一部です。Oracle Streams環境では、取得プロセスによって取得されたLCRは、常にANYDATA
キューのバッファ・キューに格納されます。また、ユーザーおよびアプリケーションは、バッファ・キューにメッセージをエンキューできます。これらのバッファ・キューは、ANYDATA
キューまたは型付きキューの一部です。
バッファ・キューを使用すると、Oracle Databaseでは、メッセージを常にキュー表に格納するのではなく、SGAに格納することによって、メッセージを最適化できます。取得LCRは常にバッファ・キューに格納されますが、他のタイプのメッセージは、バッファ・キューに格納するか、またはキュー表に永続的に格納できます。バッファ・キュー内のメッセージは、一定期間デキューされずにバッファ・キュー内でステージングされた場合や、メモリーにすべてのメッセージを保持するための十分な領域がない場合に、メモリーからオーバーフローします。メモリーからオーバーフローしたメッセージは、適切なキュー表に格納されます。
次の項では、バッファ・キューを監視する問合せについて説明します。
V$BUFFERED_QUEUES
動的パフォーマンス・ビューには、バッファ・キュー内のメッセージ数に関する情報が含まれます。メッセージは、取得LCR、バッファLCRまたはバッファ・ユーザー・メッセージのいずれかです。
この項で説明する問合せを実行すると、データベース内の各バッファ・キューに関する次の情報を特定できます。
キューの所有者
キュー名
現在メモリー内にあるメッセージの数
メモリーからキュー表にオーバーフローしたメッセージの数
バッファ・キュー内のメッセージの合計数(メモリー内のメッセージおよびキュー表にオーバーフローしたメッセージを含む)
これらの情報を表示するには、次の問合せを実行します。
COLUMN QUEUE_SCHEMA HEADING 'Queue Owner' FORMAT A15 COLUMN QUEUE_NAME HEADING 'Queue Name' FORMAT A15 COLUMN MEM_MSG HEADING 'Messages|in Memory' FORMAT 99999999 COLUMN SPILL_MSGS HEADING 'Messages|Spilled' FORMAT 99999999 COLUMN NUM_MSGS HEADING 'Total Messages|in Buffered Queue' FORMAT 99999999 SELECT QUEUE_SCHEMA, QUEUE_NAME, (NUM_MSGS - SPILL_MSGS) MEM_MSG, SPILL_MSGS, NUM_MSGS FROM V$BUFFERED_QUEUES;
出力は次のようになります。
Messages Messages Total Messages Queue Owner Queue Name in Memory Spilled in Buffered Queue --------------- --------------- ------------- ------------- ------------------- STRMADMIN STREAMS_QUEUE 534 21 555
取得プロセスは、取得LCRをバッファ・キューにエンキューするキュー・パブリッシャです。これらのLCRは、それ以後に他のキューに伝播できます。V$BUFFERED_PUBLISHERS
動的パフォーマンス・ビューを問い合せると、バッファ・キュー内のLCRを取得した各取得プロセスを表示できます。これらのLCRはローカル・データベースで取得されているか、またはリモート・データベースで取得され、問合せで指定されたキューに伝播されている場合があります。
この項で説明する問合せでは、ローカル・データベースのバッファ・キューには取得LCRのみが格納され、バッファLCRやバッファ・ユーザー・メッセージは格納されないと想定しています。この問合せを実行すると、各取得プロセスに関する次の情報が表示されます。
バッファ・キューのLCRを取得した取得プロセスの名前
取得プロセスがリモート・データベースで実行されており、取得LCRがローカル・キューに伝播された場合、取得LCRの最新の伝播元であるキューおよびデータベースの名前
取得LCRをステージングするローカル・キューの名前
取得プロセスによって取得されたLCR(データベース・インスタンスが前回起動してからバッファ・キューにステージングされたLCR)の合計数
送信者からバッファ・キューに最後にエンキューされたLCRのメッセージ番号
これらの情報を表示するには、次の問合せを実行します。
COLUMN SENDER_NAME HEADING 'Capture|Process' FORMAT A13 COLUMN SENDER_ADDRESS HEADING 'Sender Queue' FORMAT A27 COLUMN QUEUE_NAME HEADING 'Queue Name' FORMAT A15 COLUMN CNUM_MSGS HEADING 'Number|of LCRs|Enqueued' FORMAT 99999999 COLUMN LAST_ENQUEUED_MSG HEADING 'Last|Enqueued|LCR' FORMAT 99999999 SELECT SENDER_NAME, SENDER_ADDRESS, QUEUE_NAME, CNUM_MSGS, LAST_ENQUEUED_MSG FROM V$BUFFERED_PUBLISHERS;
出力は次のようになります。
Number Last Capture of LCRs Enqueued Process Sender Queue Queue Name Enqueued LCR ------------- --------------------------- --------------- --------- --------- CAPTURE_HR "STRMADMIN"."STREAMS_QUEUE" STREAMS_QUEUE 382 844 @MULT3.EXAMPLE.COM CAPTURE_HR "STRMADMIN"."STREAMS_QUEUE" STREAMS_QUEUE 387 840 @MULT2.EXAMPLE.COM CAPTURE_HR STREAMS_QUEUE 75 833
この出力から次のことがわかります。
リモート・データベースで実行されているcapture_hr
取得プロセスからの382個の
LCRが、mult3.example.com
データベースのstreams_queue
というキューからstreams_queue
というローカル・キューに伝播されました。この送信元から最後にエンキューされたLCRのメッセージ番号は844
でした。
リモート・データベースで実行されているcapture_hr
取得プロセスからの387個の
LCRが、mult2.example.com
データベースのstreams_queue
というキューからstreams_queue
というローカル・キューに伝播されました。この送信元から最後にエンキューされたLCRのメッセージ番号は840
でした。
ローカルのcapture_hr
取得プロセスの75
個のLCRが、streams_queue
というローカル・キューにエンキューされました。この取得プロセスは、Sender
Queue
列がNULL
であるため、ローカルです。この取得プロセスから最後にエンキューされたLCRのメッセージ番号は833
でした。
この項で説明する問合せを実行すると、バッファ・メッセージをローカル・データベースのバッファ・キューから送信する各伝播に関する次の情報が表示されます。
これらの情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A15 COLUMN QUEUE_SCHEMA HEADING 'Queue|Owner' FORMAT A10 COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A15 COLUMN DBLINK HEADING 'Database|Link' FORMAT A10 COLUMN SCHEDULE_STATUS HEADING 'Schedule Status' FORMAT A20 SELECT p.PROPAGATION_NAME, s.QUEUE_SCHEMA, s.QUEUE_NAME, s.DBLINK, s.SCHEDULE_STATUS FROM DBA_PROPAGATION p, V$PROPAGATION_SENDER s WHERE p.SOURCE_QUEUE_OWNER = s.QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = s.QUEUE_NAME AND p.DESTINATION_QUEUE_OWNER = s.DST_QUEUE_SCHEMA AND p.DESTINATION_QUEUE_NAME = s.DST_QUEUE_NAME;
出力は次のようになります。
Queue Queue Database Propagation Owner Name Link Schedule Status --------------- ---------- --------------- ---------- -------------------- MULT1_TO_MULT3 STRMADMIN STREAMS_QUEUE MULT3.EXAM SCHEDULE ENABLED PLE.COM MULT1_TO_MULT2 STRMADMIN STREAMS_QUEUE MULT2.EXAM SCHEDULE ENABLED PLE.COM
V$PROPAGATION_SENDER
ビューのSCHEDULE_STATUS
列で伝播がSCHEDULE
OPTIMIZED
になっている場合は、伝播が取得と適用の複合構成の一部であることを意味します。
この項で説明する問合せを実行すると、ローカル・データベースのバッファ・キューからバッファ・メッセージを送信する各伝播によって送信されたメッセージの数とバイト数が表示されます。
伝播の名前
キュー名
伝播で使用されるデータベース・リンクの名前
データベース・インスタンスが最後に起動されてから送信されたメッセージの合計数
データベース・インスタンスが最後に起動されてから送信されたバイトの合計数
これらの情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A15 COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A15 COLUMN DBLINK HEADING 'Database|Link' FORMAT A20 COLUMN TOTAL_MSGS HEADING 'Total|Messages' FORMAT 99999999 COLUMN TOTAL_BYTES HEADING 'Total|Bytes' FORMAT 999999999999 SELECT p.PROPAGATION_NAME, s.QUEUE_NAME, s.DBLINK, s.TOTAL_MSGS, s.TOTAL_BYTES FROM DBA_PROPAGATION p, V$PROPAGATION_SENDER s WHERE p.SOURCE_QUEUE_OWNER = s.QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = s.QUEUE_NAME AND p.DESTINATION_QUEUE_OWNER = s.DST_QUEUE_SCHEMA AND p.DESTINATION_QUEUE_NAME = s.DST_QUEUE_NAME;
出力は次のようになります。
Queue Database Total Total Propagation Name Link Messages Bytes --------------- --------------- -------------------- --------- --------- MULT1_TO_MULT3 STREAMS_QUEUE MULT3.EXAMPLE.COM 79 71467 MULT1_TO_MULT2 STREAMS_QUEUE MULT2.EXAMPLE.COM 79 71467
この項で説明する問合せを実行すると、バッファ・メッセージを送信する伝播が様々なタスクを実行するためにかかった時間が表示されます。各伝播では、ソース・キューから宛先キューにメッセージが送信されます。この問合せを実行すると、具体的には次の情報が表示されます。
伝播の名前
キュー名
伝播で使用されるデータベース・リンクの名前
データベース・インスタンスが最後に起動されてから、キューからメッセージをデキューするためにかかった時間(秒単位)
データベース・インスタンスが最後に起動されてから、メッセージをピクルするためにかかった時間(秒単位)。ピクルを行うと、メモリー内のメッセージが、ネットワーク経由で送信可能な一連のバイトに変更されます。
データベース・インスタンスが最後に起動されてから、メッセージを伝播するためにかかった時間(秒単位)
これらの情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A15 COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A13 COLUMN DBLINK HEADING 'Database|Link' FORMAT A9 COLUMN ELAPSED_DEQUEUE_TIME HEADING 'Dequeue|Time' FORMAT 99999999.99 COLUMN ELAPSED_PICKLE_TIME HEADING 'Pickle|Time' FORMAT 99999999.99 COLUMN ELAPSED_PROPAGATION_TIME HEADING 'Propagation|Time' FORMAT 99999999.99 SELECT p.PROPAGATION_NAME, s.QUEUE_NAME, s.DBLINK, (s.ELAPSED_DEQUEUE_TIME / 100) ELAPSED_DEQUEUE_TIME, (s.ELAPSED_PICKLE_TIME / 100) ELAPSED_PICKLE_TIME, (s.ELAPSED_PROPAGATION_TIME / 100) ELAPSED_PROPAGATION_TIME FROM DBA_PROPAGATION p, V$PROPAGATION_SENDER s WHERE p.SOURCE_QUEUE_OWNER = s.QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = s.QUEUE_NAME AND p.DESTINATION_QUEUE_OWNER = s.DST_QUEUE_SCHEMA AND p.DESTINATION_QUEUE_NAME = s.DST_QUEUE_NAME;
出力は次のようになります。
Queue Database Dequeue Pickle Propagation Propagation Name Link Time Time Time --------------- ------------- --------- ------------ ------------ ------------ MULT1_TO_MULT2 STREAMS_QUEUE MULT2.EXA 30.65 45.10 10.91 MPLE.COM MULT1_TO_MULT3 STREAMS_QUEUE MULT3.EXA 25.36 37.07 8.35 MPLE.COM
伝播は、メッセージをデキューできるキュー・サブスクライバです。V$BUFFERED_SUBSCRIBERS
動的パフォーマンス・ビューを問い合せると、バッファ・メッセージをデキューできるすべての伝播を表示できます。
また、V$BUFFERED_SUBSCRIBERS
動的パフォーマンス・ビューを使用して、伝播のパフォーマンスを判断することもできます。たとえば、伝播で多くのメッセージがオーバーフローした場合、その伝播はバッファ・キューから十分な速度でメッセージをデキューしていない場合があります。キュー表にメッセージがオーバーフローすると、Oracle Streams環境のパフォーマンスが低下します。
適用プロセスもキュー・サブスクライバです。この問合せはDBA_PROPAGATION
およびV$BUFFERED_QUEUES
ビューと結合され、伝播ののみ情報を出力するように制限し、各伝播の伝播名を表示します。
この項で説明する問合せを実行すると、キューからメッセージをデキューできる各伝播に関する次の情報が表示されます。
伝播の名前
キューに最後にエンキューされたメッセージの順序番号。メッセージの順序番号は、キュー内のメッセージの順序を示します。
伝播によって最後に参照されたキュー内のメッセージの順序番号
伝播によってキューから最後にデキューされたメッセージの順序番号
伝播によるデキューを待機しているキュー内のメッセージの現在の数
データベースが最後に起動されてから、メモリーから伝播のキュー表にオーバーフローしたメッセージの累積数
これらの情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A15 COLUMN SUBSCRIBER_ADDRESS HEADING 'Destination|Database' FORMAT A11 COLUMN CURRENT_ENQ_SEQ HEADING 'Current|Enqueued|Sequence' FORMAT 99999999 COLUMN LAST_BROWSED_SEQ HEADING 'Last|Browsed|Sequence' FORMAT 99999999 COLUMN LAST_DEQUEUED_SEQ HEADING 'Last|Dequeued|Sequence' FORMAT 99999999 COLUMN NUM_MSGS HEADING 'Number of|Messages|in Queue|(Current)' FORMAT 99999999 COLUMN TOTAL_SPILLED_MSG HEADING 'Number of|Spilled|Messages|(Cumulative)' FORMAT 99999999 SELECT p.PROPAGATION_NAME, s.SUBSCRIBER_ADDRESS, s.CURRENT_ENQ_SEQ, s.LAST_BROWSED_SEQ, s.LAST_DEQUEUED_SEQ, s.NUM_MSGS, s.TOTAL_SPILLED_MSG FROM DBA_PROPAGATION p, V$BUFFERED_SUBSCRIBERS s, V$BUFFERED_QUEUES q WHERE q.QUEUE_ID = s.QUEUE_ID AND p.SOURCE_QUEUE_OWNER = q.QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = q.QUEUE_NAME AND s.SUBSCRIBER_ADDRESS LIKE '%' || p.DESTINATION_DBLINK;
出力は次のようになります。
Number of Number of Current Last Last Messages Spilled Destination Enqueued Browsed Dequeued in Queue Messages Propagation Database Sequence Sequence Sequence (Current) (Cumulative) --------------- ----------- --------- --------- --------- --------- ------------ MULT1_TO_MULT2 MULT2.EXAMP 157 144 129 24 0 LE.COM MULT1_TO_MULT3 MULT3.EXAMP 98 88 81 53 0 LE.COM
注意: 同じデータベース・リンクを使用する複数の伝播によって、宛先データベースの異なるキューにメッセージが伝播される場合、この問合せによって返される統計は正確な値ではなく、概算になります。 |
この項で説明する問合せを実行すると、バッファ・メッセージを受信する各伝播が様々なタスクを実行するためにかかった時間が表示されます。各伝播でメッセージが受信され、そのメッセージが伝播の宛先キューにエンキューされます。この問合せを実行すると、具体的には次の情報が表示されます。
メッセージの伝播元となるソース・キューの名前
ソース・データベースの名前
データベース・インスタンスが最後に起動されてから、メッセージをアンピクルするためにかかった時間(秒単位)。アンピクルを行うと、ネットワーク経由で送信可能な一連のバイトが、メモリー内のバッファ・メッセージに変更されます。
データベース・インスタンスが最後に起動されてから、伝播されたメッセージのルールを評価するためにかかった時間(秒単位)
データベース・インスタンスが最後に起動されてから、伝播の宛先キューにメッセージをエンキューするためにかかった時間(秒単位)
これらの情報を表示するには、次の問合せを実行します。
COLUMN SRC_QUEUE_NAME HEADING 'Source|Queue|Name' FORMAT A20 COLUMN SRC_DBNAME HEADING 'Source|Database' FORMAT A20 COLUMN ELAPSED_UNPICKLE_TIME HEADING 'Unpickle|Time' FORMAT 99999999.99 COLUMN ELAPSED_RULE_TIME HEADING 'Rule|Evaluation|Time' FORMAT 99999999.99 COLUMN ELAPSED_ENQUEUE_TIME HEADING 'Enqueue|Time' FORMAT 99999999.99 SELECT SRC_QUEUE_NAME, SRC_DBNAME, (ELAPSED_UNPICKLE_TIME / 100) ELAPSED_UNPICKLE_TIME, (ELAPSED_RULE_TIME / 100) ELAPSED_RULE_TIME, (ELAPSED_ENQUEUE_TIME / 100) ELAPSED_ENQUEUE_TIME FROM V$PROPAGATION_RECEIVER;
出力は次のようになります。
Source Rule Queue Source Unpickle Evaluation Enqueue Name Database Time Time Time -------------------- -------------------- ------------ ------------ ------------ STREAMS_QUEUE MULT2.EXAMPLE.COM 45.65 5.44 45.85 STREAMS_QUEUE MULT3.EXAMPLE.COM 53.35 8.01 50.41
適用プロセスは、メッセージをデキューできるキュー・サブスクライバです。V$BUFFERED_SUBSCRIBERS
動的パフォーマンス・ビューを問い合せると、メッセージをデキューできるすべての適用プロセスを表示できます。
また、V$BUFFERED_SUBSCRIBERS
動的パフォーマンス・ビューを使用して、適用プロセスのパフォーマンスを判断することもできます。たとえば、適用プロセスで多くのメッセージがオーバーフローした場合、その適用プロセスはバッファ・キューから十分な速度でメッセージをデキューしていない場合があります。キュー表にメッセージがオーバーフローすると、Oracle Streams環境のパフォーマンスが低下します。
この問合せはV$BUFFERED_QUEUES
ビューと結合され、キューの名前を表示します。また、伝播もキュー・サブスクライバであり、この問合せでは、SUBSCRIBER_ADDRESS
がNULL
であるサブスクライバの情報が出力されるように制限されるため、適用プロセスのみが返されます。
この項で説明する問合せを実行すると、キューからメッセージをデキューできる適用プロセスに関する次の情報が表示されます。
適用プロセスの名前
キューの所有者
キュー名
適用プロセスによって最後にデキューされたメッセージの順序番号。メッセージの順序番号は、キュー内のメッセージの順序を示します。
適用プロセスによるデキューを待機しているキュー内のメッセージの現在の数
データベースが最後に起動されてから、メモリーから適用プロセスのキュー表にオーバーフローしたメッセージの累積数
これらの情報を表示するには、次の問合せを実行します。
COLUMN SUBSCRIBER_NAME HEADING 'Apply Process' FORMAT A16 COLUMN QUEUE_SCHEMA HEADING 'Queue|Owner' FORMAT A10 COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A15 COLUMN LAST_DEQUEUED_SEQ HEADING 'Last|Dequeued|Sequence' FORMAT 99999999 COLUMN NUM_MSGS HEADING 'Number of|Messages|in Queue|(Current)' FORMAT 99999999 COLUMN TOTAL_SPILLED_MSG HEADING 'Number of|Spilled|Messages|(Cumulative)' FORMAT 99999999 SELECT s.SUBSCRIBER_NAME, q.QUEUE_SCHEMA, q.QUEUE_NAME, s.LAST_DEQUEUED_SEQ, s.NUM_MSGS, s.TOTAL_SPILLED_MSG FROM V$BUFFERED_QUEUES q, V$BUFFERED_SUBSCRIBERS s, DBA_APPLY a WHERE q.QUEUE_ID = s.QUEUE_ID AND s.SUBSCRIBER_ADDRESS IS NULL AND s.SUBSCRIBER_NAME = a.APPLY_NAME;
出力は次のようになります。
Last Number of Number of Queue Queue Dequeued Messages Spilled Apply Process Owner Name Sequence in Queue Messages (Current)(Cumulative) ---------------- ---------- --------------- --------- --------- ------------ APPLY_FROM_MULT3 STRMADMIN STREAMS_QUEUE 49 148 0 APPLY_FROM_MULT2 STRMADMIN STREAMS_QUEUE 85 241 1
次の各項では、伝播および伝播ジョブの監視について説明します。
DBA_PROPAGATION
データ・ディクショナリ・ビューを問い合せると、各伝播に関する情報を表示できます。このビューには、ローカル・データベースにソース・キューを含む各伝播に関する情報が表示されます。
この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。
データベース内の各伝播に関する情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A19 COLUMN SOURCE_QUEUE_NAME HEADING 'Source|Queue|Name' FORMAT A17 COLUMN DESTINATION_DBLINK HEADING 'Database|Link' FORMAT A9 COLUMN DESTINATION_QUEUE_NAME HEADING 'Dest|Queue|Name' FORMAT A15 COLUMN STATUS HEADING 'Status' FORMAT A8 COLUMN QUEUE_TO_QUEUE HEADING 'Queue-|to-|Queue?' FORMAT A6 SELECT PROPAGATION_NAME, SOURCE_QUEUE_NAME, DESTINATION_DBLINK, DESTINATION_QUEUE_NAME, STATUS, QUEUE_TO_QUEUE FROM DBA_PROPAGATION;
出力は次のようになります。
Source Dest Queue- Propagation Queue Database Queue to- Name Name Link Name Status Queue? ------------------- ----------------- --------- --------------- -------- ------ STREAMS_PROPAGATION STREAMS_CAPTURE_Q INST2.EXA STREAMS_APPLY_Q ENABLED FALSE MPLE.COM
DBA_PROPAGATION
データ・ディクショナリ・ビューを問い合せると、各伝播のソース・キューと宛先キューを判断できます。
この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。
伝播の名前
ソース・キューの所有者
ソース・キュー名
ソース・キューを含むデータベース
宛先キューの所有者
宛先キュー名
宛先キューを含むデータベース
データベース内の各伝播に関する情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A20 COLUMN SOURCE_QUEUE_OWNER HEADING 'Source|Queue|Owner' FORMAT A10 COLUMN 'Source Queue' HEADING 'Source|Queue' FORMAT A15 COLUMN DESTINATION_QUEUE_OWNER HEADING 'Dest|Queue|Owner' FORMAT A10 COLUMN 'Destination Queue' HEADING 'Destination|Queue' FORMAT A15 SELECT p.PROPAGATION_NAME, p.SOURCE_QUEUE_OWNER, p.SOURCE_QUEUE_NAME ||'@'|| g.GLOBAL_NAME "Source Queue", p.DESTINATION_QUEUE_OWNER, p.DESTINATION_QUEUE_NAME ||'@'|| p.DESTINATION_DBLINK "Destination Queue" FROM DBA_PROPAGATION p, GLOBAL_NAME g;
出力は次のようになります。
Source Dest Propagation Queue Source Queue Destination Name Owner Queue Owner Queue -------------------- ---------- --------------- ---------- --------------- STREAMS_PROPAGATION STRMADMIN STREAMS_CAPTURE STRMADMIN STREAMS_APPLY_Q _Q@INST1.EXAMPL @INST2.EXAMPLE E.COM .COM
この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。
伝播の名前
伝播のポジティブ・ルール・セットの所有者
伝播で使用されるポジティブ・ルール・セットの名前
伝播で使用されるネガティブ・ルール・セットの所有者
伝播で使用されるネガティブ・ルール・セットの名前
データベース内の各伝播に関する一般情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A20 COLUMN RULE_SET_OWNER HEADING 'Positive|Rule Set|Owner' FORMAT A10 COLUMN RULE_SET_NAME HEADING 'Positive Rule|Set Name' FORMAT A15 COLUMN NEGATIVE_RULE_SET_OWNER HEADING 'Negative|Rule Set|Owner' FORMAT A10 COLUMN NEGATIVE_RULE_SET_NAME HEADING 'Negative Rule|Set Name' FORMAT A15 SELECT PROPAGATION_NAME, RULE_SET_OWNER, RULE_SET_NAME, NEGATIVE_RULE_SET_OWNER, NEGATIVE_RULE_SET_NAME FROM DBA_PROPAGATION;
出力は次のようになります。
Positive Negative Propagation Rule Set Positive Rule Rule Set Negative Rule Name Owner Set Name Owner Set Name -------------------- ---------- --------------- ---------- --------------- STRM01_PROPAGATION STRMADMIN RULESET$_22 STRMADMIN RULESET$_31
この項で説明する問合せを実行すると、伝播dbs1_to_dbs2
で使用される伝播ジョブの伝播スケジュールに関して次の情報が表示されます。
伝播スケジュールが起動された日時または次回起動される日時
伝播ジョブの継続期間。再起動前にジョブによってメッセージが伝播される期間です。
伝播の次回起動時刻
伝播ジョブの待機時間。これは、継続期間中にキューにある他のすべてのメッセージが関連した宛先に伝播された場合に、新規メッセージを伝播するための最大待機時間です。
伝播ジョブが有効化されているかどうか
最後にスケジュールを実行したプロセスの名前
スケジュールの実行に失敗した連続失敗回数。16回連続して失敗すると、伝播ジョブは自動的に無効化されます。
ソース・キューを含むデータベースで、次の問合せを実行します。
COLUMN START_DATE HEADING 'Start Date' COLUMN PROPAGATION_WINDOW HEADING 'Duration|in Seconds' FORMAT 99999 COLUMN NEXT_TIME HEADING 'Next|Time' FORMAT A8 COLUMN LATENCY HEADING 'Latency|in Seconds' FORMAT 99999 COLUMN SCHEDULE_DISABLED HEADING 'Status' FORMAT A8 COLUMN PROCESS_NAME HEADING 'Process' FORMAT A8 COLUMN FAILURES HEADING 'Number of|Failures' FORMAT 99 SELECT DISTINCT TO_CHAR(s.START_DATE, 'HH24:MI:SS MM/DD/YY') START_DATE, s.PROPAGATION_WINDOW, s.NEXT_TIME, s.LATENCY, DECODE(s.SCHEDULE_DISABLED, 'Y', 'Disabled', 'N', 'Enabled') SCHEDULE_DISABLED, s.PROCESS_NAME, s.FAILURES FROM DBA_QUEUE_SCHEDULES s, DBA_PROPAGATION p WHERE p.PROPAGATION_NAME = 'DBS1_TO_DBS2' AND s.DESTINATION LIKE '%' || p.DESTINATION_DBLINK AND s.SCHEMA = p.SOURCE_QUEUE_OWNER AND s.QNAME = p.SOURCE_QUEUE_NAME;
出力は次のようになります。
Duration Next Latency Number of Start Date in Seconds Time in Seconds Status Process Failures ----------------- ---------- -------- ---------- -------- -------- --------- 15:23:40 03/02/02 5 Enabled J002 0
この伝播ジョブでは、Oracle Streamsの伝播ジョブのデフォルト・スケジュールが使用されています。つまり、継続期間と次回実行時刻はどちらもNULL
で、待機時間は5秒です。継続期間がNULL
の場合、ジョブでは変更が伝播されますが、ジョブが自動的に再起動されることはありません。次回実行時刻がNULL
の場合、伝播ジョブは現在実行されています。
関連項目:
|
伝播は、キュー・ツー・キューまたはキュー・ツー・データベース・リンク(キュー・ツーdblink)が可能です。キュー・ツー・キュー伝播は、独自の排他的な伝播ジョブを使用してメッセージをソース・キューから宛先キューに伝播します。各伝播ジョブには独自の伝播スケジュールがあるため、各キュー・ツー・キュー伝播は個別に管理することができます。同じデータベース・リンクを共有するすべてのキュー・ツーdblink伝播には、1つの伝播スケジュールがあります。
この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。
伝播の名前
伝播スケジュールを実行するシステムによって消費された合計時間
伝播スケジュールによって伝播されたメッセージの合計数
伝播スケジュールによって伝播された合計バイト数
次の問合せを実行すると、ソース・キューがローカル・データベースに含まれる伝播ごとにこの情報が表示されます。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A20 COLUMN TOTAL_TIME HEADING 'Total Time|Executing|in Seconds' FORMAT 999999 COLUMN TOTAL_NUMBER HEADING 'Total Messages|Propagated' FORMAT 999999999 COLUMN TOTAL_BYTES HEADING 'Total Bytes|Propagated' FORMAT 9999999999999 SELECT p.PROPAGATION_NAME, s.TOTAL_TIME, s.TOTAL_NUMBER, s.TOTAL_BYTES FROM DBA_QUEUE_SCHEDULES s, DBA_PROPAGATION p WHERE s.DESTINATION LIKE '%' || p.DESTINATION_DBLINK AND s.SCHEMA = p.SOURCE_QUEUE_OWNER AND s.QNAME = p.SOURCE_QUEUE_NAME;
出力は次のようになります。
Total Time Propagation Executing Total Messages Total Bytes Name in Seconds Propagated Propagated -------------------- ---------- -------------- -------------- MULT3_TO_MULT1 351 872 875252 MULT3_TO_MULT2 596 872 875252
関連項目: DBA_QUEUE_SCHEDULES データ・ディクショナリ・ビューの詳細は、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびOracle Databaseリファレンスを参照 |
伝播送信者は、メッセージをソース・キューから宛先キューに伝播します。
この項で説明する問合せを実行すると、データベース内の各伝播送信者に関する次の情報が表示されます。
伝播の名前
伝播送信者のセッション識別子
伝播送信者のセッションのシリアル番号
伝播送信者のオペレーティング・システムのプロセス識別番号
伝播送信者の状態
取得と適用の複合構成で、取得プロセスは伝播送信者として機能し、伝播受信者にメッセージを直接送信します。伝播が取得と適用の複合構成の一部である場合は、この問合せによって、取得プロセスのセッションID、セッションのシリアル番号、オペレーティング・システムのプロセスIDおよび状態が表示されます。
伝播が取得と適用の複合構成の一部でない場合は、この問合せによって、伝播ジョブのセッションID、セッションのシリアル番号、オペレーティング・システムのプロセスIDおよび状態が表示されます。
この情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A11 COLUMN SESSION_ID HEADING 'Session ID' FORMAT 9999 COLUMN SERIAL# HEADING 'Session|Serial Number' FORMAT 9999 COLUMN SPID HEADING 'Operating System|Process ID' FORMAT A24 COLUMN STATE HEADING 'State' FORMAT A16 SELECT p.PROPAGATION_NAME, s.SESSION_ID, s.SERIAL#, s.SPID, s.STATE FROM DBA_PROPAGATION p, V$PROPAGATION_SENDER s WHERE p.SOURCE_QUEUE_OWNER = s.QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = s.QUEUE_NAME AND p.DESTINATION_QUEUE_OWNER = s.DST_QUEUE_SCHEMA AND p.DESTINATION_QUEUE_NAME = s.DST_QUEUE_NAME;
出力は次のようになります。
Propagation Session Operating System Name Session ID Serial Number Process ID State ----------- ---------- ------------- ------------------------ ---------------- PROPAGATION 951 1 22594 Capturing change _SPOKE1 records
この出力では、取得プロセスの状態が表示されているため、伝播送信者が取得と適用の複合構成の一部になっています。また、V$PROPAGATION_SENDER
ビューのSCHEDULE_STATUS
列にSCHEDULE
OPTIMIZED
が表示されている場合は、伝播が取得と適用の複合構成の一部であることを意味します。
伝播受信者は、伝播送信者から送信されたメッセージを宛先キューにエンキューします。この項で説明する問合せを実行すると、データベース内の各伝播受信者に関する次の情報が表示されます。
伝播の名前
伝播受信者のセッションID
伝播受信者のセッションのシリアル番号
伝播受信者のオペレーティング・システムのプロセス識別番号
伝播受信者の状態
この情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A11 COLUMN SESSION_ID HEADING 'Session ID' FORMAT 99999999 COLUMN SERIAL# HEADING 'Session|Serial Number' FORMAT 99999999 COLUMN SPID HEADING 'Operating System|Process ID' FORMAT 99999999999 COLUMN STATE HEADING 'State' FORMAT A16 SELECT p.PROPAGATION_NAME, s.SESSION_ID, s.SERIAL#, s.SPID, s.STATE FROM DBA_PROPAGATION p, V$PROPAGATION_RECEIVER s WHERE p.SOURCE_QUEUE_OWNER = s.SRC_QUEUE_SCHEMA AND p.SOURCE_QUEUE_NAME = s.SRC_QUEUE_NAME AND p.DESTINATION_QUEUE_OWNER = s.DST_QUEUE_SCHEMA AND p.DESTINATION_QUEUE_NAME = s.DST_QUEUE_NAME;
出力は次のようになります。
Propagation Session Operating System Name Session ID Serial Number Process ID State ----------- ---------- ------------- ------------------------ ---------------- PROPAGATION 940 1 22636 Waiting for mess _SPOKE1 age from client PROPAGATION 928 4 29154 Waiting for mess _SPOKE2 age from client