21 その他のOracle Streams管理タスク
この章では、Oracle Streams環境で全データベースのエクスポート/インポートを実行する手順について説明します。また、Oracle Streams構成を削除する手順についても説明します。
次の各項では、Oracle Streamsの管理タスクについて説明します。
この章で説明する各タスクは、特に明記されていないかぎり、適切な権限を付与されているOracle Streams管理者が完了する必要があります。
関連項目:
Oracle Streams管理者を作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照
21.1 Oracle Streams環境での全データベースのエクスポート/インポートの実行
この項では、1つ以上のOracle Streams取得プロセス、伝播または適用プロセスが動作するデータベースで、全データベースのエクスポート/インポートを実行する方法について説明します。ここでは、インポート・データベースおよびエクスポート・データベースが異なるコンピュータ上で動作しており、エクスポート・データベースがインポート・データベースで置き換えられる全データベースのエクスポート/インポートに関して説明しています。インポート・データベースのグローバル名とエクスポート・データベースのグローバル名は一致する必要があります。ここに示す手順では、両方のデータベースがすでに存在していると想定しています。
注意:
既存のOracle Streams環境にデータベースを追加する場合、この項の指示には従わないでください。かわりに、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
関連項目:
-
Oracle Streamsに関連するエクスポート/インポートのパラメータの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照
-
全データベースのエクスポート/インポートを実行する方法の詳細は、『Oracle Databaseユーティリティ』を参照
次の手順に従って、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
とします。この手順を実行した後は、エクスポート・データベースで実行中の取得プロセスを停止しないでください。後の手順では、
V$STREAMS_CAPTURE
動的パフォーマンス・ビューを使用して、手順3の後にデータベースに対しDMLまたはDDL変更が加えられていないことを確認するよう指示しています。取得プロセスが停止および再起動されると、このビューの取得プロセスに関する情報がリセットされます。以降のステップのチェックを有効にするには、取得プロセスでこの情報がリセットされないことが必要です。取得プロセスが自動的に停止されないようにするには、取得プロセスの
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クライアントが再起動されない場合は、「Oracle Streams環境内での問題の特定」を参照して、環境に対するトラブルシューティングを実行します。
この問合せでは、取得データベースと宛先データベース間に、Oracle Streams管理者にアクセスできるデータベース・リンクが存在すると想定しています。このようなデータベース・リンクが存在しない場合は、取得データベースおよび宛先データベースで2つの問合せを個別に実行できます。
-
各取得プロセスのエンキュー・メッセージ番号が、手順4で特定したSCN以下であるかどうか検証します。各取得プロセスのエンキュー・メッセージ番号を表示するには、
V$STREAMS_CAPTURE
動的パフォーマンス・ビューのENQUEUE_MESSAGE_NUMBER
列を問い合せます。各取得プロセスのエンキュー・メッセージ番号が、手順4で特定したSCN以下である場合は、手順9に進みます。
ただし、いずれかの取得プロセスのエンキュー・メッセージ番号が手順4で特定したSCNを超えている場合は、手順4で特定したSCNより後に1つ以上のDMLまたはDDL変更が加えられており、これらの変更は取得プロセスによって取得およびエンキューされています。この場合は、手順1から、この項のすべての手順を再実行します。
注意:
この検証を有効にするため、手順4以降は各取得プロセスが途切れずに実行されている必要があります。
-
-
ダウンストリーム取得プロセスがエクスポート・データベースで行われた変更を取得した場合は、これらのダウンストリーム取得プロセスを削除します。これは、この手順の以降のステップで再作成します。
-
エクスポート・データベースに、メッセージを伝播させている伝播が存在する場合は、
DBMS_PROPAGATION
パッケージのSTOP_PROPAGATION
プロシージャを使用して、これらの伝播を停止します。 -
エクスポート・データベースで1つ以上の適用プロセスが実行されているか、またはメッセージが伝播されている場合は、この時点で全データベースのエクスポートを開始します。必要なOracle Streamsメタデータがエクスポートされるように、
FULL
エクスポート・パラメータがy
に設定されていることを確認します。手順6ですでにエクスポートを開始した場合は、手順11に進みます。 -
エクスポートが完了した後、インポート・データベースが動作しているコンピュータにエクスポート・ダンプ・ファイルを転送します。
-
全データベースのインポートを実行します。必要なOracle Streamsメタデータがインポートされるように、
STREAMS_CONFIGURATION
とFULL
インポート・パラメータの両方がy
に設定されていることを確認します。STREAMS_CONFIGURATION
インポート・パラメータのデフォルト設定はy
です。また、インポート中は、インポート・データベースに対するDMLまたはDDL変更が行われないことを確認してください。 -
ダウンストリーム取得プロセスがデータベースで行われた変更を取得した場合は、ログ・ファイルがインポート・データベースからダウンストリーム・データベースに転送されるように、必要な変更を行います。詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
ダウンストリーム取得プロセスを再作成します。
-
必要に応じて、手順8で削除したダウンストリーム取得プロセスを再作成します。削除したこれらのダウンストリーム取得プロセスでは、エクスポート・データベースで行われた変更が取得されていました。インポート・データベースで行われた変更を取得するように、再作成したダウンストリーム取得プロセスを構成します。
-
必要に応じて、エクスポート・データベースで実行していたダウンストリーム取得プロセスをインポート・データベースに再作成します。エクスポート・データベースに存在していたダウンストリーム取得プロセスはエクスポートされていません。
関連項目:
取得プロセスの構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照
-
-
ローカル取得プロセスまたはダウンストリーム取得プロセスがデータベースで発生する変更を取得する場合は、インスタンス化のために変更が取得されるデータベース・オブジェクトをインポート・データベースに用意します。データベース・オブジェクトをインスタンス化のために準備する方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
ユーザーに対し、インポート・データベースへのアクセスを許可し、エクスポート・データベースを停止します。
-
手順4で取得プロセスの
message_limit
またはtime_limit
パラメータの値をリセットした場合、インポート・データベースでそのパラメータを元の設定にリセットします。
21.2 Oracle Streams構成の削除
DBMS_STREAMS_ADM
パッケージのREMOVE_STREAMS_CONFIGURATION
プロシージャを実行して、ローカル・データベースのOracle Streams構成を削除します。
注意:
このプロシージャの実行には危険が伴います。データベースからOracle Streams構成全体を削除するかどうかを必ず確認してから、このプロシージャを実行してください。
ローカル・データベースのOracle Streams構成を削除するには、Oracle Streams管理者としてデータベースに接続した状態で、次のプロシージャを実行します。
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
このプロシージャの実行後、可能な場合はデータベースでOracle Streams管理者を削除します。
関連項目:
REMOVE_STREAMS_CONFIGURATION
プロシージャで実行されるアクションの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照