次の各項では、Oracle Streams暗黙的取得の監視について説明します。
|
注意: Oracle Enterprise Manager Cloud ControlのOracle Streamsツールも、Oracle Streams環境を監視するための優れた手段です。詳細は、Oracle Streamsツールのオンライン・ヘルプを参照してください。 |
|
関連項目:
|
この項では、Oracle Streamsの取得プロセスの監視に使用できる問合せの例を示します。
この項の内容は次のとおりです。
この項で説明する問合せを実行すると、データベース内の各取得プロセスに関する情報を表示できます。
取得プロセスの名前
取得プロセスで使用されるキューの名前
取得プロセスで使用されるポジティブ・ルール・セットの名前
取得プロセスで使用されるネガティブ・ルール・セットの名前
取得プロセスの状態(ENABLED、DISABLEDまたはABORTED)
データベース内の各取得プロセスに関する一般情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture|Process|Name' FORMAT A15 COLUMN QUEUE_NAME HEADING 'Capture|Process|Queue' FORMAT A15 COLUMN RULE_SET_NAME HEADING 'Positive|Rule Set' FORMAT A15 COLUMN NEGATIVE_RULE_SET_NAME HEADING 'Negative|Rule Set' FORMAT A15 COLUMN STATUS HEADING 'Capture|Process|Status' FORMAT A15 SELECT CAPTURE_NAME, QUEUE_NAME, RULE_SET_NAME, NEGATIVE_RULE_SET_NAME, STATUS FROM DBA_CAPTURE;
出力は次のようになります。
Capture Capture Capture Process Process Positive Negative Process Name Queue Rule Set Rule Set Status --------------- --------------- --------------- --------------- --------------- STRM01_CAPTURE STREAMS_QUEUE RULESET$_25 RULESET$_36 ENABLED
取得プロセスの状態がABORTEDの場合、DBA_CAPTUREデータ・ディクショナリ・ビューのERROR_NUMBERおよびERROR_MESSAGE列を問い合せると、エラーを特定できます。
この項で説明する問合せを実行すると、データベース内の取得プロセスに関連付けられている各セッション情報が表示されます。
取得プロセスのコンポーネント
セッション識別子
シリアル番号
オペレーション・システムのプロセス識別番号
CPnnという形式の取得プロセスのプロセス名(nnは文字および数字)
データベースの各取得プロセスに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN ACTION HEADING 'Capture Process Component' FORMAT A25
COLUMN SID HEADING 'Session ID' FORMAT 99999
COLUMN SERIAL# HEADING 'Session|Serial|Number' FORMAT 99999999
COLUMN PROCESS HEADING 'Operating System|Process Number' FORMAT A20
COLUMN PROCESS_NAME HEADING 'Process|Name' 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 '%Capture%';
出力は次のようになります。
Session
Serial Operating System Process
Capture Process Component Session ID Number Process Number Name
------------------------- ---------- --------- -------------------- -------
EMDBA$CAP - Capture 74 9 10019 CP01
この項で説明する問合せを実行すると、データベース内の各取得プロセスに関する次の情報が表示されます。
取得プロセスの名前。
プロセス番号CPnn(nnは文字および数字)。
セッション識別子。
セッションのシリアル番号。
取得プロセスの現在の状態
「取得プロセスの状態」を参照してください。
詳細なルール評価のためにLogMinerから取得プロセスに渡されたREDOエントリの合計数。取得プロセスでREDOエントリがメッセージに変換され、取得プロセスの事前フィルタ処理で変更を廃棄できない場合、メッセージの詳細なルール評価が行われます。
取得プロセスが最後に起動されてからエンキューされたLCRの合計数。
データベースの各取得プロセスに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture|Name' FORMAT A7
COLUMN PROCESS_NAME HEADING 'Capture|Process|Number' FORMAT A7
COLUMN SID HEADING 'Session|ID' FORMAT 9999
COLUMN SERIAL# HEADING 'Session|Serial|Number' FORMAT 9999
COLUMN STATE HEADING 'State' FORMAT A20
COLUMN TOTAL_MESSAGES_CAPTURED HEADING 'Redo|Entries|Evaluated|In Detail' FORMAT 9999999
COLUMN TOTAL_MESSAGES_ENQUEUED HEADING 'Total|LCRs|Enqueued' FORMAT 9999999999
SELECT c.CAPTURE_NAME,
SUBSTR(s.PROGRAM,INSTR(s.PROGRAM,'(')+1,4) PROCESS_NAME,
c.SID,
c.SERIAL#,
c.STATE,
c.TOTAL_MESSAGES_CAPTURED,
c.TOTAL_MESSAGES_ENQUEUED
FROM V$STREAMS_CAPTURE c, V$SESSION s
WHERE c.SID = s.SID AND
c.SERIAL# = s.SERIAL#;
出力は次のようになります。
Redo
Capture Session Entries Total
Capture Process Session Serial Evaluated LCRs
Name Number ID Number State In Detail Enqueued
------- ------- ------- ------- -------------------- --------- -----------
CAPTURE CP01 954 3 CAPTURING CHANGES 3719085 3389713
_HNS
スキャンされたREDOエントリの数は、取得プロセスによって取得されたDMLおよびDDLのREDOエントリの数より多くなる場合があります。取得プロセスのルール・セットを満たすDMLおよびDDLのREDOエントリのみが取得され、取得プロセスのキューにエンキューされます。また、エンキューされたLCRの合計数には、トランザクション制御文を含むLCRも含まれます。これらの行LCRには、COMMIT、ROLLBACKなどのディレクティブが含まれます。このため、エンキューされたLCRの合計数は、取得プロセスによってエンキューされた行変更およびDDL変更の数より多くなります。
この項で説明する問合せを実行すると、データベース内の各取得プロセスに関する次の情報が表示されます。
取得プロセスの名前。
取得プロセスの現在の状態
「取得プロセスの状態」を参照してください。
取得プロセスの状態が最後に変更された日時。
取得プロセスで最後にLCRが作成された日時。
データベースの各取得プロセスに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture|Name' FORMAT A15
COLUMN STATE HEADING 'State' FORMAT A27
COLUMN STATE_CHANGED HEADING 'State|Change Time'
COLUMN CREATE_MESSAGE HEADING 'Last Message|Create Time'
SELECT CAPTURE_NAME,
STATE,
TO_CHAR(STATE_CHANGED_TIME, 'HH24:MI:SS MM/DD/YY') STATE_CHANGED,
TO_CHAR(CAPTURE_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY') CREATE_MESSAGE
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Capture State Last Message Name State Change Time Create Time --------------- --------------------------- ----------------- ----------------- CAPTURE_SIMP CAPTURING CHANGES 13:24:42 11/08/04 13:24:41 11/08/04
この項で説明する問合せを実行すると、データベース内の各取得プロセスに関する次の情報が表示されます。
取得プロセスの名前。
取得の経過時間。取得プロセスが最後に起動されてから、REDOログ内の変更のスキャンにかかった時間(秒)を示します。
ルール評価の経過時間。取得プロセスが最後に起動されてから、ルール評価にかかった時間(秒)を示します。
エンキューの経過時間。取得プロセスが最後に起動されてから、メッセージのエンキューにかかった時間(秒)を示します。
LCR作成の経過時間。取得プロセスが最後に起動されてから、論理変更レコード(LCR)の作成にかかった時間(秒)を示します。
停止の経過時間。取得プロセスが最後に起動されてから、フロー制御のために停止した時間(秒)を示します。
|
注意: この問合せに関するすべての時間は秒単位で表示されます。デフォルトでは、V$STREAMS_CAPTUREビューには経過時間がセンチセカンドで表示されます。センチセカンドは、100分の1秒です。この項で説明する問合せを実行すると、各経過時間が100で割られ、秒単位で表示されます。 |
データベースの各取得プロセスに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture|Name' FORMAT A15
COLUMN ELAPSED_CAPTURE_TIME HEADING 'Elapsed|Capture|Time' FORMAT 99999999.99
COLUMN ELAPSED_RULE_TIME HEADING 'Elapsed|Rule|Evaluation|Time' FORMAT 99999999.99
COLUMN ELAPSED_ENQUEUE_TIME HEADING 'Elapsed|Enqueue|Time' FORMAT 99999999.99
COLUMN ELAPSED_LCR_TIME HEADING 'Elapsed|LCR|Creation|Time' FORMAT 99999999.99
COLUMN ELAPSED_PAUSE_TIME HEADING 'Elapsed|Pause|Time' FORMAT 99999999.99
SELECT CAPTURE_NAME,
(ELAPSED_CAPTURE_TIME/100) ELAPSED_CAPTURE_TIME,
(ELAPSED_RULE_TIME/100) ELAPSED_RULE_TIME,
(ELAPSED_ENQUEUE_TIME/100) ELAPSED_ENQUEUE_TIME,
(ELAPSED_LCR_TIME/100) ELAPSED_LCR_TIME,
(ELAPSED_PAUSE_TIME/100) ELAPSED_PAUSE_TIME
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Elapsed Elapsed
Elapsed Rule Elapsed LCR Elapsed
Capture Capture Evaluation Enqueue Creation Pause
Name Time Time Time Time Time
--------------- ------------ ------------ ------------ ------------ ------------
STM1$CAP 1213.92 .04 33.84 185.25 600.60
ダウンストリーム取得とは、ソース・データベース以外のデータベースで実行される取得プロセスのことです。この項で説明する問合せを実行すると、データベース内の各ダウンストリーム取得プロセスに関する次の情報を表示できます。
取得プロセスの名前
取得プロセスで取得された変更のソース・データベース
取得プロセスで使用されるキューの名前
取得プロセスの状態(ENABLED、DISABLEDまたはABORTED)
ダウンストリーム取得プロセスで、ソース・データベースへのデータベース・リンクを使用して管理アクションを実行するかどうか
データベース内の各ダウンストリーム取得プロセスに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture|Process|Name' FORMAT A15
COLUMN SOURCE_DATABASE HEADING 'Source|Database' FORMAT A15
COLUMN QUEUE_NAME HEADING 'Capture|Process|Queue' FORMAT A15
COLUMN STATUS HEADING 'Capture|Process|Status' FORMAT A15
COLUMN USE_DATABASE_LINK HEADING 'Uses|Database|Link?' FORMAT A8
SELECT CAPTURE_NAME,
SOURCE_DATABASE,
QUEUE_NAME,
STATUS,
USE_DATABASE_LINK
FROM DBA_CAPTURE
WHERE CAPTURE_TYPE = 'DOWNSTREAM';
出力は次のようになります。
Capture Capture Capture Uses Process Source Process Process Database Name Database Queue Status Link? --------------- -------------------- --------------- --------------- -------- STRM03_CAPTURE DBS1.EXAMPLE.COM STRM03_QUEUE ENABLED YES
この場合、取得プロセスのソース・データベースはdbs1.example.comですが、取得プロセスを実行しているローカル・データベースはdbs1.example.comではありません。また、この問合せで戻される取得プロセスでは、ソース・データベースへのデータベース・リンクを使用して管理アクションを実行します。データベース・リンクの名前は、ソース・データベースのグローバル名(この場合はdbs1.example.com)と同じです。
取得プロセスの状態がABORTEDの場合、DBA_CAPTUREデータ・ディクショナリ・ビューのERROR_NUMBERおよびERROR_MESSAGE列を問い合せると、エラーを特定できます。
|
関連項目:
|
この項で説明する問合せを実行すると、データベース内の各取得プロセスの登録済アーカイブREDOログ・ファイルに関する情報を表示できます。この問合せによって、ローカル取得プロセスおよびダウンストリーム取得プロセスのこれらのファイルに関する情報が表示されます。
この問合せでは、各登録済アーカイブREDOログ・ファイルに関する次の情報が表示されます。
ファイルを使用する取得プロセスの名前
ファイルのソース・データベース
ファイルの順序番号
ローカル・サイトでのファイルの名前および場所
ファイルにデータ・ディクショナリ・ビルドの最初の部分が含まれているかどうか
ファイルにデータ・ディクショナリ・ビルドの最後の部分が含まれているかどうか
データベースの各登録済アーカイブREDOログ・ファイルに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CONSUMER_NAME HEADING 'Capture|Process|Name' FORMAT A15
COLUMN SOURCE_DATABASE HEADING 'Source|Database' FORMAT A10
COLUMN SEQUENCE# HEADING 'Sequence|Number' FORMAT 99999
COLUMN NAME HEADING 'Archived Redo Log|File Name' FORMAT A20
COLUMN DICTIONARY_BEGIN HEADING 'Dictionary|Build|Begin' FORMAT A10
COLUMN DICTIONARY_END HEADING 'Dictionary|Build|End' FORMAT A10
SELECT r.CONSUMER_NAME,
r.SOURCE_DATABASE,
r.SEQUENCE#,
r.NAME,
r.DICTIONARY_BEGIN,
r.DICTIONARY_END
FROM DBA_REGISTERED_ARCHIVED_LOG r, DBA_CAPTURE c
WHERE r.CONSUMER_NAME = c.CAPTURE_NAME;
出力は次のようになります。
Capture Dictionary Dictionary Process Source Sequence Archived Redo Log Build Build Name Database Number File Name Begin End --------------- ---------- -------- -------------------- ---------- ---------- STRM02_CAPTURE DBS2.EXAMP 15 /orc/dbs/log/arch2_1 NO NO LE.COM _15_478347508.arc STRM02_CAPTURE DBS2.EXAMP 16 /orc/dbs/log/arch2_1 NO NO LE.COM _16_478347508.arc STRM03_CAPTURE DBS1.EXAMP 45 /remote_logs/arch1_1 YES YES LE.COM _45_478347335.arc STRM03_CAPTURE DBS1.EXAMP 46 /remote_logs/arch1_1 NO NO LE.COM _46_478347335.arc STRM03_CAPTURE DBS1.EXAMP 47 /remote_logs/arch1_1 NO NO LE.COM _47_478347335.arc
strm02_captureがローカル取得プロセス、strm03_captureがダウンストリーム取得プロセスの場合にこの問合せをdbs2.example.comデータベースで実行したとします。strm03_captureダウンストリーム取得プロセスのソース・データベースはdbs1.example.comです。この問合せによって、strm02_captureの登録済アーカイブREDOログ・ファイルが2つ、strm03_captureの登録済アーカイブREDOログ・ファイルが3つ表示されます。この問合せでは、ローカル・ファイル・システムにおけるこれらの各ファイルの名前および場所が表示されます。
|
関連項目:
|
取得プロセスには、必須チェックポイントSCNが含まれているREDOログ・ファイルおよび後続のすべてのREDOログ・ファイルが必要です。DBA_CAPTUREデータ・ディクショナリ・ビューのREQUIRED_CHECKPOINT_SCN列を問い合せると、取得プロセスの必須チェックポイントSCNを判別できます。必須チェックポイントSCNが含まれているREDOログ・ファイルより前のREDOログ・ファイルは、取得プロセスでは不要になります。これらのREDOログ・ファイルは、他の目的でも不要になるとオフラインで格納できます。後で取得プロセスの開始SCNを小さい値にリセットする場合、これらのREDOログ・ファイルが必要となることがあります。
この問合せでは、必要な各アーカイブREDOログ・ファイルに関する次の情報が表示されます。
ファイルを使用する取得プロセスの名前
ファイルのソース・データベース
ファイルの順序番号
ローカル・サイトでの必要なREDOログ・ファイルの名前および場所
データベース内の必要な各アーカイブREDOログ・ファイルに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CONSUMER_NAME HEADING 'Capture|Process|Name' FORMAT A15
COLUMN SOURCE_DATABASE HEADING 'Source|Database' FORMAT A10
COLUMN SEQUENCE# HEADING 'Sequence|Number' FORMAT 99999
COLUMN NAME HEADING 'Required|Archived Redo Log|File Name' FORMAT A40
SELECT r.CONSUMER_NAME,
r.SOURCE_DATABASE,
r.SEQUENCE#,
r.NAME
FROM DBA_REGISTERED_ARCHIVED_LOG r, DBA_CAPTURE c
WHERE r.CONSUMER_NAME = c.CAPTURE_NAME AND
r.NEXT_SCN >= c.REQUIRED_CHECKPOINT_SCN;
出力は次のようになります。
Capture Required
Process Source Sequence Archived Redo Log
Name Database Number File Name
--------------- ---------- -------- ----------------------------------------
STRM02_CAPTURE DBS2.EXAMP 16 /orc/dbs/log/arch2_1_16_478347508.arc
LE.COM
STRM03_CAPTURE DBS1.EXAMP 47 /remote_logs/arch1_1_47_478347335.arc
LE.COM
この項で説明する問合せを実行すると、データベース内の各取得プロセスの登録済アーカイブREDOログ・ファイルのSCN値に関する情報を表示できます。この問合せによって、ローカル取得プロセスおよびダウンストリーム取得プロセスのこれらのファイルのSCN値に関する情報が表示されます。また、この問合せでは、ローカル・データベースの取得プロセスで不要になったREDOログ・ファイルが識別されます。
この問合せでは、各登録済アーカイブREDOログ・ファイルに関する次の情報が表示されます。
ファイルを使用する取得プロセスの取得プロセス名
ローカル・サイトでのファイルの名前および場所
REDOログ・ファイルに含まれている情報の最小SCN値
連続するREDOログ・ファイルの次のREDOログ・ファイルの最小SCN値
REDOログ・ファイルが消去可能かどうか
データベースの各登録済アーカイブREDOログ・ファイルに関する前述の情報を表示するには、次の問合せを実行します。
COLUMN CONSUMER_NAME HEADING 'Capture|Process|Name' FORMAT A15
COLUMN NAME HEADING 'Archived Redo Log|File Name' FORMAT A25
COLUMN FIRST_SCN HEADING 'First SCN' FORMAT 99999999999
COLUMN NEXT_SCN HEADING 'Next SCN' FORMAT 99999999999
COLUMN PURGEABLE HEADING 'Purgeable?' FORMAT A10
SELECT r.CONSUMER_NAME,
r.NAME,
r.FIRST_SCN,
r.NEXT_SCN,
r.PURGEABLE
FROM DBA_REGISTERED_ARCHIVED_LOG r, DBA_CAPTURE c
WHERE r.CONSUMER_NAME = c.CAPTURE_NAME;
出力は次のようになります。
Capture
Process Archived Redo Log
Name File Name First SCN Next SCN Purgeable?
--------------- ------------------------- ------------ ------------ ----------
CAPTURE_SIMP /private1/ARCHIVE_LOGS/1_ 509686 549100 YES
3_502628294.dbf
CAPTURE_SIMP /private1/ARCHIVE_LOGS/1_ 549100 587296 YES
4_502628294.dbf
CAPTURE_SIMP /private1/ARCHIVE_LOGS/1_ 587296 623107 NO
5_502628294.dbf
すべての取得プロセスに対してPurgeable?がYESに設定されているREDOログ・ファイルは、ローカル・データベースの取得プロセスでは不要です。これらのREDOログ・ファイルは、ローカル・データベースの既存の取得プロセスに影響を与えずに削除できます。1つ以上の取得プロセスに対してPurgeable?がNOに設定されているREDOログ・ファイルは、保持しておく必要があります。
ローカル取得プロセスの場合、使用可能な最後のアーカイブREDOエントリは、オンラインREDOログからアーカイブ・ログ・ファイルに最後にフラッシュされたエントリです。ダウンストリーム取得プロセスの場合、使用可能な最終アーカイブREDOエントリは、取得プロセスで使用されるLogMinerセッションに最後に追加されたアーカイブ・ログ・ファイル内の最新のシステム変更番号(SCN)を持つREDOエントリです。
この項で説明する問合せを実行すると、各取得プロセスで使用可能な最後のREDOエントリに関する次の情報が表示されます。
取得プロセスの名前。
取得プロセスで使用されるLogMinerセッションの識別番号
取得プロセスで使用可能な最大SCN
ローカル取得の場合、このSCNは最後にログ・ファイルにフラッシュされたREDOのSCNです。ダウンストリーム取得の場合、このSCNはアーカイブ・ログによって最後にLogMinerに追加されたSCNです。
取得プロセスで使用可能な最大SCNのタイムスタンプ
ローカル取得の場合、このタイムスタンプはSCNがログ・ファイルに書き込まれた時刻です。ダウンストリーム取得の場合、このタイムスタンプはLogMinerで使用可能な最新のアーカイブ・ログ(最新のSCNが含まれる)の時刻です。
この問合せで表示される情報は、有効になっている取得プロセスに対してのみ有効です。
次の問合せを実行すると、各取得プロセスに関する前述の情報が表示されます。
COLUMN CAPTURE_NAME HEADING 'Capture|Name' FORMAT A20
COLUMN LOGMINER_ID HEADING 'LogMiner ID' FORMAT 9999
COLUMN AVAILABLE_MESSAGE_NUMBER HEADING 'Highest|Available SCN' FORMAT 9999999999
COLUMN AVAILABLE_MESSAGE_CREATE_TIME HEADING 'Time of|Highest|Available SCN'
SELECT CAPTURE_NAME,
LOGMINER_ID,
AVAILABLE_MESSAGE_NUMBER,
TO_CHAR(AVAILABLE_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY')
AVAILABLE_MESSAGE_CREATE_TIME
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Time of
Capture Highest Highest
Name LogMiner ID Available SCN Available SCN
-------------------- ----------- ------------- -----------------
DB1$CAP 1 1506751 09:46:11 06/29/09
次の問合せを実行すると、データベース内の取得プロセスごとの各取得プロセス・パラメータの現行の設定が表示されます。
COLUMN CAPTURE_NAME HEADING 'Capture|Process|Name' FORMAT A25
COLUMN PARAMETER HEADING 'Parameter' FORMAT A30
COLUMN VALUE HEADING 'Value' FORMAT A10
COLUMN SET_BY_USER HEADING 'Set by|User?' FORMAT A10
SELECT CAPTURE_NAME,
PARAMETER,
VALUE,
SET_BY_USER
FROM DBA_CAPTURE_PARAMETERS;
出力は次のようになります。
Capture Process Set by Name Parameter Value User? ------------------------- ------------------------------ ---------- ---------- DA$CAP CAPTURE_IDKEY_OBJECTS N NO DA$CAP CAPTURE_SEQUENCE_NEXTVAL N NO DA$CAP DISABLE_ON_LIMIT N NO DA$CAP DOWNSTREAM_REAL_TIME_MINE Y NO DA$CAP EXCLUDETRANS NO DA$CAP EXCLUDEUSER NO DA$CAP EXCLUDEUSERID NO DA$CAP GETAPPLOPS Y NO DA$CAP GETREPLICATES N NO DA$CAP IGNORE_TRANSACTION NO DA$CAP IGNORE_UNSUPPORTED_TABLE * NO DA$CAP MAXIMUM_SCN INFINITE NO DA$CAP MAX_SGA_SIZE INFINITE NO DA$CAP MERGE_THRESHOLD 60 NO DA$CAP MESSAGE_LIMIT INFINITE NO DA$CAP MESSAGE_TRACKING_FREQUENCY 2000000 NO DA$CAP PARALLELISM 1 NO DA$CAP SKIP_AUTOFILTERED_TABLE_DDL Y NO DA$CAP SPLIT_THRESHOLD 1800 NO DA$CAP STARTUP_SECONDS 0 NO DA$CAP TIME_LIMIT INFINITE NO DA$CAP TRACE_LEVEL 0 NO DA$CAP WRITE_ALERT_LOG Y NO DA$CAP XOUT_CLIENT_EXISTS N NO
|
注意: パラメータのSet by user列がNOの場合、そのパラメータはデフォルト値に設定されます。パラメータのSet by user列がYESの場合、パラメータはユーザーによって設定され、デフォルト値に設定されることもされないこともあります。 |
取得プロセスの適用済システム変更番号(SCN)は、関連する適用プロセスによってデキューされた最新のメッセージのSCNです。この適用済SCNより小さいすべての変更は、取得プロセスによって取得された変更を適用するすべての適用プロセスによってデキューされています。
データベース内のすべての取得プロセスの適用済SCNを表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture Process Name' FORMAT A30 COLUMN APPLIED_SCN HEADING 'Applied SCN' FORMAT 99999999999 SELECT CAPTURE_NAME, APPLIED_SCN FROM DBA_CAPTURE;
出力は次のようになります。
Capture Process Name Applied SCN ------------------------------ ----------- CAPTURE_EMP 177154
この項で説明する問合せを実行すると、各取得プロセスに関する次の情報を検索できます。
REDOログのスキャン待機時間。取得プロセスによってスキャンされた最新のREDOログ・エントリの作成時刻から現在の時刻までの秒数を示します。取得プロセスを起動した直後は、この数値が比較的大きくなる場合があります。
状態が最後に記録されてからの秒数。取得プロセスで最後に状態が記録されてからの秒数を示します。
現行の取得プロセス時刻。取得プロセスで最後に状態が記録された時刻を示します。
メッセージ作成時刻。データ操作言語(DML)またはデータ定義言語(DDL)の変更によって、最新の取得LCRに関するREDOデータがソース・データベースで生成された時刻です。
この問合せで表示される情報は、有効になっている取得プロセスに対してのみ有効です。
次の問合せを実行すると、各取得プロセスのREDOスキャンの待機時間が判別されます。
COLUMN CAPTURE_NAME HEADING 'Capture|Process|Name' FORMAT A10
COLUMN LATENCY_SECONDS HEADING 'Latency|in|Seconds' FORMAT 999999
COLUMN LAST_STATUS HEADING 'Seconds Since|Last Status' FORMAT 999999
COLUMN CAPTURE_TIME HEADING 'Current|Process|Time'
COLUMN CREATE_TIME HEADING 'Message|Creation Time' FORMAT 999999
SELECT CAPTURE_NAME,
((SYSDATE - CAPTURE_MESSAGE_CREATE_TIME)*86400) LATENCY_SECONDS,
((SYSDATE - CAPTURE_TIME)*86400) LAST_STATUS,
TO_CHAR(CAPTURE_TIME, 'HH24:MI:SS MM/DD/YY') CAPTURE_TIME,
TO_CHAR(CAPTURE_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY') CREATE_TIME
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Capture Latency Current Process in Seconds Since Process Message Name Seconds Last Status Time Creation Time ---------- ------- ------------- ----------------- ----------------- DA$CAP 1 1 12:33:39 07/14/10 12:33:39 07/14/10
この問合せで戻される"Latency in Seconds"は、現在の時刻(SYSDATE)と"Message Creation Time"の差です。この問合せで戻される"Seconds Since Last Status"は、現在の時刻(SYSDATE)と"Current Process Time"の差です。
この項で説明する問合せを実行すると、各取得プロセスに関する次の情報を検索できます。
メッセージのエンキュー待機時間。エントリがソース・データベースでREDOログに記録されてから取得プロセスでメッセージがエンキューされるまでの秒数を示します
メッセージ作成時刻。データ操作言語(DML)またはデータ定義言語(DDL)の変更によって、最新のエンキュー済メッセージに関するREDOデータがソース・データベースで生成された時刻を示します
エンキュー時刻。取得プロセスによってメッセージがキューにエンキューされた時刻を示します。
エンキューされたメッセージのメッセージ番号。
この問合せで表示される情報は、有効になっている取得プロセスに対してのみ有効です。
次の問合せを実行すると、各取得プロセスのメッセージの取得待機時間が判別されます。
COLUMN CAPTURE_NAME HEADING 'Capture|Process|Name' FORMAT A10
COLUMN LATENCY_SECONDS HEADING 'Latency|in|Seconds' FORMAT 999999
COLUMN CREATE_TIME HEADING 'Message Creation|Time' FORMAT A20
COLUMN ENQUEUE_TIME HEADING 'Enqueue Time' FORMAT A20
COLUMN ENQUEUE_MESSAGE_NUMBER HEADING 'Message|Number' FORMAT 9999999999
SELECT CAPTURE_NAME,
(ENQUEUE_TIME-ENQUEUE_MESSAGE_CREATE_TIME)*86400 LATENCY_SECONDS,
TO_CHAR(ENQUEUE_MESSAGE_CREATE_TIME, 'HH24:MI:SS MM/DD/YY') CREATE_TIME,
TO_CHAR(ENQUEUE_TIME, 'HH24:MI:SS MM/DD/YY') ENQUEUE_TIME,
ENQUEUE_MESSAGE_NUMBER
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Capture Latency Process in Message Creation Message Name Seconds Time Enqueue Time Number ---------- ------- -------------------- -------------------- ------- CAPTURE 0 10:56:51 03/01/02 10:56:51 03/01/02 253962
この問合せで戻される"Latency in Seconds"は、"Enqueue Time"と"Message Creation Time"の差です。
この項で説明する問合せを実行すると、各取得プロセスのルールの評価に関する情報を表示できます。
取得プロセスの名前。
取得プロセスが最後に起動されてから事前フィルタ処理中に廃棄された変更数。これらの変更が取得プロセスのルール・セットを完全には満たしていないことが、事前フィルタ処理中に取得プロセスによって判定されています。
取得プロセスが最後に起動されてから事前フィルタ処理中に保持された変更数。これらの変更が取得プロセスのルール・セットを完全に満たしていることが、事前フィルタ処理中に取得プロセスによって判定されています。このような変更はLCRに変換され、取得プロセス・キューにエンキューされます。
取得プロセスが最後に起動されてからの事前フィルタ処理評価の合計数。
取得プロセスが最後に起動されてから事前フィルタ処理後に判定されていない変更数。これらの変更は、取得プロセスのルール・セットを満たしている場合も満たしていない場合もあります。一部の変更は、完全評価を必要とせずに、事前フィルタ処理後に実行するフィルタ処理で除外できる場合があります。その他の変更は、完全評価を実行して、取得プロセスのルール・セットを満たしているかどうかを判定する必要があります。
取得プロセスが最後に起動されてからの完全評価の数。完全評価を実行するとコストが高くなる場合があります。したがって、取得プロセスでは、この数が比較的小さい場合に最高のパフォーマンスが実現されます。
この問合せで表示される情報は、有効になっている取得プロセスに対してのみ有効です。
次の問合せを実行すると、各取得プロセスに関する前述の情報が表示されます。
COLUMN CAPTURE_NAME HEADING 'Capture|Name' FORMAT A15
COLUMN TOTAL_PREFILTER_DISCARDED HEADING 'Prefilter|Changes|Discarded'
FORMAT 9999999999
COLUMN TOTAL_PREFILTER_KEPT HEADING 'Prefilter|Changes|Kept' FORMAT 9999999999
COLUMN TOTAL_PREFILTER_EVALUATIONS HEADING 'Prefilter|Evaluations'
FORMAT 9999999999
COLUMN UNDECIDED HEADING 'Undecided|After|Prefilter' FORMAT 9999999999
COLUMN TOTAL_FULL_EVALUATIONS HEADING 'Full|Evaluations' FORMAT 9999999999
SELECT CAPTURE_NAME,
TOTAL_PREFILTER_DISCARDED,
TOTAL_PREFILTER_KEPT,
TOTAL_PREFILTER_EVALUATIONS,
(TOTAL_PREFILTER_EVALUATIONS -
(TOTAL_PREFILTER_KEPT + TOTAL_PREFILTER_DISCARDED)) UNDECIDED,
TOTAL_FULL_EVALUATIONS
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Prefilter Prefilter Undecided
Capture Changes Changes Prefilter After Full
Name Discarded Kept Evaluations Prefilter Evaluations
--------------- ---------- ----------- ----------- ----------- -----------
CAPTURE_HNS 927409 3271491 4198900 0 9
事前フィルタ処理評価の合計数は、事前フィルタ処理で廃棄された変更、保持された変更および判定されなかった変更の合計と等しくなります。
取得プロセスは伝播送信者として動作し、バッファ・キューは変更のレプリケーションがより効率的になるように最適化されるため、取得と適用の複合環境は効率的です。
取得プロセスで取得と適用の複合が使用される場合、V$STREAMS_CAPTUREデータ・ディクショナリ・ビューのOPTIMIZATION列は0(ゼロ)より大きい値です。取得プロセスで取得と適用の複合が使用されない場合、OPTIMIZATION列は0(ゼロ)です。
取得プロセスで取得と適用の複合が使用されるかどうかを判別するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Capture Name' FORMAT A30
COLUMN OPTIMIZATION HEADING 'Optimized?' FORMAT A10
SELECT CAPTURE_NAME,
DECODE(OPTIMIZATION,
0, 'No',
'Yes') OPTIMIZATION
FROM V$STREAMS_CAPTURE;
出力は次のようになります。
Capture Name Optimized? ------------------------------ ---------- CAPTURE_HNS Yes
この出力は、取得プロセスcapture_hnsで取得と適用の複合が使用されていることを示しています。
Oracle Streamsの宛先の分割とマージは、次の条件のときに役立ちます。
単一の取得プロセスによって、複数の適用プロセスに送信される変更が取得されます。
適用プロセスは、取得プロセスによって取得された変更の受入れを停止します。適用プロセスが変更の受入れを停止するのは、たとえば、適用プロセスが無効の場合、適用プロセスが含まれるデータベースが停止する場合、ネットワークの問題がある場合、適用プロセスが含まれるデータベースを実行しているコンピュータ・システムが停止する場合またはその他の理由のときです。
これらの条件が満たされている場合、問題のある宛先のストリームを、他の宛先のストリームから分割してパフォーマンスが低下しないようにすることをお薦めします。問題が修正されたら、分割された宛先のストリームを取得プロセスの他の宛先のストリームにマージできます。
デフォルトでは、分割とマージ操作は、Oracle Streamsが問題のある宛先を検出したときに自動的に実行されます。自動分割とマージ操作は、split_thresholdおよびmerge_thresholdの2つの取得プロセス・パラメータで制御されています。
次の各項では、現在および過去の自動分割とマージ操作を監視するために実行できる問合せについて説明します。
|
注意: この項で説明する問合せを実行すると、自動分割とマージ操作の情報のみが表示されます。これらの問合せでは、DBMS_STREAMS_ADMパッケージのSPLIT_STREAMSプロシージャを使用して手動でストリームを分割する操作に関する情報は表示されません。 |
|
関連項目:
|
この項で説明する問合せを実行すると、分割とマージ操作に関与するOracle Streamsコンポーネントに関する次の情報が表示されます。
宛先のストリームの分割元となった元の取得プロセスの名前
問題のある宛先に関する変更を取得する、クローニングされた取得プロセスの名前
分割されたストリームの一部となっていた元の伝播または適用プロセスの名前
複数データベース構成では、伝播によって取得プロセスのキューから適用プロセスのキューに変更が送信され、伝播がこの問合せで表示されます。単一データベース構成では、適用プロセスによって、取得プロセスが使用するキューから変更がデキューされ、適用プロセスがこの問合せで表示されます。
問題のある宛先に関する変更を処理する、クローニングされた伝播または適用プロセスの名前
取得プロセスから変更を受信するOracle Streamsコンポーネントのタイプ(PROPAGATIONまたはAPPLYのいずれか)
次の問合せを実行すると、前述の情報が表示されます。
COLUMN ORIGINAL_CAPTURE_NAME HEADING 'Original|Capture|Process' FORMAT A15
COLUMN CLONED_CAPTURE_NAME HEADING 'Cloned|Capture|Process' FORMAT A15
COLUMN ORIGINAL_STREAMS_NAME HEADING 'Original|Streams|Name' FORMAT A15
COLUMN CLONED_STREAMS_NAME HEADING 'Cloned|Streams|Name' FORMAT A15
COLUMN STREAMS_TYPE HEADING 'Streams|Type' FORMAT A11
SELECT ORIGINAL_CAPTURE_NAME,
CLONED_CAPTURE_NAME,
ORIGINAL_STREAMS_NAME,
CLONED_STREAMS_NAME,
STREAMS_TYPE
FROM DBA_STREAMS_SPLIT_MERGE;
出力は次のようになります。
Original Cloned Original Cloned
Capture Capture Streams Streams Streams
Process Process Name Name Type
--------------- --------------- --------------- --------------- -----------
DB$CAP CLONED$_DB$CAP_ PROPAGATION$_17 CLONED$_PROPAGA PROPAGATION
1 TION$_17_2
|
関連項目: 分割とマージ操作の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
この項で説明する問合せを実行すると、分割とマージ操作によって実行されるアクション、および問題のある宛先を分割およびマージするために設定されたしきい値に関する次の情報が表示されます。
宛先のストリームの分割元となった元の取得プロセスの名前
分割またはマージ・ジョブのスクリプト・ステータス(GENERATING、NOT EXECUTED、EXECUTING、EXECUTEDまたはERRORのいずれか)
ジョブによって実行されたアクションのタイプ(SPLIT、MERGEまたはMONITORのいずれか)
分割の実行が必要であることがSPLITジョブによって判断された場合、SPLITアクション・タイプを持つ行がDBA_STREAMS_SPLIT_MERGEビューに挿入されます。
分割操作が完了すると、SPLITアクション・タイプ行がDBA_STREAMS_SPLIT_MERGE_HISTビューにコピーされ、MERGEジョブが作成されます。MERGEアクション・タイプの行がDBA_STREAMS_SPLIT_MERGEビューに挿入されます。マージ操作が完了すると、MERGEアクション・タイプ行がDBA_STREAMS_SPLIT_MERGE_HISTビューに移動し、SPLITアクション・タイプ行がDBA_STREAMS_SPLIT_MERGEビューから削除されます。SPLITアクション・タイプ行は以前にDBA_STREAMS_SPLIT_MERGE_HISTビューにコピーされています。
元の各取得プロセスには、そのすべての宛先を監視するSPLITジョブがあります。このタイプのジョブでは、DBA_STREAMS_SPLIT_MERGEビュー内の行のMONITORアクション・タイプが表示されます。MONITORアクション・タイプ行は、SPLITジョブが無効の場合にのみDBA_STREAMS_SPLIT_MERGE_HISTビューに移動します。SPLITジョブは、split_threshold取得プロセス・パラメータをINFINITEに設定するか、または取得プロセスを削除することによって無効にできます。
操作に対して設定されている取得プロセス・パラメータのしきい値(秒単位)
SPLITジョブの場合、しきい値はsplit_threshold取得プロセス・パラメータで設定されます。MERGEジョブの場合、しきい値はmerge_threshold取得プロセス・パラメータで設定されます。
アクションのステータス
SPLITアクションの場合、ステータスはSPLITTING、SPLIT DONEまたはERRORのいずれかです。SPLITTINGステータスは、分割操作が実行中であることを示します。SPLIT DONEステータスは、分割操作が完了していることを示します。ERRORステータスは、分割操作中にエラーが返されたことを示します。
MERGEアクションの場合、ステータスはNOTHING TO MERGE、MERGING、MERGE DONEまたはERRORのいずれかです。NOTHING TO MERGEステータスは、分割は実行されたものの分割済ストリームのマージ準備がまだできていないことを示します。MERGINGステータスは、マージ操作が実行中であることを示します。MERGE DONEステータスは、マージ操作が完了していることを示します。ERRORステータスは、マージ操作中にエラーが返されたことを示します。
MONITORアクションの場合、ステータスはSPLITおよびMERGEステータス値のいずれかです。また、MONITORアクションでは、そのステータスに関してNOTHING TO SPLITまたはNONSPLITTABLEが表示されることがあります。NOTHING TO SPLITステータスは、取得プロセスから送られるストリームがすべての宛先で処理中であり、分割できるストリームがないことを示します。NONSPLITTABLEステータスは、取得プロセスのストリームを分割できないことを示します。NONSPLITTABLEステータスが表示される可能性があるのは次の場合です。
取得プロセスが無効または中断されています。
取得プロセスのキューに、取得プロセスに加えて少なくとも1つのパブリッシャがあります。追加のパブリッシャは、別の取得プロセスまたはメッセージをキューに送信する伝播であることがあります。
取得プロセスにある宛先が1つのみです。分割とマージ操作は、取得プロセスによって取得される変更に複数の宛先が存在する場合にのみ可能です。
ジョブ・ステータスが最後に更新されたときの日時
次の問合せを実行すると、前述の情報が表示されます。
COLUMN ORIGINAL_CAPTURE_NAME HEADING 'Original|Capture|Process' FORMAT A10
COLUMN SCRIPT_STATUS HEADING 'Script|Status' FORMAT A12
COLUMN ACTION_TYPE HEADING 'Action|Type' FORMAT A7
COLUMN ACTION_THRESHOLD HEADING 'Action|Threshold' FORMAT A15
COLUMN STATUS HEADING 'Status' FORMAT A16
COLUMN STATUS_UPDATE_TIME HEADING 'Status|Update|Time' FORMAT A15
SELECT ORIGINAL_CAPTURE_NAME,
SCRIPT_STATUS,
ACTION_TYPE,
ACTION_THRESHOLD,
STATUS,
STATUS_UPDATE_TIME
FROM DBA_STREAMS_SPLIT_MERGE
ORDER BY STATUS_UPDATE_TIME DESC;
出力は次のようになります。
Original Status
Capture Script Action Action Update
Process Status Type Threshold Status Time
---------- ------------ ------- --------------- ---------------- ---------------
DB$CAP EXECUTED SPLIT 1800 SPLIT DONE 31-MAR-09 01.31
.37.133788 PM
|
関連項目:
|
問題のある宛先に関して、取得プロセスからストリームが分割された後、宛先での問題を修正し、クローニングされた取得プロセスが有効になっていることを確認する必要があります。クローニングされた取得プロセスが問題のある宛先に変更を送信しており、問題のある宛先で適用プロセスがこれらの変更を適用していると、Oracle Schedulerジョブはそのスケジュールに従ってMERGE_STREAMS_JOBプロシージャを実行します。
MERGE_STREAMS_JOBプロシージャはGV$STREAMS_CAPTUREビューのCAPTURE_MESSAGE_CREATE_TIMEを問い合せます。クローニングされた取得プロセスと元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIMEでの違いがmerge_threshold取得プロセス・パラメータの値以下の場合、MERGE_STREAMS_JOBプロシージャはストリームのマージ準備が整っていると判断します。MERGE_STREAMS_JOBプロシージャは、自動的にMERGE_STREAMSを実行し、ストリームをマージします。
DBA_STREAMS_SPLIT_MERGEビューのLAG列では、クローニングされた取得プロセスが元の取得プロセスから遅延している時間を秒単位で追跡します。次の問合せでタイム・ラグが表示されます。
COLUMN ORIGINAL_CAPTURE_NAME HEADING 'Original Capture Process' FORMAT A25
COLUMN CLONED_CAPTURE_NAME HEADING 'Cloned Capture Process' FORMAT A25
COLUMN LAG HEADING 'Lag' FORMAT 999999999999999
SELECT ORIGINAL_CAPTURE_NAME,
CLONED_CAPTURE_NAME,
LAG
FROM DBA_STREAMS_SPLIT_MERGE;
出力は次のようになります。
Original Capture Process Cloned Capture Process Lag ------------------------- ------------------------- ---------------- DB$CAP CLONED$_DB$CAP_1 526
MERGE_STREAMS_JOBが実行され、タイム・ラグがmerge_threshold取得プロセス・パラメータの値以下の場合は、マージ操作が開始されます。
|
関連項目: 分割とマージ操作の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
この項で説明する問合せを実行すると、分割とマージ・ジョブに関する次の情報が表示されます。
宛先のストリームの分割元となった元の取得プロセスの名前
ジョブの所有者
ジョブの名前
ジョブの現在の状態(DISABLED、RETRY SCHEDULED、SCHEDULED、RUNNING、COMPLETED、BROKEN、FAILED、REMOTE、SUCCEEDEDまたはCHAIN_STALLEDのいずれか)
これらのジョブの状態の詳細は、『Oracle Database管理者ガイド』を参照してください。
ジョブが次に実行される日時
次の問合せを実行すると、前述の情報が表示されます。
COLUMN ORIGINAL_CAPTURE_NAME HEADING 'Original|Capture|Process' FORMAT A10
COLUMN JOB_OWNER HEADING 'Job Owner' FORMAT A10
COLUMN JOB_NAME HEADING 'Job Name' FORMAT A15
COLUMN JOB_STATE HEADING 'Job State' FORMAT A15
COLUMN JOB_NEXT_RUN_DATE HEADING 'Job Next|Run Date' FORMAT A20
SELECT ORIGINAL_CAPTURE_NAME,
JOB_OWNER,
JOB_NAME,
JOB_STATE,
JOB_NEXT_RUN_DATE
FROM DBA_STREAMS_SPLIT_MERGE;
出力は次のようになります。
Original
Capture Job Next
Process Job Owner Job Name Job State Run Date
---------- ---------- --------------- --------------- --------------------
DB$CAP SYS STREAMS_SPLITJO SCHEDULED 01-APR-09 01.14.55.0
B$_3 00000 PM -07:00
DB$CAP SYS STREAMS_MERGEJO SCHEDULED 01-APR-09 01.17.08.0
B$_6 00000 PM -07:00
|
関連項目: 分割とマージ操作の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
この項で説明する問合せを実行すると、過去に実行された分割とマージ操作に関する次の履歴情報が表示されます。
宛先のストリームの分割元となった元の取得プロセスの名前
分割またはマージ・ジョブのスクリプト・ステータス
ジョブによって実行されたアクションのタイプ(SPLITまたはMERGEのいずれか)
ジョブによって実行されたアクションのステータス
ステータス値の詳細は、「分割とマージ操作のアクションおよびしきい値の表示」を参照してください。
ジョブの所有者
ジョブの名前
リカバリ可能なスクリプトID
次の問合せを実行すると、前述の情報が表示されます。
COLUMN ORIGINAL_CAPTURE_NAME HEADING 'Original|Capture|Process' FORMAT A8
COLUMN SCRIPT_STATUS HEADING 'Script|Status' FORMAT A12
COLUMN ACTION_TYPE HEADING 'Action|Type' FORMAT A8
COLUMN STATUS HEADING 'Status' FORMAT A10
COLUMN JOB_OWNER HEADING 'Job Owner' FORMAT A10
COLUMN JOB_NAME HEADING 'Job Name' FORMAT A10
COLUMN RECOVERABLE_SCRIPT_ID HEADING 'Recoverable|Script ID' FORMAT A15
SELECT ORIGINAL_CAPTURE_NAME,
SCRIPT_STATUS,
ACTION_TYPE,
STATUS,
JOB_OWNER,
JOB_NAME,
RECOVERABLE_SCRIPT_ID
FROM DBA_STREAMS_SPLIT_MERGE_HIST;
出力は次のようになります。
Original
Capture Script Action Recoverable
Process Status Type Status Job Owner Job Name Script ID
-------- ------------ -------- ---------- ---------- ---------- ---------------
DB1$CAP EXECUTED SPLIT SPLIT DONE SYS STREAMS_SP 6E5C6C49CDB5798
LITJOB$_9 3E040578C891704
87
DB1$CAP EXECUTED MERGE MERGE DONE SYS STREAMS_ME 6E5BA57554F1C4C
RGEJOB$_12 3E040578C89170A
1F
|
関連項目: 分割とマージ操作の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
次の各項では、ソース・データベースでのサプリメンタル・ロギングを監視するために実行できる問合せについて説明します。
データベースでのサプリメンタル・ロギングの合計は、これらの項で説明する3つすべての問合せで表示される結果の組合せによって決定されます。たとえば、サプリメンタル・ロギングは、表に関して「ソース・データベースでのサプリメンタル・ログ・グループの表示」の項の問合せで結果がまったく返されない場合であっても、表内の列に対して有効にできます。つまり、データベース・サプリメンタル・ロギングが有効になっている場合、またはインスタンス化の準備中にサプリメンタル・ロギングが有効にされたスキーマ内に表がある場合は、表に対してサプリメンタル・ロギングを有効にできます。
サプリメンタル・ロギングでは、操作が実行されたときにREDOログに列データが配置されます。取得プロセスは、この追加情報を取得し、LCRに配置します。これらの取得LCRを適用する適用プロセスは、変更を正しくスケジュールまたは適用するためにこの追加情報を必要とする場合があります。
ソース・データベースで表に対して1つ以上のログ・グループが指定されているかどうかをチェックするには、次の問合せを実行します。
COLUMN LOG_GROUP_NAME HEADING 'Log Group' FORMAT A20
COLUMN TABLE_NAME HEADING 'Table' FORMAT A15
COLUMN ALWAYS HEADING 'Conditional or|Unconditional' FORMAT A14
COLUMN LOG_GROUP_TYPE HEADING 'Type of Log Group' FORMAT A20
SELECT
LOG_GROUP_NAME,
TABLE_NAME,
DECODE(ALWAYS,
'ALWAYS', 'Unconditional',
'CONDITIONAL', 'Conditional') ALWAYS,
LOG_GROUP_TYPE
FROM DBA_LOG_GROUPS;
出力は次のようになります。
Conditional or
Log Group Table Unconditional Type of Log Group
-------------------- --------------- -------------- --------------------
LOG_GROUP_DEP_PK DEPARTMENTS Unconditional USER LOG GROUP
SYS_C002105 REGIONS Unconditional PRIMARY KEY LOGGING
SYS_C002106 REGIONS Conditional FOREIGN KEY LOGGING
SYS_C002110 LOCATIONS Unonditional ALL COLUMN LOGGING
SYS_C002111 COUNTRIES Conditional ALL COLUMN LOGGING
LOG_GROUP_JOBS_CR JOBS Conditional USER LOG GROUP
ログ・グループのタイプの出力で、ログ・グループの作成方法が表示される場合は、次のようになります。
出力がUSER LOG GROUPの場合、ログ・グループはALTER TABLE文のADD SUPPLEMENTAL LOG GROUP句を使用して作成されました。
それ以外の場合、ログ・グループは、ALTER TABLE文のADD SUPPLEMENTAL LOG DATA句を使用して作成されました。
ログ・グループのタイプがUSER LOG GROUPの場合は、DBA_LOG_GROUP_COLUMNSデータ・ディクショナリ・ビューを問い合せることによって、ログ・グループ内の列をリストできます。
|
注意: ログ・グループのタイプがUSER LOG GROUPではない場合、DBA_LOG_GROUP_COLUMNSデータ・ディクショナリ・ビューには、ログ・グループ内の列に関する情報は含まれません。かわりに、表に対して操作が実行されたときに正しい列が補足的にログに記録されます。たとえば、ログ・グループのタイプがPRIMARY KEY LOGGINGの場合、表に対して変更が実行されたときに現在の主キー列がログに記録されます。 |
データベース・サプリメンタル・ロギングの指定を表示するには、次に示す例のように、V$DATABASE動的パフォーマンス・ビューを問い合せます。
COLUMN log_min HEADING 'Minimum|Supplemental|Logging?' FORMAT A12
COLUMN log_pk HEADING 'Primary Key|Supplemental|Logging?' FORMAT A12
COLUMN log_fk HEADING 'Foreign Key|Supplemental|Logging?' FORMAT A12
COLUMN log_ui HEADING 'Unique|Supplemental|Logging?' FORMAT A12
COLUMN log_all HEADING 'All Columns|Supplemental|Logging?' FORMAT A12
SELECT SUPPLEMENTAL_LOG_DATA_MIN log_min,
SUPPLEMENTAL_LOG_DATA_PK log_pk,
SUPPLEMENTAL_LOG_DATA_FK log_fk,
SUPPLEMENTAL_LOG_DATA_UI log_ui,
SUPPLEMENTAL_LOG_DATA_ALL log_all
FROM V$DATABASE;
出力は次のようになります。
Minimum Primary Key Foreign Key Unique All Columns Supplemental Supplemental Supplemental Supplemental Supplemental Logging? Logging? Logging? Logging? Logging? ------------ ------------ ------------ ------------- ------------ YES YES YES YES NO
これらの結果では、データベース内のすべての表に関して、最小列、主キー列、外部キー列および一意キー列が補足的にログに記録されていることが示されます。一意キー列は補足的にログに記録されるため、ビットマップ索引列も補足的にログに記録されます。ただし、すべての列が補足的にログに記録されるわけではありません。
サプリメンタル・ロギングは、データベース・オブジェクトのインスタンス化の準備がDBMS_CAPTURE_ADMパッケージの3つのプロシージャのうちの1つを使用して行われた場合に有効にできます。データ・ディクショナリ・ビューでは、PREPARE_TABLE_INSTANTIATION、PREPARE_SCHEMA_INSTANTIATIONおよびPREPARE_GLOBAL_INSTANTIATIONのプロシージャのいずれかによって有効にされたサプリメンタル・ロギングが表示されます。
DBA_CAPTURE_PREPARED_TABLESビューでは、PREPARE_TABLE_INSTANTIATIONプロシージャによって有効にされたサプリメンタル・ロギングが表示されます。
DBA_CAPTURE_PREPARED_SCHEMASビューでは、PREPARE_SCHEMA_INSTANTIATIONプロシージャによって有効にされたサプリメンタル・ロギングが表示されます。
DBA_CAPTURE_PREPARED_DATABASEビューでは、PREPARE_GLOBAL_INSTANTIATIONプロシージャによって有効にされたサプリメンタル・ロギングが表示されます。
これらのビューにはそれぞれ次の列があります。
SUPPLEMENTAL_LOG_DATA_PKでは、主キーのサプリメンタル・ロギングがプロシージャによって有効にされたかどうかが表示されます。
SUPPLEMENTAL_LOG_DATA_UIでは、一意キーおよびビットマップ索引のサプリメンタル・ロギングがプロシージャによって有効にされたかどうかが表示されます。
SUPPLEMENTAL_LOG_DATA_FKでは、外部キーのサプリメンタル・ロギングがプロシージャによって有効にされたかどうかが表示されます。
SUPPLEMENTAL_LOG_DATA_ALLでは、すべての列のサプリメンタル・ロギングがプロシージャによって有効にされたかどうかが表示されます。
これらの列にはそれぞれ次の値のいずれかが表示されます。
IMPLICITは、関連プロシージャによって列のサプリメンタル・ロギングが有効にされたことを示します。
EXPLICITは、ALTER TABLEまたはALTER DATABASE文でADD SUPPLEMENTAL LOG DATA句を使用して手動で列のサプリメンタル・ロギングが有効にされたことを示します。
NOは、準備プロシージャ、またはALTER TABLEまたはALTER DATABASE文でADD SUPPLEMENTAL LOG DATA句を使用して、列のサプリメンタル・ロギングが有効にされていないことを示します。列のサプリメンタル・ロギングが有効にされていない可能性があります。ただし、サプリメンタル・ロギングが、別のレベル(表、スキーマまたはデータベース)で有効にされているか、またはALTER TABLE文でADD SUPPLEMENTAL LOG GROUP句を使用して有効にされている場合があります。
次の各項では、これらのプロシージャで有効にされたサプリメンタル・ロギングを表示する問合せについて説明します。
次の問合せを実行すると、hrスキーマの表に対してPREPARE_TABLE_INSTANTIATIONプロシージャを使用して有効にされたサプリメンタル・ロギングが表示されます。
COLUMN TABLE_NAME HEADING 'Table Name' FORMAT A15
COLUMN log_pk HEADING 'Primary Key|Supplemental|Logging' FORMAT A12
COLUMN log_fk HEADING 'Foreign Key|Supplemental|Logging' FORMAT A12
COLUMN log_ui HEADING 'Unique|Supplemental|Logging' FORMAT A12
COLUMN log_all HEADING 'All Columns|Supplemental|Logging' FORMAT A12
SELECT TABLE_NAME,
SUPPLEMENTAL_LOG_DATA_PK log_pk,
SUPPLEMENTAL_LOG_DATA_FK log_fk,
SUPPLEMENTAL_LOG_DATA_UI log_ui,
SUPPLEMENTAL_LOG_DATA_ALL log_all
FROM DBA_CAPTURE_PREPARED_TABLES
WHERE TABLE_OWNER = 'HR';
出力は次のようになります。
Primary Key Foreign Key Unique All Columns
Supplemental Supplemental Supplemental Supplemental
Table Name Logging Logging Logging Logging
--------------- ------------ ------------ -------------- ------------
COUNTRIES NO NO NO NO
REGIONS IMPLICIT IMPLICIT IMPLICIT NO
DEPARTMENTS IMPLICIT IMPLICIT IMPLICIT NO
LOCATIONS EXPLICIT NO NO NO
EMPLOYEES NO NO NO IMPLICIT
JOB_HISTORY NO NO NO NO
JOBS NO NO NO NO
これらの結果では次の内容が表示されます。
PREPARE_TABLE_INSTANTIATIONプロシージャによって、hr.regionsおよびhr.departments表の主キー、一意キー、ビットマップ索引および外部キーの列に対してサプリメンタル・ロギングが有効にされています。
PREPARE_TABLE_INSTANTIATIONプロシージャによって、hr.employees表のすべての列に対してサプリメンタル・ロギングが有効にされています。
ALTER TABLE文でADD SUPPLEMENTAL LOG DATA句を使用して、hr.locations表に対して主キーのサプリメンタル・ロギングが有効にされています。
|
注意: 問合せでWHERE句を省略すると、データベース内のすべての表の情報がリストされます。 |
次の問合せを実行すると、PREPARE_SCHEMA_INSTANTIATIONプロシージャによって有効にされたサプリメンタル・ロギングが表示されます。
COLUMN SCHEMA_NAME HEADING 'Schema Name' FORMAT A20
COLUMN log_pk HEADING 'Primary Key|Supplemental|Logging' FORMAT A12
COLUMN log_fk HEADING 'Foreign Key|Supplemental|Logging' FORMAT A12
COLUMN log_ui HEADING 'Unique|Supplemental|Logging' FORMAT A12
COLUMN log_all HEADING 'All Columns|Supplemental|Logging' FORMAT A12
SELECT SCHEMA_NAME,
SUPPLEMENTAL_LOG_DATA_PK log_pk,
SUPPLEMENTAL_LOG_DATA_FK log_fk,
SUPPLEMENTAL_LOG_DATA_UI log_ui,
SUPPLEMENTAL_LOG_DATA_ALL log_all
FROM DBA_CAPTURE_PREPARED_SCHEMAS;
出力は次のようになります。
Primary Key Foreign Key Unique All Columns
Supplemental Supplemental Supplemental Supplemental
Schema Name Logging Logging Logging Logging
-------------------- ------------ ------------ -------------- ------------
HR NO NO NO IMPLICIT
OE IMPLICIT IMPLICIT IMPLICIT NO
これらの結果では次の内容が表示されます。
PREPARE_SCHEMA_INSTANTIATIONプロシージャによって、hrスキーマ内の表のすべての列に対してサプリメンタル・ロギングが有効にされています。
PREPARE_SCHEMA_INSTANTIATIONプロシージャによって、oeスキーマ内の表の主キー、一意キー、ビットマップ索引および外部キーの列に対してサプリメンタル・ロギングが有効にされています。
次の問合せを実行すると、PREPARE_GLOBAL_INSTANTIATIONプロシージャによって有効にされたサプリメンタル・ロギングが表示されます。
COLUMN log_pk HEADING 'Primary Key|Supplemental|Logging' FORMAT A12
COLUMN log_fk HEADING 'Foreign Key|Supplemental|Logging' FORMAT A12
COLUMN log_ui HEADING 'Unique|Supplemental|Logging' FORMAT A12
COLUMN log_all HEADING 'All Columns|Supplemental|Logging' FORMAT A12
SELECT SUPPLEMENTAL_LOG_DATA_PK log_pk,
SUPPLEMENTAL_LOG_DATA_FK log_fk,
SUPPLEMENTAL_LOG_DATA_UI log_ui,
SUPPLEMENTAL_LOG_DATA_ALL log_all
FROM DBA_CAPTURE_PREPARED_DATABASE;
出力は次のようになります。
Primary Key Foreign Key Unique All Columns Supplemental Supplemental Supplemental Supplemental Logging Logging Logging Logging ------------ ------------ -------------- ------------ IMPLICIT IMPLICIT IMPLICIT NO
これらの結果では、PREPARE_GLOBAL_INSTANTIATIONプロシージャによって、データベース内のすべての表の主キー、一意キー、ビットマップ索引および外部キーの列に対してサプリメンタル・ロギングが有効にされていることが示されます。
この項では、Oracle Streamsの同期取得の監視に使用できる問合せの例を示します。
この項の内容は次のとおりです。
|
関連項目:
|
この項で説明する問合せを実行すると、データベース内の各同期取得に関する次の情報を表示できます。
同期取得の名前
同期取得で使用されるキューの名前
同期取得で使用されるポジティブ・ルール・セットの名前
同期取得の取得ユーザー
データベース内の各同期取得に関する一般情報を表示するには、次の問合せを実行します。
COLUMN CAPTURE_NAME HEADING 'Synchronous|Capture Name' FORMAT A20 COLUMN QUEUE_NAME HEADING 'Synchronous|Capture Queue' FORMAT A20 COLUMN RULE_SET_NAME HEADING 'Positive Rule Set' FORMAT A20 COLUMN CAPTURE_USER HEADING 'Capture User' FORMAT A15 SELECT CAPTURE_NAME, QUEUE_NAME, RULE_SET_NAME, CAPTURE_USER FROM DBA_SYNC_CAPTURE;
出力は次のようになります。
Synchronous Synchronous Capture Name Capture Queue Positive Rule Set Capture User -------------------- -------------------- -------------------- --------------- SYNC01_CAPTURE STRM01_QUEUE RULESET$_21 STRMADMIN SYNC02_CAPTURE STRM02_QUEUE SYNC02_RULE_SET HR
ローカル・データベースの同期取得によってDML変更が取得される表は、DBA_SYNC_CAPTURE_TABLESビューに表示されます。DBA_STREAMS_TABLE_RULESビューには、各同期取得の名前および各同期取得で使用されるルールに関する情報が含まれています。この項で説明する問合せを実行すると、次の情報を表示できます。
各同期取得の名前。
同期取得で使用されるルールの名前。
ルールが適用されるサブセット化操作のタイプ(ルールがサブセット・ルールの場合)。
各ルールで指定されている各表の所有者。
各ルールで指定されている各表の名前。
同期取得が表に対して有効または無効のいずれになっているか。表に対して同期取得が有効になっている場合、表に対して行われたDML変更は同期取得によって取得されます。表に対して同期取得が有効になっていない場合、表に対して行われたDML変更は同期取得によって取得されません。
これらの情報を表示するには、次の問合せを実行します。
COLUMN STREAMS_NAME HEADING 'Synchronous|Capture Name' FORMAT A15
COLUMN RULE_NAME HEADING 'Rule Name' FORMAT A15
COLUMN SUBSETTING_OPERATION HEADING 'Subsetting|Operation' FORMAT A10
COLUMN TABLE_OWNER HEADING 'Table|Owner' FORMAT A10
COLUMN TABLE_NAME HEADING 'Table Name' FORMAT A15
COLUMN ENABLED HEADING 'Enabled?' FORMAT A8
SELECT r.STREAMS_NAME,
r.RULE_NAME,
r.SUBSETTING_OPERATION,
t.TABLE_OWNER,
t.TABLE_NAME,
t.ENABLED
FROM DBA_STREAMS_TABLE_RULES r,
DBA_SYNC_CAPTURE_TABLES t
WHERE r.STREAMS_TYPE = 'SYNC_CAPTURE' AND
r.TABLE_OWNER = t.TABLE_OWNER AND
r.TABLE_NAME = t.TABLE_NAME;
出力は次のようになります。
Synchronous Subsetting Table Capture Name Rule Name Operation Owner Table Name Enabled? --------------- --------------- ---------- ---------- --------------- -------- SYNC01_CAPTURE EMPLOYEES20 HR EMPLOYEES YES SYNC02_CAPTURE DEPARTMENTS24 DELETE HR DEPARTMENTS YES SYNC02_CAPTURE DEPARTMENTS23 UPDATE HR DEPARTMENTS YES SYNC02_CAPTURE DEPARTMENTS22 INSERT HR DEPARTMENTS YES
この出力は、表hr.employeesに対して行われたDML変更が同期取得sync01_captureによって取得されることを示しています。また、この出力は、表hr.departmentsに対して行われた変更のサブセットが同期取得sync02_captureによって取得されることも示しています。
表のENABLED列にNOが表示されている場合、この表に対する変更は同期取得によっては取得されません。DBMS_STREAMS_ADMパッケージのADD_TABLE_RULESまたはADD_SUBSET_RULES以外のプロシージャによって同期取得のルール・セットに表ルールが追加されると、ENABLED列にNOが表示されます。たとえば、DBMS_RULE_ADMパッケージのADD_RULEプロシージャによって同期取得のルール・セットに表ルールが追加された場合、DBA_SYNC_CAPTURE_TABLESビューを問い合せると表は表示されますが、同期取得によって表に対するDML変更は取得されません。DBA_SYNC_CAPTURE_TABLESビューに、スキーマおよびグローバル・ルールの結果は表示されません。
DBMS_CAPTURE_ADMパッケージのINCLUDE_EXTRA_ATTRIBUTEプロシージャを使用すると、1つ以上の追加属性を取得してLCRに含めるように取得プロセスまたは同期取得に指示できます。次の問合せを実行すると、ローカル・データベースの各取得プロセスによって取得されたLCRに含まれている追加属性が表示されます。
COLUMN CAPTURE_NAME HEADING 'Capture Process or|Synchronous Capture' FORMAT A20 COLUMN ATTRIBUTE_NAME HEADING 'Attribute Name' FORMAT A15 COLUMN INCLUDE HEADING 'Include Attribute in LCRs?' FORMAT A30 SELECT CAPTURE_NAME, ATTRIBUTE_NAME, INCLUDE FROM DBA_CAPTURE_EXTRA_ATTRIBUTES ORDER BY CAPTURE_NAME;
出力は次のようになります。
Capture Process or Attribute Name Include Attribute in LCRs? Synchronous Capture -------------------- --------------- ------------------------------ SYNC_CAPTURE ROW_ID NO SYNC_CAPTURE SERIAL# NO SYNC_CAPTURE SESSION# NO SYNC_CAPTURE THREAD# NO SYNC_CAPTURE TX_NAME YES SYNC_CAPTURE USERNAME NO
この出力に基づいて、取得プロセスまたは同期取得sync_captureでは、取得したLCRにトランザクション名(tx_name)が含められますが、その他の追加属性は含められません。CAPTURE_NAME列によって戻される名前が取得プロセスまたは同期取得のいずれであるかを判別するには、DBA_CAPTUREおよびDBA_SYNC_CAPTUREビューを問い合せます。
|
関連項目:
|