取得プロセスと同期取得は両方とも暗黙的取得を実行します。この章では、暗黙的取得の管理の手順を説明します。
次の各項では、Oracle Streams暗黙的取得の管理について説明します。
この章で説明する各タスクは、特に明記されていないかぎり、適切な権限を付与されているOracle Streams管理者が完了する必要があります。
関連項目:
|
取得プロセスは、REDOログの変更を取得して、取得した各変更を論理変更レコード(LCR)形式にフォーマットし、LCRをANYDATA
キューにエンキューします。
次の各項では、取得プロセスの管理について説明します。
関連項目:
|
既存の取得プロセスを起動するには、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを実行します。たとえば、次のプロシージャでは取得プロセスstrm01_capture
が起動されます。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'strm01_capture'); END; /
注意: 新しい取得プロセスで新しいLogMinerデータ・ディクショナリが使用される場合は、新しい取得プロセスを初めて起動するときに、新しいLogMinerデータ・ディクショナリの移入に時間がかかる場合があります。新しいLogMinerデータ・ディクショナリは、取得プロセスの作成時にNULL 以外の先頭SCN値を指定した場合に作成されます。 |
関連項目: Oracle Enterprise Manager Cloud Controlを使用して取得プロセスを起動する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照 |
既存の取得プロセスを停止するには、DBMS_CAPTURE_ADM
パッケージのSTOP_CAPTURE
プロシージャを実行します。たとえば、次のプロシージャでは取得プロセスstrm01_capture
が停止されます。
BEGIN DBMS_CAPTURE_ADM.STOP_CAPTURE( capture_name => 'strm01_capture'); END; /
関連項目: Oracle Enterprise Manager Cloud Controlを使用して取得プロセスを停止する手順については、Oracle Enterprise Manager Cloud Controlのオンライン・ヘルプを参照 |
この項では、次のタスクの実行手順を説明します。
取得プロセスには、1つのポジティブ・ルール・セットおよび1つのネガティブ・ルール・セットを指定できます。ポジティブ・ルール・セットの1つ以上のルールがTRUE
と評価され、ネガティブ・ルール・セットのすべてのルールがFALSE
と評価された場合、取得プロセスによって変更が取得されます。ネガティブ・ルール・セットは、ポジティブ・ルール・セットの前に評価されます。
既存のルール・セットをポジティブ・ルール・セットとして既存の取得プロセスに指定するには、ALTER_CAPTURE
プロシージャのrule_set_name
パラメータを使用します。このプロシージャは、DBMS_CAPTURE_ADM
パッケージに含まれています。
たとえば、次のプロシージャでは、取得プロセスstrm01_capture
のポジティブ・ルール・セットがstrm02_rule_set
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', rule_set_name => 'strmadmin.strm02_rule_set'); END; /
既存のルール・セットをネガティブ・ルール・セットとして既存の取得プロセスに指定するには、ALTER_CAPTURE
プロシージャのnegative_rule_set_name
パラメータを使用します。このプロシージャは、DBMS_CAPTURE_ADM
パッケージに含まれています。
たとえば、次のプロシージャでは、取得プロセスstrm01_capture
のネガティブ・ルール・セットがstrm03_rule_set
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', negative_rule_set_name => 'strmadmin.strm03_rule_set'); END; /
既存の取得プロセスのルール・セットにルールを追加するには、DBMS_STREAMS_ADM
パッケージの次のいずれかのプロシージャを実行して既存の取得プロセスを指定します。
ADD_TABLE_RULES
ADD_SUBSET_RULES
ADD_SCHEMA_RULES
ADD_GLOBAL_RULES
ADD_SUBSET_RULES
プロシージャ以外のこれらのプロシージャでは、取得プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_RULES
プロシージャでは、取得プロセスのポジティブ・ルール・セットのみにルールを追加できます。
次の例では、DBMS_STREAMS_ADM
パッケージのADD_TABLE_RULES
プロシージャを実行して、取得プロセスstrm01_capture
のポジティブ・ルール・セットにルールを追加します。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.departments', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.streams_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
このプロシージャを実行すると、次のアクションが実行されます。
2つのルールが作成されます。一方のルールはhr.departments
表に対するDML変更についてTRUE
と評価され、他方のルールはhr.departments
表に対するDDL変更についてTRUE
と評価されます。ルール名は、システムによって生成されます。
inclusion_rule
パラメータがTRUE
に設定されているため、これらの2つのルールは、取得プロセスに関連付けられたポジティブ・ルール・セットに追加されます。
DBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャを実行することで、インスタンス化用にhr.departments
表が準備されます。
hr.departments
表の主キー、一意キー、ビットマップ索引および外部キー列のサプリメンタル・ロギングが有効になります。PREPARE_TABLE_INSTANTIATION
プロシージャの実行時に、supplemental_logging
パラメータにデフォルト値(keys
)が指定されます。
取得プロセスによってダウンストリーム取得が実行される場合、そのダウンストリーム取得プロセスでソース・データベースへのデータベース・リンクが使用される場合にのみ、表がインスタンス化のために準備され、キー列のサプリメンタル・ロギングが有効になります。ダウンストリーム取得プロセスでソース・データベースへのデータベース・リンクが使用されない場合、インスタンス化のために表を手動で準備し、手動でサプリメンタル・ロギングを有効にする必要があります。
次の例では、DBMS_STREAMS_ADM
パッケージのADD_TABLE_RULES
プロシージャを実行して、取得プロセスstrm01_capture
のネガティブ・ルール・セットにルールを追加します。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.job_history', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.streams_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => FALSE); END; /
このプロシージャを実行すると、次のアクションが実行されます。
2つのルールが作成されます。一方のルールはhr.job_history
表に対するDML変更についてTRUE
と評価され、他方のルールはhr.job_history
表に対するDDL変更についてTRUE
と評価されます。ルール名は、システムによって生成されます。
inclusion_rule
パラメータがFALSE
に設定されているため、これらの2つのルールは、取得プロセスに関連付けられたネガティブ・ルール・セットに追加されます。
取得プロセスでルールに指定された変更を取得しない場合には、取得プロセスのルール・セットからルールを削除します。たとえば、ルールdepartments3
でhr.departments
表へのDML変更が取得されるように指定するとします。取得プロセスでhr.departments
表への変更を取得しない場合は、ルール・セットからルールdepartments3
を削除します。
DBMS_STREAMS_ADM
パッケージのREMOVE_RULE
プロシージャを実行して、既存の取得プロセスのルール・セットからルールを削除します。たとえば、次のプロシージャでは、取得プロセスstrm01_capture
のポジティブ・ルール・セットからルールdepartments3
が削除されます。
BEGIN DBMS_STREAMS_ADM.REMOVE_RULE( rule_name => 'departments3', streams_type => 'capture', streams_name => 'strm01_capture', drop_unused_rule => TRUE, inclusion_rule => TRUE); END; /
この例では、REMOVE_RULE
プロシージャのdrop_unused_rule
パラメータがTRUE
に設定されています。これはデフォルトの設定です。したがって、削除するルールが他のどのルール・セットにも含まれていなければ、そのルールはデータベースから削除されます。drop_unused_rule
パラメータがFALSE
に設定されている場合、ルールはルール・セットから削除されますが、データベースからは削除されません。
inclusion_rule
パラメータがFALSE
に設定されている場合、REMOVE_RULE
プロシージャによって、取得プロセスのポジティブ・ルール・セットではなく、ネガティブ・ルール・セットからルールが削除されます。
取得プロセスのルール・セットからすべてのルールを削除するには、REMOVE_RULE
プロシージャの実行時にrule_name
パラメータにNULL
を指定します。
既存の取得プロセスからルール・セットを削除するには、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャを使用します。このプロシージャでは、ポジティブ・ルール・セットまたはネガティブ・ルール・セット、あるいはその両方を削除できます。取得プロセスのポジティブ・ルール・セットを削除するには、remove_rule_set
パラメータにTRUE
を指定します。取得プロセスのネガティブ・ルール・セットを削除するには、remove_negative_rule_set
パラメータにTRUE
を指定します。
たとえば、次のプロシージャでは、取得プロセスstrm01_capture
からポジティブ・ルール・セットとネガティブ・ルール・セットの両方が削除されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', remove_rule_set => TRUE, remove_negative_rule_set => TRUE); END; /
注意: 取得プロセスにポジティブ・ルール・セットまたはネガティブ・ルール・セットが存在しない場合、その取得プロセスでは、SYS スキーマ、SYSTEM スキーマおよびCTXSYS スキーマ内のデータベース・オブジェクトを除き、データベース内のすべてのオブジェクトに対するすべてのサポートされる変更が取得されます。 |
取得プロセスのパラメータを設定するには、DBMS_CAPTURE_ADM
パッケージのSET_PARAMETER
プロシージャを使用します。取得プロセス・パラメータによって、取得プロセスの動作が制御されます。
たとえば、次のプロシージャでは、取得プロセスstrm01_capture
のparallelism
パラメータが4
に設定されます。
BEGIN DBMS_CAPTURE_ADM.SET_PARAMETER( capture_name => 'strm01_capture', parameter => 'parallelism', value => '4'); END; /
注意:
|
関連項目:
|
取得ユーザーは、取得プロセスのルール・セットを満たすすべてのDML変更およびDDL変更を取得するユーザーです。取得プロセスの取得ユーザーを設定するには、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャでcapture_user
パラメータを使用します。
取得ユーザーを変更するには、ALTER_CAPTURE
プロシージャを起動するユーザーにDBA
ロールが付与されている必要があります。capture_user
をSYS
に設定できるのは、SYS
ユーザーに限られています。
たとえば、次のプロシージャでは、取得プロセスstrm01_capture
の取得ユーザーがhr
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', capture_user => 'hr'); END; /
このプロシージャを実行すると、新しい取得ユーザーに、取得プロセスで使用するキューのエンキュー権限が付与され、そのユーザーがキューの保護キュー・ユーザーとして構成されます。また、取得ユーザーが次の権限を持っていることを確認する必要があります。
取得プロセスで使用するルール・セットのEXECUTE
権限
ルール・セットで使用するすべてのカスタム・ルールベースの変換ファンクションのEXECUTE
権限
これらの権限は、取得ユーザーに直接付与するか、ロールを介して付与できます。
また、取得ユーザーには、取得プロセスで実行されるルールベースの変換で起動されるすべてのパッケージ(Oracle提供パッケージを含む)に対するEXECUTE
権限を付与する必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。これらの権限は、ロールを介して付与することはできません。
注意: Oracle Database Vaultがインストールされている場合、取得ユーザーを変更するユーザーにBECOME USER システム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、ユーザーにこの権限を付与する必要はありません。必要に応じて、取得ユーザーの変更後に、ユーザーからBECOME USER システム権限を取り消すことができます。 |
チェックポイント保存時間は、チェックポイントが取得プロセスによって自動的にパージされるまでの保存期間です。
DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャのcheckpoint_retention_time
パラメータを使用して、取得プロセスのチェックポイント保存時間を設定します。
この項の内容は次のとおりです。
チェックポイント保存時間を設定する場合、小数値を使用して日数と時間を指定できます。たとえば、取得プロセスstrm01_capture
によってチェックポイントが10日と12時間ごとに自動的に消去されるように指定するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', checkpoint_retention_time => 10.5); END; /
取得プロセスによってチェックポイントが自動的に消去されないように指定するには、チェックポイント保存時間をDBMS_CAPTURE_ADM.INFINITE
に設定します。たとえば、次のプロシージャでは、取得プロセスstrm01_capture
のチェックポイント保存時間が無期限に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', checkpoint_retention_time => DBMS_CAPTURE_ADM.INFINITE); END; /
取得プロセスにアーカイブREDOログ・ファイルを手動で追加するには、次の文を使用します。
ALTER DATABASE REGISTER LOGICAL LOGFILE file_name FOR capture_process;
ここでは、file_name
は追加するアーカイブREDOログ・ファイルの名前で、capture_process
はダウンストリーム・データベースのREDOログ・ファイルを使用する取得プロセスの名前です。capture_process
は、logminer_session_name
と同じで、指定する必要があります。取得プロセスが実行されるサイトには、REDOログ・ファイルが存在する必要があります。
たとえば、取得プロセスstrm03_capture
に/usr/log_files/1_3_486574859.dbf
アーカイブREDOログ・ファイルを追加するには、次の文を発行します。
ALTER DATABASE REGISTER LOGICAL LOGFILE '/usr/log_files/1_3_486574859.dbf' FOR 'strm03_capture';
関連項目: ALTER DATABASE 文の詳細は、『Oracle Database SQL言語リファレンス』を参照、またREDOログ・ファイルの登録については、『Oracle Data Guard概要および管理』を参照 |
指定する先頭SCNは、次の要件を満たす必要があります。
取得プロセスの現在の先頭SCNより大きい値である必要があります。
取得プロセスの現行の適用済SCN以下であること。ただし、取得プロセスの現行の適用済SCNが0(ゼロ)である場合、この要件はあてはまりません。
取得プロセスの必須チェックポイントSCN以下の値である必要があります。
データベース内の各取得プロセスの現行の先頭SCN、適用済SCNおよび必須チェックポイントSCNを特定するには、次の問合せを使用します。
SELECT CAPTURE_NAME, FIRST_SCN, APPLIED_SCN, REQUIRED_CHECKPOINT_SCN FROM DBA_CAPTURE;
取得プロセスの先頭SCNをリセットすると、新しい先頭SCN設定よりも値が小さい情報が、取得プロセスのLogMinerデータ・ディクショナリから自動的に消去されます。このため、取得プロセスの先頭SCNのリセット後は、その取得プロセスの開始SCNを新しい先頭SCNより小さい値に設定することはできません。また、新しい先頭SCNの設定前の情報を含むREDOログ・ファイルは、取得プロセスでは必要なくなります。
たとえば、次のプロシージャでは、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャを使用して、取得プロセスstrm01_capture
の先頭SCNが351232
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', first_scn => 351232); END; /
注意:
|
既存の取得プロセスの開始SCNを設定できます。通常、取得プロセスから変更を受け取る宛先データベースのいずれかでPoint-in-Timeリカバリを実行する必要がある場合、取得プロセスの開始SCNをリセットします。
指定した開始SCNは、取得プロセスの先頭SCNよりも大きいか等しいことが必要です。また、取得プロセスの開始SCNをリセットするときは、必要なREDOログ・ファイルが取得プロセスで使用できることを確認してください。
データベース内の各取得プロセスの先頭SCNを判別するには、次の問合せを使用します。
SELECT CAPTURE_NAME, FIRST_SCN FROM DBA_CAPTURE;
たとえば、取得プロセスstrm01_capture
の開始SCNを750338
に設定するには、次の手順を実行します。
取得プロセスを停止します。詳細は、「取得プロセスの停止」を参照してください。
ALTER_CAPTURE
プロシージャを実行して、開始SCNを設定します。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm01_capture', start_scn => 750338); END; /
取得プロセスを起動します。詳細は、「取得プロセスの起動」を参照してください。
関連項目:
|
既存のダウンストリーム取得プロセスで、ソース・データベースへの管理用のデータベース・リンクを使用するかどうかを指定するには、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャを使用します。ダウンストリーム取得プロセスでデータベース・リンクを使用するように指定するには、use_database_link
パラメータをTRUE
に設定します。ダウンストリーム取得プロセスでデータベース・リンクを使用しないように指定するには、use_database_link
パラメータをFALSE
に設定します。
現在データベース・リンクを使用していない取得プロセスでデータベース・リンクを使用するようにするには、use_database_link
パラメータをTRUE
に設定します。この場合、ソース・データベースのグローバル名と同じ名前を持つデータベース・リンクが、ダウンストリーム・データベースに存在する必要があります。
現在データベース・リンクを使用している取得プロセスでデータベース・リンクを使用しないようにするには、use_database_link
パラメータをFALSE
に設定します。この場合、取得プロセスの変更後に、いくつかの管理操作を手動で行う必要があります。たとえば、DBMS_STREAMS_ADM
パッケージを使用して新しい取得プロセスのルールを追加する場合、ソース・データベースで、そのルールに関連付けられたオブジェクトのインスタンス化の準備を手動で行う必要があります。
use_database_link
パラメータをNULL
に設定した場合、取得プロセスに対するこのパラメータの現行の値は変更されません。
ソース・データベースdbs1.example.com
へのデータベース・リンクを作成し、この取得プロセスがデータベース・リンクを使用するように指定するには、次の手順を実行します。
SQL*Plusで、ダウンストリーム・データベースにOracle Streams管理者として接続します。
SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。
ソース・データベースへのデータベース・リンクを作成します。データベース・リンクが、ソース・データベースのOracle Streams管理者に接続することを確認してください。次に例を示します。
CREATE DATABASE LINK dbs1.example.com CONNECT TO strmadmin
IDENTIFIED BY password
USING 'dbs1.example.com';
データベース・リンクを使用するように取得プロセスを変更します。次に例を示します。
BEGIN DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => 'strm05_capture', use_database_link => TRUE); END; /
既存の取得プロセスを削除するには、DBMS_CAPTURE_ADM
パッケージのDROP_CAPTURE
プロシージャを実行します。たとえば、次のプロシージャでは、取得プロセスstrm02_capture
が削除されます。
BEGIN DBMS_CAPTURE_ADM.DROP_CAPTURE( capture_name => 'strm02_capture', drop_unused_rule_sets => TRUE); END; /
drop_unused_rule_sets
パラメータがTRUE
に設定されているため、このプロシージャでは、取得プロセスstrm02_capture
で使用されているすべてのルール・セットも削除されます。ただし、他のOracle Streamsクライアントで使用されているルール・セットは削除されません。drop_unused_rule_sets
パラメータがTRUE
に設定されている場合は、取得プロセスのポジティブ・ルール・セットとネガティブ・ルール・セットの両方が削除されることがあります。このプロシージャによってルール・セットが削除された場合、そのルール・セット内のルールのうち、他のルール・セットに含まれていないルールも削除されます。
注意: 取得プロセスを削除するには、状態がDISABLED またはABORTED であることが必要です。ENABLED の取得プロセスは削除できません。 |
同期取得では内部メカニズムを使用して、表へのデータ操作言語(DML)の変更を取得します。同期取得は、取得した各変更を論理変更レコード(LCR)形式に再フォーマットし、LCRをANYDATA
キューにエンキューします。
この項の内容は次のとおりです。
この項では、次のタスクの実行手順を説明します。
同期取得には、1つのポジティブ・ルール・セットを指定できます。ポジティブ・ルール・セットの1つ以上のルールがTRUE
と評価された場合、同期取得によって変更が取得されます。
既存のルール・セットをポジティブ・ルール・セットとして既存の同期取得に指定するには、ALTER_SYNC_CAPTURE
プロシージャのrule_set_name
パラメータを使用します。このプロシージャは、DBMS_CAPTURE_ADM
パッケージに含まれています。
たとえば、次のプロシージャでは、同期取得sync_capture
のポジティブ・ルール・セットがsync_rule_set
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_SYNC_CAPTURE( capture_name => 'sync_capture', rule_set_name => 'strmadmin.sync_rule_set'); END; /
注意: 同期取得のルール・セットは削除できません。 |
既存の同期取得のルール・セットにルールを追加するには、DBMS_STREAMS_ADM
パッケージの次のいずれかのプロシージャを実行して既存の同期取得を指定できます。
ADD_TABLE_RULES
ADD_SUBSET_RULES
次の例では、DBMS_STREAMS_ADM
パッケージのADD_TABLE_RULES
プロシージャを実行して、同期取得sync_capture
のポジティブ・ルール・セットにルールを追加します。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.departments', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue', include_dml => TRUE); END; /
このプロシージャを実行すると、次のアクションが実行されます。
ルールが1つ作成されます。このルールは、hr.departments
表に対するDML変更についてTRUE
と評価されます。ルール名はシステムによって生成されます。
ルールは、同期取得に関連付けられたポジティブ・ルール・セットに追加されます。
DBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションが実行され、インスタンス化用にhr.departments
表が準備されます。
注意:
|
同期取得でルールに指定された変更を取得しない場合、同期取得のルール・セットからルールを削除します。たとえば、ルールdepartments3
でhr.departments
表へのDML変更が取得されるように指定するとします。同期取得でhr.departments
表への変更を取得しない場合は、ルール・セットからルールdepartments3
を削除します。
DBMS_STREAMS_ADM
パッケージのREMOVE_RULE
プロシージャを実行して、既存の同期取得のルール・セットからルールを削除します。たとえば、次のプロシージャでは、同期取得sync_capture
のポジティブ・ルール・セットからルールdepartments3
が削除されます。
BEGIN DBMS_STREAMS_ADM.REMOVE_RULE( rule_name => 'departments3', streams_type => 'sync_capture', streams_name => 'sync_capture', drop_unused_rule => TRUE); END; /
この例では、REMOVE_RULE
プロシージャのdrop_unused_rule
パラメータがTRUE
に設定されています。これはデフォルトの設定です。したがって、削除するルールが他のどのルール・セットにも含まれていなければ、そのルールはデータベースから削除されます。drop_unused_rule
パラメータがFALSE
に設定されている場合、ルールはルール・セットから削除されますが、データベースからは削除されません。
同期取得のルール・セットからすべてのルールを削除するには、REMOVE_RULE
プロシージャの実行時にrule_name
パラメータにNULL
を指定します。
取得ユーザーは、同期取得のルール・セットを満たすすべてのDML変更を取得するユーザーです。同期取得の取得ユーザーを設定するには、DBMS_CAPTURE_ADM
パッケージのALTER_SYNC_CAPTURE
プロシージャでcapture_user
パラメータを使用します。
取得ユーザーを変更するには、ALTER_SYNC_CAPTURE
プロシージャを起動するユーザーにDBA
ロールが付与されている必要があります。capture_user
をSYS
に設定できるのは、SYS
ユーザーに限られています。
たとえば、次のプロシージャでは、同期取得sync_capture
の取得ユーザーがhr
に設定されます。
BEGIN DBMS_CAPTURE_ADM.ALTER_SYNC_CAPTURE( capture_name => 'sync_capture', capture_user => 'hr'); END; /
このプロシージャを実行すると、新しい取得ユーザーに、同期取得で使用するキューのエンキュー権限が付与され、そのユーザーがキューの保護キュー・ユーザーとして構成されます。また、取得ユーザーが次の権限を持っていることを確認する必要があります。
同期取得で使用されるルール・セットのEXECUTE
権限
ルール・セットで使用するすべてのカスタム・ルールベースの変換ファンクションのEXECUTE
権限
これらの権限は、取得ユーザーに直接付与するか、ロールを介して付与できます。
また、取得ユーザーには、同期取得で実行されるルールベースの変換で起動されるすべてのパッケージ(Oracle提供パッケージを含む)に対するEXECUTE
権限を付与する必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。これらの権限は、ロールを介して付与することはできません。
注意: Oracle Database Vaultがインストールされている場合、取得ユーザーを変更するユーザーにBECOME USER システム権限を付与する必要があります。Oracle Database Vaultがインストールされていない場合は、ユーザーにこの権限を付与する必要はありません。必要に応じて、取得ユーザーの変更後に、ユーザーからBECOME USER システム権限を取り消すことができます。 |
既存の同期取得を削除するには、DBMS_CAPTURE_ADM
パッケージのDROP_CAPTURE
プロシージャを実行します。たとえば、次のプロシージャでは、同期取得sync_capture
が削除されます。
BEGIN DBMS_CAPTURE_ADM.DROP_CAPTURE( capture_name => 'sync_capture', drop_unused_rule_sets => TRUE); END; /
drop_unused_rule_sets
パラメータがTRUE
に設定されているため、このプロシージャでは、同期取得sync_capture
で使用されているすべてのルール・セットも削除されます(ただし、他のOracle Streamsクライアントで使用されているルール・セットは削除されません)。drop_unused_rule_sets
パラメータがTRUE
に設定されている場合は、同期取得のルール・セットが削除されることがあります。このプロシージャによってルール・セットが削除された場合、そのルール・セット内のルールのうち、他のルール・セットに含まれていないルールも削除されます。
1つ以上の追加属性を取得するように取得プロセスまたは同期取得に指示するには、DBMS_CAPTURE_ADM
パッケージのINCLUDE_EXTRA_ATTRIBUTE
プロシージャを使用します。また、このプロシージャを使用して、現在取得している追加属性を排除するように取得プロセスまたは同期取得に指示することもできます。
追加属性は次のとおりです。
row_id
(行LCRのみ)
serial#
session#
thread#
tx_name
username
この項では、次のタスクの実行手順を説明します。
関連項目:
|
取得プロセスまたは同期取得で取得されたLCRに追加属性を含めるには、INCLUDE_EXTRA_ATTRIBUTES
プロシージャを実行して、include
パラメータをTRUE
に設定します。たとえば、取得された各LCRにトランザクション名を含めるように取得プロセスまたは同期取得strm01_capture
に指示するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.INCLUDE_EXTRA_ATTRIBUTE( capture_name => 'strm01_capture', attribute_name => 'tx_name', include => TRUE); END; /
取得プロセスまたは同期取得で取得されたLCRから追加属性を排除するには、INCLUDE_EXTRA_ATTRIBUTES
プロシージャを実行して、include
パラメータをFALSE
に設定します。たとえば、取得された各LCRからトランザクション名を排除するように取得プロセスまたは同期取得strm01_capture
に指示するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.INCLUDE_EXTRA_ATTRIBUTE( capture_name => 'strm01_capture', attribute_name => 'tx_name', include => FALSE); END; /
この項では、取得プロセスから同期取得への切替え方法について説明します。通常、同期取得は、比較的少数の表へのデータ操作言語(DML)変更を取得するために使用されます。現在、同期取得ではなく取得プロセスを使用して少数の表への変更を取得している場合は、この切替えを決定できます。
次のいずれかの条件に該当する場合は、取得プロセスから同期取得への切替えは行わないでください。
取得プロセスで、少数の表への変更を取得するのではなく、データベース全体、1つ以上のスキーマまたは多数の表への変更を取得している場合で、引き続きこれらの変更を取得する場合。
取得プロセスでデータ定義言語(DDL)変更を取得している場合で、引き続きDDL変更を取得する場合。同期取得では、DDL変更は取得できません。
取得プロセスでネガティブ・ルール・セットを使用しており、引き続きネガティブ・ルール・セットを使用する場合。同期取得では、ネガティブ・ルール・セットは使用できません。
取得プロセスがダウンストリーム取得プロセスの場合。同期取得では、ダウンストリーム取得は実行できません。
この項では例を用いて、取得プロセスから同期取得への切替え方法について説明します。表15-1に、サンプル環境での切替え前後のOracle Streamsコンポーネントを示します。
表15-1 取得プロセスから同期取得への切替えの例
Oracle Streamsコンポーネント | 切替え前 | 切替え後 |
---|---|---|
取得プロセス |
|
なし |
取得プロセス・ルール・セット |
|
なし |
同期取得 |
なし |
|
同期取得ルール・セット |
なし |
|
伝播 |
|
|
伝播ルール・セット |
|
|
ソース・キュー |
|
|
宛先キュー |
|
|
適用プロセス |
|
|
適用プロセス・ルール・セット |
|
|
表15-1では、Oracle Streams環境で切替え前と切替え後に同じルール・セットが使用されていることに注意してください。また、この項の例では、ソース・データベースがdb1.example.com
で、宛先データベースがdb2.example.com
であるとします。
取得プロセスから同期取得に切り替えるには、次の手順を実行します。
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
この例では、各データベースのOracle Streams管理者はstrmadmin
であると想定しています。Oracle Streams管理者を作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
取得プロセスを停止します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.STOP_CAPTURE( capture_name => 'cap_proc'); END; /
SQL*Plusで、宛先データベースにOracle Streams管理者としてログインします。
同期取得で取得された変更を適用する適用プロセスにコミット時間キューを作成します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.sync_cap_dest_qt', queue_name => 'strmadmin.sync_cap_dest'); END; /
手順4で作成したキューの変更を適用する適用プロセスを作成します。apply_captured
パラメータをFALSE
に設定します。また、rule_set_name
パラメータで、既存の適用プロセスで使用されているルール・セットが指定されていることを確認します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.CREATE_APPLY( queue_name => 'strmadmin.sync_cap_dest', apply_name => 'apply_sync_cap', rule_set_name => 'strmadmin.apply_rules', apply_captured => FALSE); END; /
適用プロセスが環境に適切に構成されていることを確認します。具体的には、新しい適用プロセスが、次の項目について適切に構成されていることを確認します。
適用ユーザー
適用ハンドラ
適用タグ
必要に応じて、新しい適用プロセスが、これらの項目について既存の適用プロセスと同じように構成されていることを確認します。
適用プロセスを作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
同期取得のコミット時間キューを作成します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.sync_cap_source_qt', queue_name => 'strmadmin.sync_cap_source'); END; /
キューを構成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
手順7で作成したキューの変更を手順4で作成したキューに送信する伝播を作成します。rule_set_name
パラメータで、既存の伝播で使用されているルール・セットが指定されていることを確認します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_PROPAGATION_ADM.CREATE_PROPAGATION( propagation_name => 'sync_cap_prop', source_queue => 'strmadmin.sync_cap_source', destination_queue => 'strmadmin.sync_cap_dest', destination_dblink => 'db2.example.com', rule_set_name => 'strmadmin.prop_rules'); END; /
伝播を作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
同期取得を作成します。queue_name
パラメータに、手順7で作成したキューが指定されていることを確認します。また、rule_set_name
パラメータに、既存の取得プロセスで使用されているルール・セットが指定されていることを確認します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.CREATE_SYNC_CAPTURE( queue_name => 'strmadmin.sync_cap_source', capture_name => 'sync_cap', rule_set_name => 'strmadmin.capture_rules'); END; /
指定したルール・セットには、DBMS_STREAMS_ADM
パッケージのADD_TABLE_RULES
プロシージャおよびADD_SUBSET_RULES
プロシージャを使用して作成されたルールのみが含まれている必要があります。現行の取得プロセス・ルール・セットに他のタイプのルールが含まれている場合は、同期取得用のルール・セットを作成し、ADD_TABLE_RULES
プロシージャおよびADD_SUBSET_RULES
プロシージャを使用して、新しいルール・セットにルールを追加します。
また、同期取得ではネガティブ・ルール・セットを使用できません。現行の取得プロセスにネガティブ・ルール・セットがあり、同期取得に取得プロセスと同様の動作をさせる場合には、同期取得のポジティブ・ルール・セットにルールを追加すると、同じ動作結果が得られます。
既存の取得プロセスの取得ユーザーがOracle Streams管理者でない場合、CREATE_SYNC_CAPTURE
プロシージャのcapture_user
パラメータを使用して、新しい同期取得に適切な取得ユーザーが指定されていることを確認します。
同期取得を構成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
次の問合せを実行して、同期取得用に構成された表が、既存の取得プロセス用に構成された表と同じであることを確認します。
SELECT * FROM DBA_SYNC_CAPTURE_TABLES ORDER BY TABLE_OWNER, TABLE_NAME;
表が無効であるか、存在していない場合は、ADD_TABLE_RULES
プロシージャまたはADD_SUBSET_RULES
プロシージャを使用して表を追加します。
インスタンス化するためにレプリケートされた表を準備します。レプリケートされた表は、同期取得が変更を取得した表です。
たとえば、同期取得でhr.employees
表およびhr.departments
表への変更が取得される場合は、次のファンクションを実行します。
SET SERVEROUTPUT ON DECLARE tables DBMS_UTILITY.UNCL_ARRAY; prepare_scn NUMBER; BEGIN tables(1) := 'hr.departments'; tables(2) := 'hr.employees'; prepare_scn := DBMS_CAPTURE_ADM.PREPARE_SYNC_INSTANTIATION( table_names => tables); DBMS_OUTPUT.PUT_LINE('Prepare SCN = ' || prepare_scn); END; /
戻された準備システム変更番号(SCN)は、後の手順で使用されます。この例では、準備SCNは2700000
とします。
レプリケートされた表はすべて、PREPARE_SYNC_INSTANTIATION
ファンクションに対する1つのコールに含まれている必要があります。
データベース・オブジェクトのインスタンス化の準備については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
SQL*Plusで、宛先データベースにOracle Streams管理者としてログインします。
手順11で戻された値に1を加えたSCNに達したときに変更の適用を停止するように、取得プロセスの変更を適用する適用プロセスを設定します。
たとえば、準備SCNが2700000
の場合、次のプロシージャを実行して、maximum_scn
パラメータを2700001
(2700000 + 1)に設定します。
BEGIN DBMS_APPLY_ADM.SET_PARAMETER( apply_name => 'apply_cap_proc', parameter => 'maximum_scn', value => '2700001'); END; /
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
手順2で停止した取得プロセスを起動します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'cap_proc'); END; /
SQL*Plusで、宛先データベースにOracle Streams管理者としてログインします。
取得プロセスによって取得された変更を適用する適用プロセスが、手順13で指定したSCNの値に達するまで待機します。このイベントが発生すると、SCNの制限値に達したことを示すエラーORA-26717を伴って、適用プロセスは自動的に無効になります。
適用プロセスがこの制限値に達したことを確認するには、DBA_APPLY
ビューを問い合せます。この例では、次の問合せを実行します。
SELECT 1 FROM DBA_APPLY WHERE STATUS = 'DISABLED' AND ERROR_NUMBER = 26717 AND APPLY_NAME = 'APPLY_CAP_PROC';
この問合せで行が戻されるまで、次の手順には進まないでください。
レプリケートされた表のインスタンス化SCNを、手順11でSCNにより戻されたSCN値に設定します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.employees', source_database_name => 'db1.example.com', instantiation_scn => 2700000); END; / BEGIN DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.departments', source_database_name => 'db1.example.com', instantiation_scn => 2700000); END; /
インスタンス化SCNの設定の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
手順5で作成した適用プロセスを起動します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.START_APPLY( apply_name => 'apply_sync_cap'); END; /
取得プロセスで取得された変更を適用した適用プロセスを削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.DROP_APPLY( apply_name => 'apply_cap_proc'); END; /
手順20で削除した適用プロセスによって使用されたキューが不要であれば、削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.REMOVE_QUEUE( queue_name => 'strmadmin.cap_proc_dest', drop_unused_queue_table => TRUE); END; /
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
取得プロセスを停止します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.STOP_CAPTURE( capture_name => 'cap_proc'); END; /
取得プロセスを削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.DROP_CAPTURE( capture_name => 'cap_proc'); END; /
取得プロセスで取得された変更を送信した伝播を削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_PROPAGATION_ADM.DROP_PROPAGATION( propagation_name => 'cap_proc_prop'); END; /
手順24と25で削除した取得プロセスおよび伝播によって使用されたキューが不要であれば、削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.REMOVE_QUEUE( queue_name => 'strmadmin.cap_proc_source', drop_unused_queue_table => TRUE); END; /
双方向レプリケーション環境の場合、これらの手順を個別に実行し、取得プロセスから同期取得に双方向で切り替えることができます。
この項では、同期取得から取得プロセスへの切替え方法について説明します。この切替えは、次のいずれかの場合に行います。
現在は少数の表への変更を取得しているが、使用する環境を拡張して、多数の表、1つ以上のスキーマまたはデータベース全体への変更を取得する場合。
変更の取得中に、ネガティブ・ルール・セットを使用する場合。
データベース・オブジェクトへのデータ定義言語(DDL)変更を取得する場合。
この項では例を用いて、同期取得から取得プロセスへの切替え方法について説明します。表 15-2に、サンプル環境での切替え前後のOracle Streamsコンポーネントを示します。
表 15-2 同期取得から取得プロセスへの切替えの例
Oracle Streamsコンポーネント | 切替え前 | 切替え後 |
---|---|---|
同期取得 |
|
なし |
同期取得ルール・セット |
|
なし |
取得プロセス |
なし |
|
取得プロセス・ルール・セット |
なし |
|
伝播 |
|
|
伝播ルール・セット |
|
|
ソース・キュー |
|
|
宛先キュー |
|
|
適用プロセス |
|
|
適用プロセス・ルール・セット |
|
|
表15-2では、Oracle Streams環境で切替え前と切替え後に同じルール・セットが使用されていることに注意してください。また、この項の例では、ソース・データベースがdb1.example.com
で、宛先データベースがdb2.example.com
であるとします。
同期取得から取得プロセスに切り替えるには、次の手順を実行します。
ソース・データベースがARCHIVELOG
モードで実行されていることを確認します。詳細は、「ARCHIVELOGモードおよび取得プロセス」および『Oracle Database管理者ガイド』を参照してください。
SQL*Plusで、宛先データベースにOracle Streams管理者としてログインします。
この例では、各データベースのOracle Streams管理者はstrmadmin
であると想定しています。Oracle Streams管理者を作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
取得プロセスで取得された変更を適用する適用プロセスにキューを作成します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.cap_proc_dest_qt', queue_name => 'strmadmin.cap_proc_dest'); END; /
キューを構成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
手順3で作成したキューの変更を適用する適用プロセスを作成します。apply_captured
パラメータをTRUE
に設定します。また、rule_set_name
パラメータで、既存の適用プロセスで使用されているルール・セットが指定されていることを確認します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.CREATE_APPLY( queue_name => 'strmadmin.cap_proc_dest', apply_name => 'apply_cap_proc', rule_set_name => 'strmadmin.apply_rules', apply_captured => TRUE); END; /
適用プロセスが環境に適切に構成されていることを確認します。具体的には、新しい適用プロセスが、次の項目について適切に構成されていることを確認します。
適用ユーザー
適用ハンドラ
適用タグ
必要に応じて、新しい適用プロセスが、これらの項目について既存の適用プロセスと同じように構成されていることを確認します。
適用プロセスを作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
同期取得で取得された変更を適用する適用プロセスを停止します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.STOP_APPLY( apply_name => 'apply_sync_cap'); END; /
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
取得プロセスのキューを作成します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.cap_proc_source_qt', queue_name => 'strmadmin.cap_proc_source'); END; /
手順7で作成したキューの変更を手順3で作成したキューに送信する伝播を作成します。rule_set_name
パラメータで、既存の伝播で使用されているルール・セットが指定されていることを確認します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_PROPAGATION_ADM.CREATE_PROPAGATION( propagation_name => 'cap_proc_prop', source_queue => 'strmadmin.cap_proc_source', destination_queue => 'strmadmin.cap_proc_dest', destination_dblink => 'db2.example.com', rule_set_name => 'strmadmin.prop_rules'); END; /
伝播を作成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
取得プロセスを作成します。次に示すように、パラメータがCREATE_CAPTURE
プロシージャで適切に設定されていることを確認します。
queue_name
パラメータを手順7で作成したキューに設定します。
rule_set_name
パラメータを既存の同期取得で使用されているルール・セットに設定します。
既存の同期取得の取得ユーザーがOracle Streams管理者でない場合、capture_user
パラメータを、新しい取得プロセスの適切な取得ユーザーに設定します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.CREATE_CAPTURE( queue_name => 'strmadmin.cap_proc_source', capture_name => 'cap_proc', rule_set_name => 'strmadmin.cap_rules'); END; /
取得プロセスを構成する方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
インスタンス化するためにレプリケートされた表を準備します。レプリケートされた表は、取得プロセスで変更を取得した表です。
たとえば、取得プロセスでhr.employees
表およびhr.departments
表への変更が取得される場合は、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.employees', supplemental_logging => 'keys'); END; / BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.departments', supplemental_logging => 'keys'); END; /
データベース・オブジェクトのインスタンス化の準備については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
SHARE
MODE
でレプリケートされたすべての表をロックします。
この例では、次のSQL文を実行します。
LOCK TABLE hr.employees, hr.departments IN SHARE MODE;
次の問合せを実行して、現行のシステム変更番号(SCN)を確認します。
SELECT CURRENT_SCN FROM V$DATABASE;
戻された切替えSCNが後の手順で使用されます。この例では、切替えSCNは2700000
とします。
COMMIT
文を実行して、レプリケートされた表のロックを解放します。
COMMIT;
SQL*Plusで、宛先データベースにOracle Streams管理者としてログインします。
手順12で戻された値に1を加えたSCNに達したときに変更の適用を停止するように、同期取得の変更を適用する適用プロセスを設定します。
たとえば、切替えSCNが2700000
の場合、次のプロシージャを実行して、maximum_scn
パラメータを2700001
(2700000 + 1)に設定します。
BEGIN DBMS_APPLY_ADM.SET_PARAMETER( apply_name => 'apply_sync_cap', parameter => 'maximum_scn', value => '2700001'); END; /
同期取得からの変更を適用する適用プロセスを起動します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.START_APPLY( apply_name => 'apply_sync_cap'); END; /
同期取得によって取得された変更を適用する適用プロセスが、手順15で指定したSCNの値に達するまで待機します。このイベントが発生すると、SCNの制限値に達したことを示すエラーORA-26717を伴って、適用プロセスは自動的に無効になります。
適用プロセスがこの制限値に達したことを確認するには、DBA_APPLY
ビューを問い合せます。この例では、次の問合せを実行します。
SELECT 1 FROM DBA_APPLY WHERE STATUS = 'DISABLED' AND ERROR_NUMBER = 26717 AND APPLY_NAME = 'APPLY_SYNC_CAP';
この問合せで行が戻されるまで、次の手順には進まないでください。
レプリケートされた表のインスタンス化SCNを、手順12で戻されたSCN値に設定します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.employees', source_database_name => 'db1.example.com', instantiation_scn => 2700000); END; / BEGIN DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.departments', source_database_name => 'db1.example.com', instantiation_scn => 2700000); END; /
インスタンス化SCNの設定の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
手順4で作成した適用プロセスを起動します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.START_APPLY( apply_name => 'apply_cap_proc'); END; /
同期取得で取得された変更を適用した適用プロセスを削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.DROP_APPLY( apply_name => 'apply_sync_cap'); END; /
手順20で削除した適用プロセスによって使用されたキューが不要であれば、削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.REMOVE_QUEUE( queue_name => 'strmadmin.sync_cap_dest', drop_unused_queue_table => TRUE); END; /
SQL*Plusで、ソース・データベースにOracle Streams管理者としてログインします。
手順9で作成した取得プロセスを起動します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'cap_proc'); END; /
同期取得を削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.DROP_CAPTURE( capture_name => 'sync_cap'); END; /
同期取得で取得された変更を送信した伝播を削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_PROPAGATION_ADM.DROP_PROPAGATION( propagation_name => 'sync_cap_prop'); END; /
手順24と25で削除した同期取得および伝播によって使用されたキューが不要であれば、削除します。
この例では、次のプロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.REMOVE_QUEUE( queue_name => 'strmadmin.sync_cap_source', drop_unused_queue_table => TRUE); END; /
双方向レプリケーション環境の場合、これらの手順を個別に実行して、同期取得から取得プロセスに双方向で切り替えることができます。