この章では、Oracle Streams環境で全データベースのエクスポート/インポートを実行する手順について説明します。また、Oracle Streams構成を削除する手順についても説明します。
次の各項では、Oracle Streamsの管理タスクについて説明します。
この章で説明する各タスクは、特に明記されていないかぎり、適切な権限を付与されているOracle Streams管理者が完了する必要があります。
この項では、1つ以上のOracle Streams取得プロセス、伝播または適用プロセスが動作するデータベースで、全データベースのエクスポート/インポートを実行する方法について説明します。ここでは、インポート・データベースおよびエクスポート・データベースが異なるコンピュータ上で動作しており、エクスポート・データベースがインポート・データベースで置き換えられる全データベースのエクスポート/インポートに関して説明しています。インポート・データベースのグローバル名とエクスポート・データベースのグローバル名は一致する必要があります。ここに示す手順では、両方のデータベースがすでに存在していると想定しています。
|
注意: 既存のOracle Streams環境にデータベースを追加する場合、この項の指示には従わないでください。かわりに、Oracle Streamsレプリケーション管理者ガイドを参照してください。 |
|
関連項目:
|
次の手順に従って、Oracle Streamsを使用するデータベースで全データベースのエクスポート/インポートを実行します。
エクスポート・データベースに、他のデータベースからの伝播のための宛先キューが含まれる場合、エクスポート・データベースにメッセージを伝播する各伝播を停止します。DBMS_PROPAGATION_ADMパッケージのSTOP_PROPAGATIONプロシージャを使用すると、伝播を停止できます。
手順1で無効化した伝播ジョブで使用されていたデータベース・リンクが、インポート・データベースが動作するコンピュータを指し示すように、ネットワーク構成に必要な変更を加えます。
この手順を実行するには、これらの伝播ジョブで使用されていたデータベース・リンクを再作成するか、またはソース・キューが含まれるデータベースでOracleネットワーキング・ファイルを変更する必要がある場合があります。
エクスポート・データベースに対するデータ操作言語(DML)およびデータ定義言語(DDL)変更を中止するようすべてのユーザーに通知し、これらの変更が中止されるまで待機します。
エクスポート・データベースの現行のシステム変更番号(SCN)を書き留めます。DBMS_FLASHBACKパッケージのGET_SYSTEM_CHANGE_NUMBERファンクションを使用すると、現行のSCNを特定できます。 次に例を示します。
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
current_scn NUMBER;
BEGIN
current_scn:= DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;
DBMS_OUTPUT.PUT_LINE('Current SCN: ' || current_scn);
END;
/
この例では、戻される現行のSCN値を7000000とします。
この手順を実行した後は、エクスポート・データベースで実行中の取得プロセスを停止しないでください。手順7dでは、V$STREAMS_CAPTURE動的パフォーマンス・ビューを使用して、手順3の後にデータベースに対しDMLまたはDDL変更が加えられていないことを確認するよう指示しています。取得プロセスが停止および再起動されると、このビューの取得プロセスに関する情報がリセットされます。
手順7dのチェックを有効にするには、取得プロセスでこの情報がリセットされないことが必要です。取得プロセスが自動的に停止されないようにするには、取得プロセスのmessage_limitおよびtime_limitパラメータがinfinite以外の値に設定されている場合、これらのパラメータをinfiniteに設定する必要があります。
ダウンストリーム取得プロセスによってエクスポート・データベースで行われた変更が取得されている場合は、手順4で特定したSCNを含むログ・ファイルがダウンストリーム・データベースに転送され、取得プロセス・セッションに追加されていることを確認します。この情報を特定できる問合せについては、「各取得プロセスの登録済REDOログ・ファイルの表示」を参照してください。
エクスポート・データベースで適用プロセスが実行されておらず、メッセージが伝播されていない場合は、この時点で全データベースのエクスポートを開始します。必要なOracle Streamsメタデータがエクスポートされるように、FULLエクスポート・パラメータがyに設定されていることを確認します。
エクスポート・データベースで1つ以上の適用プロセスが実行されているか、またはメッセージが伝播されている場合は、エクスポートを開始せずに次の手順に進みます。
エクスポート・データベースが任意の取得プロセスによって取得された変更のソース・データベースの場合は、各取得プロセスに対して次の手順を実行します。
取得プロセスによって、手順4で決定したSCNに対応するREDOレコードがスキャンされるまで待機します。取得プロセスで最後にスキャンされたREDOレコードのSCNは、V$STREAMS_CAPTURE動的パフォーマンス・ビューのCAPTURE_MESSAGE_NUMBER列を問い合せることによって表示できます。次の手順に進む前に、CAPTURE_MESSAGE_NUMBERの値が、手順4で特定したSCN以上であることを確認します。
SQL*Plusで、データベースにOracle Streams管理者として接続します。
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
適用プロセスが、取得データベースからのすべての変更を宛先データベースに適用するまで、Oracle Streams環境を監視します。たとえば、取得プロセスの名前がcapture、適用プロセスの名前がapply、宛先データベースのグローバル名がdest.example.com、手順4での戻りSCN値が7000000の場合は、取得データベースで次の問合せを実行します。
SELECT cap.ENQUEUE_MESSAGE_NUMBER
FROM V$STREAMS_CAPTURE cap
WHERE cap.CAPTURE_NAME = 'CAPTURE' AND
cap.ENQUEUE_MESSAGE_NUMBER IN (
SELECT DEQUEUED_MESSAGE_NUMBER
FROM V$STREAMS_APPLY_READER@dest.example.com reader,
V$STREAMS_APPLY_COORDINATOR@dest.example.com coord
WHERE reader.APPLY_NAME = 'APPLY' AND
reader.DEQUEUED_MESSAGE_NUMBER = reader.OLDEST_SCN_NUM AND
coord.APPLY_NAME = 'APPLY' AND
coord.LWM_MESSAGE_NUMBER = coord.HWM_MESSAGE_NUMBER AND
coord.APPLY# = reader.APPLY#) AND
cap.CAPTURE_MESSAGE_NUMBER >= 7000000;
この問合せで行が戻される場合は、取得データベースからのすべての変更が宛先データベースに適用済で、次の手順に進むことができます。
この問合せの結果が通常より長い時間が経過しても戻されない場合は、ソース・データベースのDBA_CAPTUREビューおよび宛先データベースのDBA_APPLYビューのSTATUS列を問い合せて、環境のOracle Streamsクライアントが有効かどうかを確認します。「伝播ジョブのスケジュールの表示」にある問合せを実行して、伝播の状態を確認できます。
Oracle Streamsクライアントが無効な場合は、再起動します。Oracle Streamsクライアントが再起動されない場合は、第20章「Oracle Streams環境のトラブルシューティング」を参照して、環境に対するトラブルシューティングを実行します。
この問合せでは、取得データベースと宛先データベース間に、Oracle Streams管理者にアクセスできるデータベース・リンクが存在すると想定しています。このようなデータベース・リンクが存在しない場合は、取得データベースおよび宛先データベースで2つの問合せを個別に実行できます。
各取得プロセスのエンキュー・メッセージ番号が、手順4で特定したSCN以下であるかどうか検証します。各取得プロセスのエンキュー・メッセージ番号を表示するには、V$STREAMS_CAPTURE動的パフォーマンス・ビューのENQUEUE_MESSAGE_NUMBER列を問い合せます。
各取得プロセスのエンキュー・メッセージ番号が、手順4で特定したSCN以下である場合は、手順9に進みます。
ただし、いずれかの取得プロセスのエンキュー・メッセージ番号が手順4で特定したSCNを超えている場合は、手順4で特定したSCNより後に1つ以上のDMLまたはDDL変更が加えられており、これらの変更は取得プロセスによって取得およびエンキューされています。この場合は、手順1から、この項のすべての手順を再実行します。
ダウンストリーム取得プロセスがエクスポート・データベースで行われた変更を取得した場合は、これらのダウンストリーム取得プロセスを削除します。ダウンストリーム取得プロセスは、手順14aで再作成します。
エクスポート・データベースに、メッセージを伝播させている伝播が存在する場合は、DBMS_PROPAGATIONパッケージのSTOP_PROPAGATIONプロシージャを使用して、これらの伝播を停止します。
エクスポート・データベースで1つ以上の適用プロセスが実行されているか、またはメッセージが伝播されている場合は、この時点で全データベースのエクスポートを開始します。必要なOracle Streamsメタデータがエクスポートされるように、FULLエクスポート・パラメータがyに設定されていることを確認します。手順6ですでにエクスポートを開始した場合は、手順11に進みます。
エクスポートが完了した後、インポート・データベースが動作しているコンピュータにエクスポート・ダンプ・ファイルを転送します。
全データベースのインポートを実行します。必要なOracle Streamsメタデータがインポートされるように、STREAMS_CONFIGURATIONとFULLインポート・パラメータの両方がyに設定されていることを確認します。STREAMS_CONFIGURATIONインポート・パラメータのデフォルト設定はyです。また、インポート中は、インポート・データベースに対するDMLまたはDDL変更が行われないことを確認してください。
ダウンストリーム取得プロセスがデータベースで行われた変更を取得した場合は、ログ・ファイルがインポート・データベースからダウンストリーム・データベースに転送されるように、必要な変更を行います。手順については、「ダウンストリーム・データベースへのREDOデータの送信準備」を参照してください。
ダウンストリーム取得プロセスを再作成します。
必要に応じて、手順8で削除したダウンストリーム取得プロセスを再作成します。削除したこれらのダウンストリーム取得プロセスでは、エクスポート・データベースで行われた変更が取得されていました。インポート・データベースで行われた変更を取得するように、再作成したダウンストリーム取得プロセスを構成します。
必要に応じて、エクスポート・データベースで実行していたダウンストリーム取得プロセスをインポート・データベースに再作成します。エクスポート・データベースに存在していたダウンストリーム取得プロセスはエクスポートされていません。
ローカル取得プロセスまたはダウンストリーム取得プロセスがデータベースで発生する変更を取得する場合は、インスタンス化のために変更が取得されるデータベース・オブジェクトをインポート・データベースに用意します。データベース・オブジェクトをインスタンス化のために準備する方法は、Oracle Streamsレプリケーション管理者ガイドを参照してください。
ユーザーに対し、インポート・データベースへのアクセスを許可し、エクスポート・データベースを停止します。
手順4で取得プロセスのmessage_limitまたはtime_limitパラメータの値をリセットした場合、インポート・データベースでそのパラメータを元の設定にリセットします。
DBMS_STREAMS_ADMパッケージのREMOVE_STREAMS_CONFIGURATIONプロシージャを実行して、ローカル・データベースのOracle Streams構成を削除します。
|
注意: このプロシージャを実行する場合は注意してください。データベースのOracle Streams構成全体を削除する必要がある場合にのみ、このプロシージャを実行します。 |
ローカル・データベースのOracle Streams構成を削除するには、次のプロシージャを実行します。
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
このプロシージャの実行後、可能な場合はデータベースでOracle Streams管理者を削除します。
|
関連項目: REMOVE_STREAMS_CONFIGURATIONプロシージャで実行されるアクションの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照 |