25 Oracle Streamsのキューおよび伝播の監視
次の各項では、Oracle Streamsのキューと伝播の監視について説明します。
注意:
Oracle Enterprise Manager Cloud ControlのOracle Streamsツールも、Oracle Streams環境を監視するための優れた手段です。詳細は、Oracle Streamsツールのオンライン・ヘルプを参照してください。
関連項目:
- 
                        
この章で説明するデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照
 
25.1 キューおよびメッセージの監視
次の各項では、キューとメッセージの情報の表示について説明します。
25.1.1 データベース内の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 ---------- ---------------------------- ---------------------- --------------- STRMADMIN DB$APPQ DB$APPQT STRMADMIN AQ$_DB$APPQT_E DB$APPQT exception queue STRMADMIN DA$CAPQ DA$CAPQT STRMADMIN AQ$_DA$CAPQT_E DA$CAPQT exception queue IX STREAMS_QUEUE STREAMS_QUEUE_TABLE IX AQ$_STREAMS_QUEUE_TABLE_E STREAMS_QUEUE_TABLE exception queue
例外キューは、ANYDATAキューを作成すると自動的に作成されます。
                        
関連項目:
「キューの管理」
25.1.2 データベースでのメッセージ・クライアントの表示
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
関連項目:
メッセージ・クライアントの詳細は、「Oracle Streamsのステージングと伝播」を参照
25.1.3 メッセージ通知の表示
メッセージ・クライアントによってデキュー可能なメッセージがキューにエンキューされる際に、通知が送信されるようにメッセージ通知を構成することができます。通知は、電子メール・アドレス、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
25.1.4 永続キュー内の各メッセージのコンシューマの決定
永続キュー内の各メッセージのコンシューマを決定するには、キュー所有者のスキーマ内で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 Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照
                           
25.1.5 永続キュー内のメッセージの内容の表示
ANYDATAキュー内で、ANYDATAペイロード内にカプセル化されているペイロードの内容を表示するには、ANYDATA型のAccessdata_type統計ファンクションを使用してキュー表を問い合せます。この場合、data_typeは表示するペイロードの型です。
                        
関連項目:
この項の問合せで表示されるメッセージをANYDATAキューにエンキューする例については、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照
                           
たとえば、キュー表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')25.2 バッファ・キューの監視
バッファ・キューには、次の記憶域が含まれます。
バッファ・キューはOracle Streamsプールに格納されます。Oracle Streamsプールは、Oracle Streamsによって使用されるSGAのメモリーの一部です。Oracle Streams環境では、取得プロセスによって取得されたLCRは、常にANYDATAキューのバッファ・キューに格納されます。また、ユーザーおよびアプリケーションは、バッファ・キューにメッセージをエンキューできます。これらのバッファ・キューは、ANYDATAキューまたは型付きキューの一部です。
                  
バッファ・キューを使用すると、Oracle Databaseでは、メッセージを常にキュー表に格納するのではなく、SGAに格納することによって、メッセージを最適化できます。取得LCRは常にバッファ・キューに格納されますが、他のタイプのメッセージは、バッファ・キューに格納するか、またはキュー表に永続的に格納できます。バッファ・キュー内のメッセージは、一定期間デキューされずにバッファ・キュー内でステージングされた場合や、メモリーにすべてのメッセージを保持するための十分な領域がない場合に、メモリーからオーバーフローします。メモリーからオーバーフローしたメッセージは、適切なキュー表に格納されます。
次の項では、バッファ・キューを監視する問合せについて説明します。
25.2.1 各バッファ・キュー内のメッセージ数の決定
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
25.2.2 各バッファ・キュー内のLCRの取得プロセスの表示
取得プロセスは、取得LCRをバッファ・キューにエンキューするキュー・パブリッシャです。これらのLCRは、それ以後に他のキューに伝播できます。V$BUFFERED_PUBLISHERS動的パフォーマンス・ビューを問い合せると、バッファ・キュー内のLCRを取得した各取得プロセスを表示できます。これらのLCRはローカル・データベースで取得されているか、またはリモート・データベースで取得され、問合せで指定されたキューに伝播されている場合があります。
                        
この項で説明する問合せでは、ローカル・データベースのバッファ・キューには取得LCRのみが格納され、バッファLCRやバッファ・ユーザー・メッセージは格納されないと想定しています。この問合せを実行すると、各取得プロセスに関する次の情報が表示されます。
- 
                              
バッファ・キューのLCRを取得した取得プロセスの名前
 - 
                              
取得プロセスがリモート・データベースで実行されており、取得LCRがローカル・キューに伝播された場合、取得LCRの最新の伝播元であるキューおよびデータベースの名前
 - 
                              
取得LCRをステージングするローカル・キューの名前
 - 
                              
取得プロセスによって取得されたLCR(データベース・インスタンスが前回起動してからバッファ・キューにステージングされたLCR)の合計数
 - 
                              
送信者からバッファ・キューに最後にエンキューされたLCRのメッセージ番号
 - 
                              
取得プロセス・データベースで使用されるStreamsプールのパーセンテージ
 - 
                              
パブリッシャの状態。取得プロセスがパブリッシャであり、次の状態があります。
- 
                                    
PUBLISHINGMESSAGES - 
                                    
INFLOWCONTROL:TOOMANYUNBROWSEDMESSAGES - 
                                    
INFLOWCONTROL:OVERSPILLEDMESSAGES - 
                                    
INFLOWCONTROL:INSUFFICIENTMEMORYANDUNBROWSEDMESSAGES 
 - 
                                    
 
これらの情報を表示するには、次の問合せを実行します。
COLUMN SENDER_NAME HEADING 'Capture|Process' FORMAT A10
COLUMN SENDER_ADDRESS HEADING 'Sender Queue' FORMAT A15
COLUMN QUEUE_NAME HEADING 'Queue Name' FORMAT A10
COLUMN CNUM_MSGS HEADING 'Number|of LCRs|Enqueued' FORMAT 99999999
COLUMN LAST_ENQUEUED_MSG HEADING 'Last|Enqueued|LCR' FORMAT 9999999999
COLUMN MEMORY_USAGE HEADING 'Percent|Streams|Pool|Used' FORMAT 999
COLUMN PUBLISHER_STATE HEADING 'Publisher|State' FORMAT A10
 
SELECT SENDER_NAME,
       SENDER_ADDRESS,
       QUEUE_NAME,        
       CNUM_MSGS, 
       LAST_ENQUEUED_MSG,
       MEMORY_USAGE,
       PUBLISHER_STATE
  FROM V$BUFFERED_PUBLISHERS;
出力は次のようになります。
                                                            Percent
                                         Number        Last Streams
Capture                                 of LCRs    Enqueued    Pool Publisher
Process    Sender Queue    Queue Name  Enqueued         LCR    Used State
---------- --------------- ---------- --------- ----------- ------- ----------
DB1$CAP                    DB1$CAPQ        3670     1002253      21 PUBLISHING
                                                                     MESSAGES
 
DB2$CAP    "STRMADMIN"."DB DB2$APPQ        3427      981066      21 PUBLISHING
           2$CAPQ"@DB2.EXA                                           MESSAGES
           MPLE.COM
この出力から次のことがわかります。
- 
                              
ローカルの
db1$cap取得プロセスの3670個のLCRが、db1$capqというローカル・キューにエンキューされました。この取得プロセスは、SenderQueue列がNULLであるため、ローカルです。この取得プロセスから最後にエンキューされたLCRのメッセージ番号は1002253でした。Streamsプールの21%が取得プロセス・データベースで使用され、通常は取得プロセスがメッセージをパブリッシュします。 - 
                              
リモート・データベースで実行される
db2$cap取得プロセスの3427個のLCRが、データベースdb2.example.comのキューdb2$capqからローカル・キューdb2$appqに伝播されました。この送信者から最後にエンキューされたLCRのメッセージ番号は961066でした。Streamsプールの21%がリモートの取得プロセス・データベースで使用され、通常は取得プロセスがメッセージをパブリッシュします。 
25.2.3 バッファ・メッセージを送信する伝播に関する情報の表示
これらの情報を表示するには、次の問合せを実行します。
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
--------------- ---------- --------------- ---------- --------------------
PROPAGATION$_6  STRMADMIN  DB1$CAPQ        "STRMADMIN SCHEDULE OPTIMIZED
                                           "."DB1$APP
                                           Q"@DB2.EXA
                                           MPLE.COM
V$PROPAGATION_SENDERビューのSCHEDULE_STATUS列で伝播がSCHEDULE OPTIMIZEDになっている場合は、伝播が取得と適用の複合による最適化の一部であることを意味します。
                        
関連項目:
25.2.4 伝播によって送信されたメッセージ数およびバイト数の表示
- 
                              
伝播の名前
 - 
                              
キュー名
 - 
                              
伝播で使用されるデータベース・リンクの名前
 - 
                              
データベース・インスタンスが最後に起動されてから送信されたメッセージの合計数
 - 
                              
データベース・インスタンスが最後に起動されてから送信されたバイトの合計数
 
これらの情報を表示するには、次の問合せを実行します。
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
25.2.5 バッファ・メッセージを送信する伝播のパフォーマンス統計の表示
この項で説明する問合せを実行すると、バッファ・メッセージを送信する伝播が様々なタスクを実行するためにかかった時間が表示されます。各伝播では、ソース・キューから宛先キューにメッセージが送信されます。この問合せを実行すると、具体的には次の情報が表示されます。
- 
                              
伝播の名前
 - 
                              
キュー名
 - 
                              
伝播で使用されるデータベース・リンクの名前
 - 
                              
データベース・インスタンスが最後に起動されてから、キューからメッセージをデキューするためにかかった時間(秒単位)
 - 
                              
データベース・インスタンスが最後に起動されてから、メッセージをピクルするためにかかった時間(秒単位)。ピクルを行うと、メモリー内のメッセージが、ネットワーク経由で送信可能な一連のバイトに変更されます。
 - 
                              
データベース・インスタンスが最後に起動されてから、メッセージを伝播するためにかかった時間(秒単位)
 
これらの情報を表示するには、次の問合せを実行します。
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.COM25.2.6 各バッファ・キューからメッセージをデキューする伝播の表示
伝播は、メッセージをデキューできるキュー・サブスクライバです。V$BUFFERED_SUBSCRIBERS動的パフォーマンス・ビューを問い合せると、バッファ・メッセージをデキューできるすべての伝播を表示できます。 
                        
適用プロセスもキュー・サブスクライバです。この問合せはDBA_PROPAGATIONおよびV$BUFFERED_QUEUESビューと結合され、伝播ののみ情報を出力するように制限し、各伝播の伝播名を表示します。
                        
この項で説明する問合せを実行すると、キューからメッセージをデキューできる各伝播に関する次の情報が表示されます。
- 
                              
伝播の名前
 - 
                              
伝播がサブスクライブするキューの所有者と名前
このキューは、伝播用のソース・キューです。
 - 
                              
サブスクライバ・アドレス
 - 
                              
伝播が最後に起動された時刻
 - 
                              
データベースが最後に起動されてから、伝播によってデキューされたメッセージの累積数
 - 
                              
伝播が最後に起動されてから、その伝播によってデキューされたメッセージの合計数
 - 
                              
伝播によって最後にデキューされたメッセージのメッセージ番号
 
これらの情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A11
COLUMN QUEUE_SCHEMA HEADING 'Queue|Owner' FORMAT A5
COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A5
COLUMN SUBSCRIBER_ADDRESS HEADING 'Subscriber|Address' FORMAT A15
COLUMN STARTUP_TIME HEADING 'Startup|Time' FORMAT A9
COLUMN CNUM_MSGS HEADING 'Cumulative|Messages' FORMAT 99999999
COLUMN TOTAL_DEQUEUED_MSG HEADING 'Total|Messages' FORMAT 99999999
COLUMN LAST_DEQUEUED_NUM HEADING 'Last|Dequeued|Message|Number' FORMAT 99999999
 
SELECT p.PROPAGATION_NAME,
       s.QUEUE_SCHEMA,
       s.QUEUE_NAME,
       s.SUBSCRIBER_ADDRESS,
       s.STARTUP_TIME,
       s.CNUM_MSGS,          
       s.TOTAL_DEQUEUED_MSG,
       s.LAST_DEQUEUED_NUM
FROM DBA_PROPAGATION p, V$BUFFERED_SUBSCRIBERS s
WHERE p.SOURCE_QUEUE_OWNER = s.QUEUE_SCHEMA AND
      p.SOURCE_QUEUE_NAME  = s.QUEUE_NAME AND 
      p.PROPAGATION_NAME   = s.SUBSCRIBER_NAME AND
      s.SUBSCRIBER_ADDRESS LIKE '%' || p.DESTINATION_DBLINK;
出力は次のようになります。
                                                                            Last
                                                                        Dequeued
            Queue Queue Subscriber      Startup   Cumulative     Total   Message
Propagation Owner Name  Address         Time        Messages  Messages    Number
----------- ----- ----- --------------- --------- ---------- --------- ---------
PROPAGATION STRMA DB1$C "STRMADMIN"."DB 25-JUN-09      11079     11079   1525762
$_5         DMIN  APQ   1$APPQ"@DB2.EXA
                        MPLE.COM
注意:
同じデータベース・リンクを使用する複数の伝播によって、宛先データベースの異なるキューにメッセージが伝播される場合、この問合せによって返される統計は正確な値ではなく、概算になります。
25.2.7 バッファ・メッセージを受信する伝播のパフォーマンス統計の表示
この項で説明する問合せを実行すると、バッファ・メッセージを受信する各伝播が様々なタスクを実行するためにかかった時間が表示されます。各伝播でメッセージが受信され、そのメッセージが伝播の宛先キューにエンキューされます。この問合せを実行すると、具体的には次の情報が表示されます。
- 
                              
メッセージの伝播元となるソース・キューの名前
 - 
                              
ソース・データベースの名前
 - 
                              
データベース・インスタンスが最後に起動されてから、メッセージをアンピクルするためにかかった時間(秒単位)。アンピクルを行うと、ネットワーク経由で送信可能な一連のバイトが、メモリー内のバッファ・メッセージに変更されます。
 - 
                              
データベース・インスタンスが最後に起動されてから、伝播されたメッセージのルールを評価するためにかかった時間(秒単位)
 - 
                              
データベース・インスタンスが最後に起動されてから、伝播の宛先キューにメッセージをエンキューするためにかかった時間(秒単位)
 
これらの情報を表示するには、次の問合せを実行します。
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
25.2.8 各バッファ・キューからのメッセージをデキューする適用プロセスの表示
適用プロセスは、メッセージをデキューできるキュー・サブスクライバです。V$BUFFERED_SUBSCRIBERS動的パフォーマンス・ビューを問い合せると、メッセージをデキューできるすべての適用プロセスを表示できます。 
                        
この問合せはV$BUFFERED_QUEUESビューと結合され、キューの名前を表示します。また、伝播もキュー・サブスクライバであり、この問合せでは、SUBSCRIBER_ADDRESSがNULLであるサブスクライバの情報が出力されるように制限されるため、適用プロセスのみが返されます。
                        
この項で説明する問合せを実行すると、キューからメッセージをデキューできる適用プロセスに関する次の情報が表示されます。
- 
                              
適用プロセスの名前
 - 
                              
キューの所有者
 - 
                              
キュー名
 - 
                              
適用プロセスが最後に起動された時刻
 - 
                              
データベースが最後に起動されてから、適用プロセスによってデキューされたメッセージの累積数
 - 
                              
適用プロセスが最後に起動されてから、その適用プロセスによってデキューされたメッセージの合計数
 - 
                              
適用プロセスによって最後にデキューされたメッセージのメッセージ番号
 
これらの情報を表示するには、次の問合せを実行します。
COLUMN SUBSCRIBER_NAME HEADING 'Apply Process' FORMAT A16
COLUMN QUEUE_SCHEMA HEADING 'Queue|Owner' FORMAT A5
COLUMN QUEUE_NAME HEADING 'Queue|Name' FORMAT A5
COLUMN STARTUP_TIME HEADING 'Startup|Time' FORMAT A9
COLUMN CNUM_MSGS HEADING 'Cumulative|Messages' FORMAT 99999999
COLUMN TOTAL_DEQUEUED_MSG HEADING 'Number of|Dequeued|Messages' 
  FORMAT 99999999
COLUMN LAST_DEQUEUED_NUM HEADING 'Last|Dequeued|Message|Number' FORMAT 99999999
SELECT s.SUBSCRIBER_NAME,
       q.QUEUE_SCHEMA,
       q.QUEUE_NAME, 
       s.STARTUP_TIME,
       s.CNUM_MSGS,          
       s.TOTAL_DEQUEUED_MSG,
       s.LAST_DEQUEUED_NUM
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  Dequeued
                 Queue Queue Startup   Cumulative   Dequeued   Message
Apply Process    Owner Name  Time        Messages   Messages    Number
---------------- ----- ----- --------- ---------- ---------- ---------
APPLY$_DB2_2     STRMA DB2$A 25-JUN-09      11039      11039   1509859
                 DMIN  PPQ25.3 Oracle Streamsの伝播および伝播ジョブの監視
25.3.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?
------------------- ----------------- --------- --------------- -------- ------
PROPAGATION$_6      DA$CAPQ           DB.EXAMPL DA$APPQ         ENABLED  TRUE
                                      E.COM
25.3.2 各伝播のソース・キューと宛先キューの判断
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
-------------------- ---------- --------------- ---------- ---------------
PROPAGATION$_6       STRMADMIN  DA$CAPQ@DA.EXAM STRMADMIN  DA$APPQ@DB.EXAM
                                PLE.COM                    PLE.COM
25.3.3 各伝播のルール・セットの判断
この項で説明する問合せを実行すると、各伝播に関する次の情報が表示されます。
- 
                              
伝播の名前
 - 
                              
伝播のポジティブ・ルール・セットの所有者
 - 
                              
伝播で使用されるポジティブ・ルール・セットの名前
 - 
                              
伝播で使用されるネガティブ・ルール・セットの所有者
 - 
                              
伝播で使用されるネガティブ・ルール・セットの名前
 
データベース内の各伝播に関する一般情報を表示するには、次の問合せを実行します。
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 -------------------- ---------- --------------- ---------- --------------- PROPAGATION$_6 STRMADMIN RULESET$_7 STRMADMIN RULESET$_9
25.3.4 伝播ジョブのスケジュールに関する情報の表示
- 
                              
伝播の名前
 - 
                              
伝播ジョブの待機時間。これは、継続期間中にキューにある他のすべてのメッセージが関連した宛先に伝播された場合に、新規メッセージを伝播するための最大待機時間です。
 - 
                              
伝播ジョブが有効化されているかどうか
 - 
                              
最後にスケジュールを実行したプロセスの名前
 - 
                              
スケジュールの実行の連続失敗回数(該当する場合)
16回連続して失敗すると、伝播ジョブは自動的に中断されます。
 - 
                              
伝播がキュー・ツー・キューであるか、キュー・ツーdblinkであるか
 - 
                              
前回伝播の実行が失敗したときのエラー・メッセージ・テキスト
 
ソース・キューを含むデータベースで、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation' FORMAT A15
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 'Failures' FORMAT 999
COLUMN QUEUE_TO_QUEUE HEADING 'Queue|to|Queue'
COLUMN LAST_ERROR_MSG HEADING 'Last Error|Message' FORMAT A15
 
SELECT p.PROPAGATION_NAME,
       s.LATENCY,
       DECODE(s.SCHEDULE_DISABLED,
                'Y', 'Disabled',
                'N', 'Enabled') SCHEDULE_DISABLED,
       s.PROCESS_NAME,
       s.FAILURES,
       p.QUEUE_TO_QUEUE,
       s.LAST_ERROR_MSG
  FROM DBA_QUEUE_SCHEDULES s, DBA_PROPAGATION p
  WHERE s.MESSAGE_DELIVERY_MODE = 'BUFFERED'
    AND s.DESTINATION LIKE '%' || p.DESTINATION_DBLINK
    AND s.SCHEMA = p.SOURCE_QUEUE_OWNER
    AND s.QNAME  = p.SOURCE_QUEUE_NAME
  ORDER BY PROPAGATION_NAME;
出力は次のようになります。
                                                      Queue
                   Latency                            to     Last Error
Propagation     in Seconds Status   Process  Failures Queue  Message
--------------- ---------- -------- -------- -------- ------ ---------------
PROPAGATION$_6          19 Enabled  CS00            0 TRUE
関連項目:
- 
                                 
Oracle Streamsの伝播ジョブのデフォルト伝播スケジュールの詳細は、「伝播スケジュールとOracle Streamsの伝播」を参照
 - 
                                 
伝播ジョブが無効化されている場合は、「伝播が有効かどうか」を参照
 - 
                                 
DBA_QUEUE_SCHEDULESデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』および『Oracle Databaseリファレンス』を参照 
25.3.5 伝播されたメッセージの合計数とバイト数の判断
伝播は、キュー・ツー・キューまたはキュー・ツー・データベース・リンク(キュー・ツー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
    AND s.MESSAGE_DELIVERY_MODE = 'BUFFERED';
出力は次のようになります。
Total Time Propagation Executing Total Messages Total Bytes Name in Seconds Propagated Propagated -------------------- ---------- -------------- -------------- PROPAGATION$_6 0 432615 94751013
関連項目:
DBA_QUEUE_SCHEDULESデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』および『Oracle Databaseリファレンス』を参照
                           
25.3.6 伝播送信者に関する情報の表示
- 
                              
伝播の名前
 - 
                              
伝播送信者のセッション識別子
 - 
                              
伝播送信者のセッションのシリアル番号
 - 
                              
伝播送信者のオペレーティング・システムのプロセス識別番号
 - 
                              
伝播送信者の状態
 
取得と適用の複合による最適化で、取得プロセスは伝播送信者として機能し、伝播受信者にメッセージを直接送信します。伝播が取得と適用の複合による最適化の一部である場合は、この問合せによって、取得プロセスのセッション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 61 17 21145 Waiting on empty $_6 queue
注意:
V$PROPAGATION_SENDERビューのSCHEDULE_STATUS列にSCHEDULE OPTIMIZEDと表示された場合は、伝播が取得と適用の複合による最適化の一部であることを意味します。
                           
関連項目:
25.3.7 伝播受信者に関する情報の表示
伝播受信者は、伝播送信者から送信されたメッセージを宛先キューにエンキューします。この項で説明する問合せを実行すると、データベース内の各伝播受信者に関する次の情報が表示されます。
- 
                              
伝播の名前
 - 
                              
伝播受信者のセッションID
 - 
                              
伝播受信者のセッションのシリアル番号
 - 
                              
伝播受信者のオペレーティング・システムのプロセス識別番号
 - 
                              
伝播受信者の状態
 
この情報を表示するには、次の問合せを実行します。
COLUMN PROPAGATION_NAME HEADING 'Propagation|Name' FORMAT A15
COLUMN SESSION_ID HEADING 'Session ID' FORMAT 999999
COLUMN SERIAL# HEADING 'Session|Serial|Number' FORMAT 999999
COLUMN SPID HEADING 'Operating|System|Process ID' FORMAT 999999
COLUMN STATE HEADING 'State' FORMAT A16
 
SELECT PROPAGATION_NAME, 
       SESSION_ID, 
       SERIAL#, 
       SPID, 
       STATE
  FROM V$PROPAGATION_RECEIVER;
出力は次のようになります。
                           Session Operating
Propagation                 Serial System
Name            Session ID  Number Process ID               State
--------------- ---------- ------- ------------------------ ----------------
PROPAGATION$_5          60       5 21050                    Waiting for mess
                                                            age from propaga
                                                            tion sender
25.3.8 各伝播に関するセッション情報の表示
この項で説明する問合せを実行すると、データベースの伝播に関連付けられている各セッションに関して次のセッション情報が表示されます。
- 
                              
Oracle Streamsコンポーネント
 - 
                              
セッション識別子
 - 
                              
シリアル番号
 - 
                              
オペレーション・システムのプロセス識別番号
 - 
                              
伝播送信者および伝播受信者のプロセスのプロセス名
 
データベース内の各伝播に関する情報を表示するには、次の問合せを実行します。
COLUMN ACTION HEADING 'Streams Component' FORMAT A28
COLUMN SID HEADING 'Session ID' FORMAT 99999
COLUMN SERIAL# HEADING 'Session|Serial|Number' FORMAT 9999999
COLUMN PROCESS HEADING 'Operating System|Process Number' FORMAT A20
COLUMN PROCESS_NAME HEADING 'Process|Names' FORMAT A7
 
SELECT /*+PARAM('_module_action_old_length',0)*/ ACTION,
       SID,
       SERIAL#,
       PROCESS,
       SUBSTR(PROGRAM,INSTR(PROGRAM,'(')+1,4) PROCESS_NAME
  FROM V$SESSION
  WHERE MODULE ='Streams' AND
        ACTION LIKE '%Propagation%';
出力は次のようになります。
                                        Session
                                         Serial Operating System     Process
Streams Component            Session ID   Number Process Number       Names
---------------------------- ---------- -------- -------------------- -------
APPLY$_DB_3 - Propagation Re         60        5 21048                TNS
ceiver CCA
 
PROPAGATION$_6 - Propagation         61       17 21145                CS00
Sender CCA
Streamsコンポーネントの出力例にあるCCAは、伝播が取得と適用の複合による最適化の一部であることを示します。TNSというプロセス名は、伝播受信者が取得プロセスによってリモートから開始されたことを示します。
                        
関連項目: