ヘッダーをスキップ
Oracle Streams概要および管理
11g リリース1(11.1)
E05775-02
  目次
目次
索引
索引

前へ
前へ
 
次へ
次へ
 

24 Oracle Streamsのキューおよび伝播の監視

次の各項では、Oracle Streamsのキュー伝播の監視について説明します。


注意:

Oracle Streams環境の監視には、Oracle Enterprise ManagerコンソールのOracle Streamsツールを使用する方法も適しています。詳細は、Oracle Database 2日でデータ・レプリケーションおよび統合ガイドおよびOracle Streamsツールのオンライン・ヘルプを参照してください。


関連項目:


キューおよびメッセージの監視

次の各項では、キューとメッセージの情報の表示について説明します。

データベース内のANYDATAキューの表示

データベース内のすべての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

関連項目:

メッセージ・クライアントの詳細は、第3章「Oracle Streamsのステージングと伝播」を参照

メッセージ通知の表示

メッセージ・クライアントによってデキュー可能なメッセージがキューにエンキューされる際に、通知が送信されるようにメッセージ通知を構成することができます。通知は、電子メール・アドレス、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

注意:

この問合せを実行すると、取得LCRや、バッファ・キュー内の他のメッセージではなく、永続キューのメッセージのみが表示されます。


関連項目:

メッセージをANYDATAキューにエンキューする例については、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド を参照。

永続キュー内のメッセージの内容の表示

ANYDATAキュー内で、ANYDATAペイロード内にカプセル化されているペイロードの内容を表示するには、ANYDATA型のAccessdata_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バッファ・キューにエンキューするキュー・パブリッシャです。これらの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列で伝播がSCHEDULEOPTIMIZEDになっている場合は、伝播が取得と適用の複合構成の一部であることを意味します。

伝播によって送信されたメッセージ数およびバイト数の表示

この項で説明する問合せを実行すると、ローカル・データベースのバッファ・キューからバッファ・メッセージを送信する各伝播によって送信されたメッセージの数とバイト数が表示されます。

  • 伝播の名前

  • キュー

  • 伝播で使用されるデータベース・リンクの名前

  • データベース・インスタンスが最後に起動されてから送信されたメッセージの合計数

  • データベース・インスタンスが最後に起動されてから送信されたバイトの合計数

これらの情報を表示するには、次の問合せを実行します。

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_ADDRESSNULLであるサブスクライバの情報が出力されるように制限されるため、適用プロセスのみが返されます。

この項で説明する問合せを実行すると、キューからメッセージをデキューできる適用プロセスに関する次の情報が表示されます。

  • 適用プロセスの名前

  • キューの所有者

  • キュー名

  • 適用プロセスによって最後にデキューされたメッセージの順序番号。メッセージの順序番号は、キュー内のメッセージの順序を示します。

  • 適用プロセスによるデキューを待機しているキュー内のメッセージの現在の数

  • データベースが最後に起動されてから、メモリーから適用プロセスのキュー表にオーバーフローしたメッセージの累積数

これらの情報を表示するには、次の問合せを実行します。

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

Oracle Streamsの伝播および伝播ジョブの監視

次の各項では、伝播および伝播ジョブの監視について説明します。

各伝播のキューおよびデータベース・リンクの表示

DBA_PROPAGATIONデータ・ディクショナリ・ビューを問い合せると、各伝播に関する情報を表示できます。このビューには、ローカル・データベースにソース・キューを含む各伝播に関する情報が表示されます。

この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。

  • 伝播の名前

  • ソース・キュー

  • 伝播で使用されるデータベース・リンク

  • 宛先キュー

  • 伝播の状態(ENABLEDDISABLEDまたはABORTED

  • 伝播がキュー・ツー・キュー伝播であるかどうか

データベース内の各伝播に関する情報を表示するには、次の問合せを実行します。

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の場合、伝播ジョブは現在実行されています。


関連項目:

  • Oracle Streamsの伝播ジョブのデフォルト伝播スケジュールの詳細は、「伝播スケジュールとOracle Streamsの伝播」を参照

  • 伝播ジョブが無効化されている場合は、「伝播が有効かどうか」を参照

  • DBA_QUEUE_SCHEDULESデータ・ディクショナリ・ビューの詳細は、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドおよびOracle Databaseリファレンスを参照


伝播されたメッセージの合計数とバイト数の判断

伝播は、キュー・ツー・キューまたはキュー・ツー・データベース・リンク(キュー・ツー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列にSCHEDULEOPTIMIZEDが表示されている場合は、伝播が取得と適用の複合構成の一部であることを意味します。

伝播受信者に関する情報の表示

伝播受信者は、伝播送信者から送信されたメッセージを宛先キューにエンキューします。この項で説明する問合せを実行すると、データベース内の各伝播受信者に関する次の情報が表示されます。

  • 伝播の名前

  • 伝播受信者のセッション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