162 DBMS_STREAMS_ADM
DBMS_STREAMS_ADM
パッケージは、Oracle Streamsパッケージの1つであり、Oracle Streams環境を構成するためのサブプログラムを提供します。
また、このパッケージには、取得、伝播、適用およびデキューに関する簡単なルールの追加と削除を、表、スキーマおよびデータベースのレベルで実行するためのサブプログラムもあります。このパッケージには、XStreamアウトバウンド・サーバーおよびインバウンド・サーバーを構成および管理するためのサブプログラムも含まれます。
この章のトピックは、次のとおりです:
162.1 DBMS_STREAMS_ADMの概要
DBMS_STREAMS_ADM
パッケージは、Oracle Streamsパッケージの1つであり、Oracle Streams環境を構成するためのサブプログラムを提供します。
また、このパッケージには、取得、伝播、適用およびデキューに関する簡単なルールの追加と削除を、表、スキーマおよびデータベースのレベルで実行するためのサブプログラムもあります。これらのルールでは、論理変更レコード(LCR)がサポートされ、LCRには、行のLCRとデータ定義言語(DDL)のLCRがあります。このパッケージには、特定のメッセージ・タイプのメッセージ・ルールを作成するサブプログラムが用意されています。また、キューの作成およびOracle Streamsメタデータ(データ・ディクショナリ情報など)の管理を実行するサブプログラムもあります。
より複雑なルールが必要な場合は、「DBMS_RULE」パッケージを参照してください。
参照:
-
このパッケージおよびOracle Streamsの詳細は、『Oracle Streamsレプリケーション管理者ガイド』のOracle Streams概要および管理に関する項を参照してください。
162.2 DBMS_STREAMS_ADMの推奨されないサブプログラム
次のDBMS_STREAMS_ADMサブプログラムは、非推奨になりました。
ノート:
推奨されないサブプログラムは、使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
Oracle Database 10g リリース2(10.2)以上では、次のサブプログラムの使用は推奨されていません。
-
MAINTAIN_SIMPLE_TABLESPACE
このプロシージャのかわりに
MAINTAIN_SIMPLE_TTS
プロシージャを使用してください。 -
MAINTAIN_TABLESPACES
このプロシージャのかわりに
MAINTAIN_TTS
プロシージャを使用してください。
162.3 DBMS_STREAMS_ADMのセキュリティ・モデル
このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE
権限を付与するか、選択したユーザーまたはロールにEXECUTE_CATALOG_ROLE
を付与することで制御できます。
パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE
権限を直接付与する必要があります。ロールを通して付与することはできません。
ユーザーは各Oracle Streamsクライアントと関連付けられます。
ノート:
ユーザーには、このパッケージ内のサブプログラムを使用して複数の管理タスク(同期取得の作成など)を実行するための追加の権限を付与する必要があります。サブプログラムのために追加の権限が必要な場合、その権限は、サブプログラムを説明する項に記載されています。
Oracle Streams管理者
このパッケージ内のサブプログラムを実行するユーザーが必要な権限を所有するには、Oracle Streams管理者を構成し、このパッケージを使用するときにOracle Streams管理者として接続します。
参照:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
取得ユーザー
次のプロシージャを使用すると、取得プロセスを作成できます。
次のプロシージャを使用すると、同期取得を作成できます。
これらのプロシージャの1つによって取得プロセスまたは同期取得が作成されると、現行のユーザーが取得ユーザーとして設定されます。取得ユーザーとは、そのユーザーのセキュリティ・ドメイン内で、取得プロセスまたは同期取得が、そのルール・セットを満たす変更を取得し、これらのルールに対して構成されているカスタム・ルールベースの変換を実行するユーザーのことです。このユーザーには、変更を取得するためのいくつかの権限が必要です。前述のプロシージャを実行すると、取得プロセスまたは同期取得で使用されるキューに対するENQUEUE
権限が取得ユーザーに付与され、その取得ユーザーがキューの保護キュー・ユーザーとして構成されます。
参照:
変更の取得に必要な権限は、「CREATE_CAPTUREプロシージャ」および「CREATE_SYNC_CAPTUREプロシージャ」を参照してください(「capture_user
パラメータ」を参照)。
伝播ユーザー
次のプロシージャを使用すると、伝播を作成できます。
伝播の作成時には、伝播ジョブも作成されることがあります。前述のプロシージャの1つを実行するときに伝播ジョブが作成されると、そのプロシージャを実行するユーザーが伝播ジョブの所有者になります。各伝播ジョブはOracle Schedulerジョブです。Oracle Schedulerを使用して、伝播ジョブのスケジュールを調整できます。
ノート:
-
ソース・キューの所有者が伝播を実行しますが、伝播ジョブの所有者はそれを作成したユーザーです。この2人のユーザーは同一であっても異なっていてもかまいません。
-
伝播を正しく動作させるには、メッセージを伝播するのに必要な権限をソース・キューの所有者に付与する必要があります。
参照:
-
必要な権限の詳細は、「CREATE_PROPAGATIONプロシージャ」を参照してください。
-
伝播ジョブが作成される場合については、「* Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ」を参照してください。
Oracle Streams適用プロセスの適用ユーザー
次のプロシージャを使用すると、適用プロセスを作成できます。
これらのプロシージャの1つによって適用プロセスが作成されると、現行のユーザーが適用ユーザーとして設定されます。適用プロセスにおける適用ユーザーとは、そのセキュリティ・ドメイン内で、適用プロセスが、そのルール・セットを満たすメッセージをデキューするユーザーのことです。
適用ユーザーは、データベース・オブジェクトにメッセージを直接適用し、適用プロセス・ルールに対して構成されているカスタム・ルールベースの変換を実行し、適用プロセスに対して構成されている適用ハンドラを実行します。このユーザーには、変更を適用できる権限が必要です。前述のプロシージャを実行すると、適用プロセスで使用されるキューに対するDEQUEUE
権限が適用ユーザーに付与され、その適用ユーザーがキューの保護キュー・ユーザーとして構成されます。
参照:
変更の適用に必要な権限は、「CREATE_APPLYプロシージャ」を参照してください(「apply_user
パラメータ」を参照)。
XStreamインバウンド・サーバーの適用ユーザー
次のプロシージャを使用すると、XStreamインバウンド・サーバーを作成できます。
ノート:
-
DBMS_XSTREAM_ADM
パッケージのプロシージャを使用して、ルールを作成したり、ルールをXStreamインバウンド・サーバーに追加することをお薦めします。詳細は、「DBMS_XSTREAM_ADM」を参照してください。 -
これらのプロシージャでは、アウトバウンド・サーバーは作成できません。
streams_name
パラメータの設定がNULL
で、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが存在しない場合は、システム生成の名前で適用プロセスが自動的に作成されます。
適用プロセスは、取得プロセスから取得された論理変更レコード(LCR)を受信する場合は、適用プロセスのままです。適用プロセスは、取得プロセスから取得されたLCRを受信する前にXStreamクライアント・アプリケーションに連結されると、インバウンド・サーバーになることができます。初期接続の後では、適用プロセスがインバウンド・サーバーに変更されることはなく、インバウンド・サーバーが適用プロセスに変更されることもありません。
これらのプロシージャの1つによってインバウンド・サーバーが作成されると、現行のユーザーが適用ユーザーとして設定されます。適用ユーザーとは、そのセキュリティ・ドメイン内で、XStreamクライアント・アプリケーションがOracle Databaseに連結されるユーザーのことです。
適用ユーザーは、データベース・オブジェクトに変更を直接適用し、インバウンド・サーバー・ルールに対して構成されているカスタム・ルールベースの変換を実行し、インバウンド・サーバーに対して構成されている適用ハンドラを実行します。このユーザーには、変更を適用できる権限が必要です。前述のプロシージャを実行すると、インバウンド・サーバーで使用されるキューに対するDEQUEUE
権限が適用ユーザーに付与され、その適用ユーザーが保護キュー・ユーザーとして構成されます。
各インバウンド・サーバーは、それぞれが一意の名前を持つ必要があります。この名前は、同じデータベースの適用プロセス、アウトバウンド・サーバーまたはメッセージ・クライアントでは使用できず、また、同じデータベースの別のインバウンド・サーバーでも使用できません。
関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが存在する場合、プロシージャではインバウンド・サーバーは作成されません。かわりに、プロシージャではその関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが使用されます。streams_name
パラメータで既存の適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが指定されている場合、その指定のクライアントが使用されます。
streams_name
パラメータがNULL
で、streams_type
パラメータがapply
に設定されている場合、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが次のいずれかの方法で特定されます。
-
source_database
パラメータで指定されるソース・データベースを使用し、queue_name
パラメータで指定されるキューを使用する既存の適用プロセスまたはアウトバウンド・サーバーが1つ存在する場合は、その適用プロセスまたはアウトバウンド・サーバーが選択されます。 -
source_database
パラメータの設定がNULL
で、queue_name
パラメータで指定されるキューを使用する既存の適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが1つ存在する場合は、その適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが選択されます。
streams_name
パラメータの設定がNULL
で、関連する適用プロセス、インバウンド・サーバーまたはアウトバウンド・サーバーが複数存在する場合は、エラーが発生します。
ノート:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。
メッセージ・クライアント・ユーザー
次のプロシージャを使用すると、メッセージ・クライアントを作成できます。
これらのプロシージャの1つによってメッセージ・クライアントが作成された場合は、メッセージ・クライアントを使用してキューからデキューする権限が、プロシージャを実行するユーザーに付与されます。前述のプロシージャを実行すると、このユーザーがキューの保護キュー・ユーザーとして構成され、このユーザーのみがメッセージ・クライアントを使用できます。
162.4 Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ
Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。XStreamクライアントには、XStreamアウトバウンド・サーバーおよびインバウンド・サーバーがあります。DBMS_STREAMS_ADM
パッケージのプロシージャの中には、Oracle StreamsクライアントおよびXStreamクライアントのルール・セットにルールを追加するものがあります。ルールは、REDOログ内の変更に関するルール、表に対するデータ操作言語(DML)変更に関するルール、論理変更レコード(LCR)に関するルール、ユーザー・メッセージに関するルールに分類することができます。
論理変更レコード(LCR)は、データ操作言語(DML)の操作によって生じる行の変更を表すか、データ定義言語(DDL)の変更を表します。行の変更を表すLCRは行LCRと呼ばれ、DDLの変更を表すLCRはDDL LCRと呼ばれます。つまり、LCRは、取得プロセスまたは同期取得によって収集された変更を表すか、ユーザーまたはアプリケーションによって行われる変更を表すことができます。ユーザー・メッセージは、ユーザーが定義したタイプに基づくカスタム・メッセージで、ユーザーまたはアプリケーションによって作成されます。
取得プロセス、伝播、適用プロセス、メッセージ・クライアント、アウトバウンド・サーバーまたはインバウンド・サーバーには、ポジティブ・ルール・セットとネガティブ・ルール・セットの両方を指定できます。同期取得には、ポジティブ・ルール・セットのみを指定できます。
サブセット・ルールを作成するプロシージャ以外のすべてのプロシージャ、および同期取得以外のすべてのクライアントでは、作成したルールに対してルール・セットのタイプ(ポジティブまたはネガティブ)を指定するため、inclusion_rule
パラメータを使用します。指定されたタイプのルール・セットがクライアントに存在しない場合は、ルール・セットが自動的に作成され、そのルール・セットにルールが追加されます。クライアントの既存のルール・セット内にある他のルールは、この影響を受けません。ルール・セットに新しいルールを追加するには、DBMS_STREAMS_ADM
パッケージまたはDBMS_RULE_ADM
パッケージを使用します。ポジティブ・ルール・セットとネガティブ・ルール・セットの両方がクライアントに存在する場合は、常にネガティブ・ルール・セットが先に評価されます。
ノート:
XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。
参照:
Oracle Streamsでルールを使用する方法の詳細は、『Oracle Streams概要および管理』を参照してください。
REDOログ内の変更に関する取得プロセス・ルール
次に示すプロシージャでstreams_type
パラメータにcapture
を指定すると、取得プロセスのルール・セットにルールが追加されます。
-
ADD_GLOBAL_RULES
プロシージャは、ソース・データベースに対するすべての変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。 -
ADD_SCHEMA_RULES
プロシージャは、指定したスキーマに対する変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。 -
ADD_SUBSET_RULES
プロシージャは、指定した表の行のサブセットに対するDMLの変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。 -
ADD_TABLE_RULES
プロシージャは、指定した表に対する変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。
前述のプロシージャの1つによって取得プロセスのポジティブ・ルール・セットにルールが追加されると、取得プロセスは、DMLの変更から生じる行の変更、またはDDLの変更(あるいはその両方)をソース・データベースから取得し、指定されたキューにそれらの変更をエンキューします。前述のプロシージャの1つによって取得プロセスのネガティブ・ルール・セットにルールが追加されると、取得プロセスは、行の変更、またはDDLの変更(あるいはその両方)をソース・データベースから削除します。
取得プロセスは、変更をソース・データベース上でローカルに取得するか、ダウンストリーム・データベース上でリモートに取得します。したがって、取得プロセス・ルールの場合は、ソース・データベース上またはダウンストリーム・データベース上でプロシージャを実行する必要があります。
取得プロセスがローカル取得プロセス、またはソース・データベースに対するデータベース・リンクを使用するダウンストリーム取得プロセスである場合は、インスタンス化に適したデータベース・オブジェクトが前述のプロシージャによって自動的に準備されます。
-
ADD_GLOBAL_RULES
は、DBMS_CAPTURE_ADM
パッケージのPREPARE_GLOBAL_INSTANTIATION
プロシージャをソース・データベースで起動します。 -
ADD_SCHEMA_RULES
は、DBMS_CAPTURE_ADM
パッケージのPREPARE_SCHEMA_INSTANTIATION
プロシージャをソース・データベースで起動します。 -
ADD_SUBSET_RULES
およびADD_TABLE_RULES
は、DBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャをソース・データベースで起動します。
また、これらのプロシージャによって、インスタンス化用に用意される表の主キー、一意キー、外部キーおよびビットマップ索引の列でのサプリメンタル・ロギングも可能になります。主キー列のログは、無条件に記録されます。一意キー、外部キーおよびビットマップ索引の列のログは、条件付きで記録されます。
取得プロセスがソース・データベースに対するデータベース・リンクを使用しないダウンストリーム取得プロセスの場合は、インスタンス化に適したデータベース・オブジェクトの準備、および必要なサプリメンタル・ロギングの指定をソース・データベースでユーザーが手動で行う必要があります。
前述のプロシージャの1つをダウンストリーム・データベース上で実行する場合は、ユーザーがsource_database
パラメータを使用してソース・データベースを指定し、あらかじめ存在する取得プロセスを指定する必要があります。このプロシージャがダウンストリーム・データベース上で実行される場合、プロシージャでは新たに取得プロセスを作成できません。ダウンストリーム・データベース上で取得プロセスを作成する場合は、DBMS_CAPTURE_ADM
パッケージのCREATE_CAPTURE
プロシージャを使用します。
参照:
CREATE_CAPTURE
プロシージャ、およびインスタンス化するデータベース・オブジェクトを準備するプロシージャの詳細は、「DBMS_CAPTURE_ADMサブプログラムの要約」を参照してください。
表に対するDML変更に関する同期取得ルール
次に示すプロシージャでstreams_type
パラメータにsync_capture
を指定すると、同期取得のルール・セットにルールが追加されます。
-
ADD_SUBSET_RULES
プロシージャは、指定した表の行のサブセットに対するDMLの変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。 -
ADD_TABLE_RULES
プロシージャは、指定した表に対するDML変更に関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。
前述のプロシージャの1つによって同期取得のポジティブ・ルール・セットにルールが追加されると、同期取得はソース・データベースでの表に対するDMLの変更から生じる行の変更を取得し、指定されたキューにそれらの変更をエンキューします。同期取得には、ネガティブ・ルール・セットを指定できません。
同期取得では、変更は同期取得が構成されたデータベースでローカルに取得されます。このデータベースは、同期取得によって取得される変更のソース・データベースです。したがって、同期取得ルールの場合は、ソース・データベース上でプロシージャを実行する必要があります。
これらのプロシージャでは、DBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションをソース・データベースで起動することによって、適切な表のインスタンス化が自動的に準備されます。
ノート:
-
同期取得では、
ADD_SUBSET_RULES
またはADD_TABLE_RULES
以外のプロシージャによって作成された、ルール・セット内のルールは無視されます。 -
ADD_TABLE_RULES
プロシージャまたはADD_SUBSET_RULES
プロシージャでルールが同期取得のルール・セットに追加される場合、プロシージャは指定した表の排他ロックを取得する必要があります。指定された表に未処理のトランザクションがある場合、プロシージャはロックを取得できるまで待機します。
LCRに関する伝播ルール
次のプロシージャは、LCRに関する伝播ルールを伝播のルール・セットに追加します。
-
ADD_GLOBAL_PROPAGATION_RULES
プロシージャは、ソース・キューのすべてのLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_GLOBAL_PROPAGATION_RULESプロシージャ」を参照してください。 -
ADD_SCHEMA_PROPAGATION_RULES
プロシージャは、ソース・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SCHEMA_PROPAGATION_RULESプロシージャ」を参照してください。 -
ADD_SUBSET_PROPAGATION_RULES
プロシージャは、ソース・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SUBSET_PROPAGATION_RULESプロシージャ」を参照してください。 -
ADD_TABLE_PROPAGATION_RULES
プロシージャは、ソース・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_TABLE_PROPAGATION_RULESプロシージャ」を参照してください。
前述のプロシージャの1つによって伝播のポジティブ・ルール・セットに伝播ルールが追加される場合、追加された伝播ルールに従い、ソース・キューのLCRが宛先キューに伝播されます。前述のプロシージャの1つによって伝播のネガティブ・ルール・セットに伝播ルールが追加される場合、追加された伝播ルールに従い、ソース・キューのLCRが破棄されます。前述のプロシージャの1つを使用してルールを追加するときに、source_databse
パラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。
ユーザー・メッセージに関する伝播ルール
ADD_MESSAGE_PROPAGATION_RULE
プロシージャは、伝播のルール・セットに対してメッセージ・ルールを追加します。このプロシージャによって伝播のポジティブ・ルール・セットにルールが追加される場合、追加された伝播ルールに従い、特定タイプのユーザー・メッセージのうち、ルール条件がTRUE
と評価されるメッセージがソース・キューから宛先キューに伝播されます。このプロシージャによって伝播のネガティブ・ルール・セットにルールが追加される場合、追加された伝播ルールに従い、ソース・キュー内の特定タイプのユーザー・メッセージのうち、ルール条件がTRUE
と評価されるメッセージが伝播によって破棄されます。このプロシージャによって作成されるルールには自動的にルール名が割り当てられます。
LCRに関する適用プロセス・ルール
次に示すプロシージャでstreams_type
パラメータにapply
を指定し、streams_name
パラメータに適用プロセスを指定すると、適用プロセスのルール・セットにルールが追加されます。
-
ADD_GLOBAL_RULES
プロシージャは、適用プロセス・キュー内のすべてのLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。 -
ADD_SCHEMA_RULES
プロシージャは、適用プロセス・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。 -
ADD_SUBSET_RULES
プロシージャは、適用プロセス・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。 -
ADD_TABLE_RULES
プロシージャは、適用プロセス・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。
前述のプロシージャの1つによって適用プロセスのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、適用プロセスのキュー内のLCRが適用されます。前述のプロシージャの1つによって適用プロセスのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、適用プロセスのキュー内のLCRが破棄されます。適用プロセス・ルールの場合、これらのプロシージャを接続先データベースで実行する必要があります。
前述のプロシージャの1つで作成した適用プロセスによって変更を適用すると、値が'00'
(2桁のゼロ)のタグが接続先データベースのREDOログ内に作成されます。DBMS_APPLY_ADM
パッケージのALTER_APPLY
プロシージャを使用すると、適用プロセスの作成後に必要に応じてタグの値を変更できます。
適用プロセスは、単一のソース・データベースから取得したLCRを適用できます。前述のプロシージャの1つによって適用プロセスが作成される場合は、source_database
パラメータを使用して、適用プロセスにソース・データベースを指定する必要があります。source_database
パラメータがNULL
で、前述のプロシージャの1つによって適用プロセスが作成される場合は、適用プロセスに渡される最初のLCRのソース・データベース名が適用プロセス用のソース・データベースとして使用されます。
適用プロセス・ルール・セットのルールによって、適用プロセスがデキューするメッセージが決まります。前述のプロシージャの1つを使用してルールを追加するときに、source_database
パラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。適用プロセスのソース・データベースとは異なるソース・データベースで、適用プロセスによるLCRのデキューを行うと、エラーが発生します。また、既存の適用プロセスにルールを追加する場合は、適用プロセス用のソース・データベースと異なるデータベースをsource_database
パラメータに指定できません。適用プロセスのソース・データベースを特定する場合は、DBA_APPLY_PROGRESS
データ・ディクショナリ・ビューへの問合せを行います。
前述のプロシージャの1つで作成した適用プロセスによって適用できるのは、ローカル・データベース上のメッセージと、取得済のメッセージに限られます。リモート・データベース上のメッセージを適用する適用プロセス、またはユーザー・メッセージを適用する適用プロセスを作成するには、DBMS_APPLY_ADM
パッケージのCREATE_APPLY
プロシージャを使用します。
また、DBMS_APPLY_ADM.CREATE_APPLY
プロシージャを実行するときは、apply_captured
、apply_user
、apply_database_link
、apply_tag
の各パラメータに対してデフォルト以外の値を指定できます。作成済の適用プロセスのルール・セットにルールを追加するには、DBMS_STREAMS_ADM
パッケージ内のいずれかのプロシージャを使用します。
ユーザー・メッセージに関する適用プロセス・ルール
ADD_MESSAGE_RULE
プロシージャのstreams_type
パラメータにapply
を指定すると、適用プロセスのルール・セットに対してメッセージ・ルールが追加されます。適用プロセス・ルールの場合は、このプロシージャを接続先データベースで実行する必要があります。
このプロシージャによって適用プロセスのポジティブ・ルール・セットにルールが追加される場合、ユーザー・メッセージのうち、適用プロセス・ルールを満たす特定タイプのメッセージが適用プロセスによってデキューされ、メッセージ・ハンドラに送信されます。適用プロセス用のメッセージ・ハンドラが指定されていない場合は、DBMS_APPLY_ADM
パッケージのALTER_APPLY
プロシージャを使用して、メッセージ・ハンドラを設定する必要があります。このプロシージャによって適用プロセスのネガティブ・ルール・セットにルールが追加される場合、ユーザー・メッセージのうち、適用プロセス・ルールを満たす特定タイプのメッセージが適用プロセスによって破棄されます。
LCRに関するメッセージ・クライアント・ルール
次に示すプロシージャでstreams_type
パラメータにdequeue
を指定すると、メッセージ・クライアントのルール・セットにルールが追加されます。
-
ADD_GLOBAL_RULES
プロシージャは、メッセージ・クライアント・キュー内のすべてのLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_GLOBAL_RULESプロシージャ」を参照してください。 -
ADD_SCHEMA_RULES
プロシージャは、メッセージ・クライアント・キュー内のLCRのうち、指定したスキーマに対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SCHEMA_RULESプロシージャ」を参照してください。 -
ADD_SUBSET_RULES
プロシージャは、メッセージ・クライアント・キュー内の行LCRのうち、指定した表の行のサブセットに対するDMLの変更結果が記録される行LCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_SUBSET_RULESプロシージャ」を参照してください。 -
ADD_TABLE_RULES
プロシージャは、メッセージ・クライアント・キュー内のLCRのうち、指定した表に対する変更が記録されるLCRに関してルール条件がTRUE
と評価されるルールを追加します。詳細は、「ADD_TABLE_RULESプロシージャ」を参照してください。
前述のプロシージャの1つによってメッセージ・クライアントのポジティブ・ルール・セットにルールが追加されると、メッセージ・クライアントは、source_database
パラメータで指定したソース・データベースで作成された永続的な行LCRまたはDDL LCR(あるいはその両方)をデキューできます。前述のプロシージャの1つによってメッセージ・クライアントのネガティブ・ルール・セットにルールが追加されると、メッセージ・クライアントは、source_database
パラメータで指定されるソース・データベース上で作成された永続的な行LCRまたはDDL LCR(あるいはその両方)を破棄します。これらのプロシージャは、メッセージ・クライアントによってメッセージをデキューするデータベース上で実行する必要があります。
ユーザー・メッセージに関するメッセージ・クライアント・ルール
ADD_MESSAGE_RULE
プロシージャではstreams_type
パラメータにdequeue
を指定すると、メッセージ・クライアントのルール・セットに対してメッセージ・ルールが追加されます。このプロシージャは、メッセージをデキューするデータベース上で実行する必要があります。
このプロシージャによってメッセージ・クライアントのポジティブ・ルール・セットにルールが追加された場合、ユーザー・メッセージのうち、メッセージ・ルールを満たす特定タイプのメッセージがメッセージ・クライアントによってデキューされます。このプロシージャによってメッセージ・クライアントのネガティブ・ルール・セットにルールが追加された場合、ユーザー・メッセージのうち、メッセージ・ルールを満たす特定タイプのメッセージがメッセージ・クライアントによって破棄されます。
LCRに関するXStreamアウトバウンド・サーバー・ルール
次に示すプロシージャでstreams_type
パラメータにapply
を指定し、streams_name
パラメータにXStreamアウトバウンド・サーバーを指定すると、指定したアウトバウンド・サーバーのルール・セットにルールが追加されます。
-
ADD_GLOBAL_RULES
プロシージャは、すべてのLCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_SCHEMA_RULES
プロシージャは、指定したスキーマに対する変更が含まれるLCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_SUBSET_RULES
プロシージャは、指定した表の行のサブセットに対するDMLの変更結果が含まれる行LCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_TABLE_RULES
プロシージャは、指定した表に対する変更が含まれるLCRに関してルール条件がTRUE
と評価されるルールを追加します。
これらのルールは、アウトバウンド・サーバーのキュー内のLCRに対して評価されます。
前述のプロシージャの1つによってアウトバウンド・サーバーのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、アウトバウンド・サーバーのキュー内のLCRがXStreamクライアント・アプリケーションに送信されます。前述のプロシージャの1つによってアウトバウンド・サーバーのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、アウトバウンド・サーバーのキュー内のLCRが破棄されます。アウトバウンド・サーバー・ルールの場合、XStreamクライアント・アプリケーションの連結先のデータベースで前述のプロシージャを実行してください。
アウトバウンド・サーバーは、単一のソース・データベースから取得したLCRを処理できます。ソース・データベースは、変更が発生したデータベースです。前述のプロシージャの1つによってアウトバウンド・サーバーのルール・セットにルールが追加される場合は、source_database
パラメータを使用して、アウトバウンド・サーバーにソース・データベースを指定する必要があります。
アウトバウンド・サーバーのルール・セットのルールによって、アウトバウンド・サーバーがデキューするLCRが決まります。前述のプロシージャの1つを使用してルールを追加するときに、source_database
パラメータに値を指定すると、指定したソース・データベースに関する条件がルールに組み込まれます。アウトバウンド・サーバーのソース・データベースとは異なるソース・データベースで、アウトバウンド・サーバーによるLCRのデキューを行うと、エラーが発生します。また、既存のアウトバウンド・サーバーにルールを追加する場合は、アウトバウンド・サーバー用のソース・データベースと異なるデータベースをsource_database
パラメータに指定できません。アウトバウンド・サーバーのソース・データベースを特定する場合は、DBA_XSTREAM_OUTBOUND
データ・ディクショナリ・ビューへの問合せを行います。
ノート:
これらのプロシージャでは、XStreamアウトバウンド・サーバーを作成できません。作成済のアウトバウンド・サーバーのルール・セットにルールを追加するには、DBMS_STREAMS_ADM
パッケージ内のいずれかのプロシージャを使用します。
参照:
アウトバウンド・サーバーの作成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。
LCRに関するXStreamインバウンド・サーバー・ルール
次に示すプロシージャでstreams_type
パラメータにapply
を指定し、streams_name
パラメータにXStreamインバウンド・サーバーを指定すると、指定したインバウンド・サーバーのルール・セットにルールが追加されます。
-
ADD_GLOBAL_RULES
プロシージャは、インバウンド・サーバーに送信されたすべてのLCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_SCHEMA_RULES
プロシージャは、インバウンド・サーバーに送信された、指定したスキーマに対する変更が含まれるLCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_SUBSET_RULES
プロシージャは、インバウンド・サーバーに送信された、指定した表の行のサブセットに対するデータ定義言語(DML)の変更結果が含まれる行LCRに関してルール条件がTRUE
と評価されるルールを追加します。 -
ADD_TABLE_RULES
プロシージャは、インバウンド・サーバーに送信された、指定した表に対する変更が含まれるLCRに関してルール条件がTRUE
と評価されるルールを追加します。
前述のプロシージャの1つによってインバウンド・サーバーのポジティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたLCRが適用されます。前述のプロシージャの1つによってインバウンド・サーバーのネガティブ・ルール・セットにルールが追加される場合、追加されたルールに従い、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたLCRが破棄されます。インバウンド・サーバー・ルールの場合、XStreamクライアント・アプリケーションの連結先のデータベースで前述のプロシージャを実行してください。インバウンド・サーバーにルール・セットが存在しない場合、XStreamクライアント・アプリケーションによってインバウンド・サーバーに送信されたすべてのLCRが適用されます。
前述のプロシージャの1つで作成したインバウンド・サーバーによって変更を適用すると、値が'00'
(2桁のゼロ)のタグが接続先データベースのREDOログ内に作成されます。DBMS_APPLY_ADM
パッケージのALTER_APPLY
プロシージャを使用すると、インバウンド・サーバーの作成後に必要に応じてタグの値を変更できます。
XStreamインバウンド・サーバーのルール・セットのルールによって、XStreamクライアント・アプリケーションからLCRを受信した後にどのLCRが適用され、どのLCRが破棄されるかが決まります。インバウンド・サーバーでは、XStreamクライアント・アプリケーションから送信されたLCRのみが処理されます。
前述のプロシージャの1つによってインバウンド・サーバーのルールが作成される場合、source_database
パラメータは無視されます。
ノート:
streams_name
パラメータに指定された名前が存在しない場合、前述のプロシージャでは常に適用プロセスが作成されます。適用プロセスは、取得プロセスから取得されたLCRを受信する場合は、適用プロセスのままです。適用プロセスは、取得プロセスからLCRを受信する前にXStreamクライアント・アプリケーションに連結されると、インバウンド・サーバーになることができます。初期接続の後では、適用プロセスがインバウンド・サーバーに変更されることはなく、インバウンド・サーバーが適用プロセスに変更されることもありません。
参照:
インバウンド・サーバーの作成の詳細は、Oracle DatabaseのXStreamガイドを参照してください。
162.5 Oracle Streams環境を構成するプロシージャ
このパッケージの次のプロシージャは、Oracle Streamsで管理される環境を構成します。
-
MAINTAIN_CHANGE_TABLEプロシージャは、ソース・テーブルに対して行われたデータ操作言語(DML)の変更をチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。
-
MAINTAIN_GLOBALプロシージャは、データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。
-
MAINTAIN_SCHEMASプロシージャは、指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。
-
MAINTAIN_SIMPLE_TTSプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベースに作成し、指定された表領域への変更をこれらの2つのデータベース間でレプリケートするOracle Streams環境を構成します。
-
MAINTAIN_TABLESプロシージャは、指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。
-
MAINTAIN_TTSプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベースに作成し、指定された表領域への変更をこれらの2つのデータベース間でレプリケートするOracle Streams環境を構成します。
-
PRE_INSTANTIATION_SETUPプロシージャおよびPOST_INSTANTIATION_SETUPプロシージャ
Oracle Streamsレプリケーションの構成を完了するには、PRE_INSTANTIATION_SETUP
プロシージャとPOST_INSTANTIATION_SETUP
プロシージャの両方を組み合せて使用する必要があります。通常、PRE_INSTANTIATION_SETUP
プロシージャとPOST_INSTANTIATION_SETUP
プロシージャは、データベースの保守操作に使用されます(停止時間はほとんど生じません)。詳細は、『Oracle Streams概要および管理』を参照してください。
参照:
これらのプロシージャの使用方法の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
自動プラットフォーム変換
ソース・データベースと接続先データベースを異なるプラットフォームで実行する場合は、転送されるデータファイルが、これらのプロシージャまたはこれらのプロシージャで生成されるスクリプトによって適切なプラットフォームに自動的に変換されます。
これらのプロシージャで実行される処理
これらのプロシージャのいずれかによって実行される全アクションの詳細を表示するには、プロシージャを使用してスクリプトを生成し、このスクリプトをテキスト・エディタで表示します。
構成の進行状況およびリカバリ機能
perform_actions
パラメータをTRUE
に設定して、これらのいずれかのプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT
、DBA_RECOVERABLE_SCRIPT_PARAMS
、DBA_RECOVERABLE_SCRIPT_BLOCKS
およびDBA_RECOVERABLE_SCRIPT_ERRORS
に記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATION
プロシージャを使用すると、構成を完了できます。
ノート:
perform_actions
パラメータをFALSE
に設定して、これらのいずれかのプロシージャを実行した場合は、前述のビューにデータが格納されません。また、これらのいずれかのプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。
これらのプロシージャの実行要件
これらのいずれかのプロシージャを使用する場合は、次の要件を満たすように注意してください。
-
プロシージャは、取得データベースで実行します。取得データベースとは、ソース・データベースに加えられた変更を取得する取得プロセスを含むデータベースのことです。取得データベースがソース・データベースと同一の場合は、ローカル取得プロセスが構成されます。取得データベースがソース・データベースと異なる場合は、ダウンストリーム取得プロセスが構成されます。取得データベースの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
プロシージャを実行するユーザーは、ソース・データベースから接続先データベースへのデータベース・リンクを使用できる必要があります。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。
-
プロシージャでダウンストリーム取得を構成する場合は、取得データベース上の対応するユーザーが、データベース・リンクを使用してソース・データベースにアクセスできる必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。
-
プロシージャでダウンストリーム取得を構成し、取得データベースが接続先データベースと異なる場合は、取得データベース上の対応するユーザーが、データベース・リンクを使用して接続先データベースにアクセスできる必要があります。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。
-
構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、
destination_database
パラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。 -
プロシージャを実行するユーザーには、
DBA
ロールを付与してください。また、次の処理を実行するための権限も必要です。-
ANYDATA
キュー、取得プロセス、伝播および適用プロセスを作成する権限。 -
サプリメンタル・ロギングを指定する権限。
-
DBMS_STREAMS_ADM
およびDBMS_AQADM
パッケージのサブプログラムを実行する権限。 -
destination_database
パラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。
通常、
DBA
ロールは、構成の完了後に必要に応じてユーザーから取り消します。 -
-
プロシージャまたはこれらのプロシージャによって生成されるスクリプトは、Oracle Database 10gリリース2以上のデータベースで実行する必要があります。
-
プロシージャで
perform_actions
パラメータをTRUE
に設定してOracle Streams環境を直接構成する場合は、そのプロシージャで構成されるすべてのデータベースがOracle Database 10gリリース2以上のデータベースである必要があります。 -
プロシージャで
perform_actions
パラメータをFALSE
に設定し、生成されたスクリプトで環境を構成する場合は、そのスクリプトで構成されるデータベースがOracle Database 10gリリース1以上である必要があります。スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。 -
指定する各ディレクトリ・オブジェクトは、SQL文の
CREATE
DIRECTORY
を使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限が必要です。 -
プロシージャに
bi_directional
パラメータが含まれており、そのbi_directional
パラメータがTRUE
に設定されている場合、またはソース・データベースが取得データベースでない場合は、共有するデータベース・オブジェクトが含まれているデータベースをsource_database
パラメータで指定する必要があります。destination_database
パラメータで指定するデータベースには、これらのデータベース・オブジェクトが含まれない場合があります。接続先データベースに共有データベース・オブジェクトが含まれていない場合、プロシージャ(PRE_INSTANTIATION_SETUP
プロシージャおよびPOST_INSTANTIATION_SETUP
プロシージャは除く)は、接続先データベースのデータベース・オブジェクトをインスタンス化します。 -
プロシージャに
bi_directional
パラメータが含まれており、そのbi_directional
パラメータがTRUE
に設定されている場合、またはネットワークのインスタンス化を実行する場合は、接続先データベース上の対応するユーザーが、データベース・リンクを使用してソース・データベースにアクセスできる必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。
これらのプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。
参照:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構成プロシージャの共通パラメータ
表162-1 構成プロシージャの共通パラメータ
パラメータ | 説明 |
---|---|
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。 指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベースへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。
ノート: 取得プロセスは、作成した後で名前を変更することはできません。 |
|
取得プロセスで使用する各キューのキュー表の名前で、
|
|
取得プロセスで使用する各キューの名前で、 スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。
|
|
ソース・データベース内のキューに対する
|
|
変更を転送するように構成する各伝播の名前。所有者を指定しないでください。 指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、変更を転送するためのルールが伝播のポジティブ・ルール・セットに追加されます。
ノート: 伝播は、作成した後で名前を変更することは変更できません。 |
|
変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。 指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。 指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。
ノート: 適用プロセスは、作成した後で名前を変更することはできません。 |
|
適用プロセスで使用する各キューのキュー表の名前で、
|
|
適用プロセスで使用する各キューの名前で、 スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。
|
|
接続先データベース内のキューに対する
|
|
関連項目: 伝播が構成される場合については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
DMLとDDLの両方の変更を管理するOracle Streamsレプリケーション環境を構成する場合は、 DML変更のみを管理するOracle Streamsレプリケーション環境を構成する場合は、 |
162.6 DBMS_STREAMS_ADMサブプログラムの要約
この表は、DBMS_STREAMS_ADM
サブプログラムを示し、簡単に説明しています。
表162-2 DBMS_STREAMS_ADMパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。 |
|
伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。 |
|
取得プロセス、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。 |
|
伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。 |
|
適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。 |
|
伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。 |
|
取得プロセス、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。 |
|
伝播のポジティブ・ルール・セットにサブセット・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。 |
|
取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントのポジティブ・ルール・セットにサブセット・ルールを追加します。指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。 |
|
伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。 |
|
取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントのルール・セットに表ルールを追加します。指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は作成します。 |
|
このパッケージの |
|
指定されたルールを満たす行LCRから列を削除する宣言ルールベースの変換を追加または削除します。 |
|
現在のセッションの追跡ラベルを戻します。 |
|
Oracle Streamsレプリケーション環境内のOracle Streamsの取得プロセスと適用プロセスで使用するために、システム変更番号(SCN)に関する情報を取り出します。 |
|
現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。 |
|
指定されたルールを満たす行LCR内の列のリストを保持する宣言ルールベースの変換を追加または削除します。 |
|
ソース・テーブルに対して行われたデータ操作言語(DML)の変更をチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。 |
|
データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。 |
|
指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。 |
|
ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。このプロシージャの使用は推奨されていません。 |
|
ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。 |
|
指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。 |
|
ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。このプロシージャの使用は推奨されていません。 |
|
ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。 |
|
1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。 |
|
元の取得プロセスおよびクローニングされた取得が、指定されたマージしきい値内にあるかどうかを判別し、マージしきい値内にある場合は、 |
|
Oracle Streamsレプリケーション環境を構成するために、インスタンス化後に必要な処理を実行します。 |
|
Oracle Streamsレプリケーション環境を構成するために、インスタンス化前に必要な処理を実行します。 |
|
指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。 |
|
エラーが発生したため停止したOracle Streamsレプリケーション構成の操作に対するオプションを提供します。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。 |
|
指定された |
|
指定された取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアントに関連付けられたルール・セットから、特定のルールまたはすべてのルールを削除します。 |
|
ローカル・データベースからOracle Streams構成を削除します。 |
|
指定されたルールを満たす行LCR内の列の名前を変更する宣言ルールベースの変換を追加または削除します。 |
|
指定されたルールを満たす行LCR内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。 |
|
指定されたルールを満たす行LCR内の表の名前を変更する宣言ルールベースの変換を追加または削除します。 |
|
指定されたOracle Streamsメッセージ・クライアントによって特定のキューからデキュー可能なメッセージに関する通知を設定します。 |
|
現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。 |
|
ルールベースの変換に関する変換ファンクション名を設定または削除します。 |
|
現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。 |
|
Oracle Streamsの取得機能、伝播機能および適用機能で使用するキュー表とキューを作成します。 |
|
取得プロセスからの1つのストリームを、その取得プロセスからの他のすべてのストリームから分割します。 |
ノート:
特に指定がないかぎり、すべてのサブプログラムがコミットされます。
162.6.1 ADD_COLUMNプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)に列を追加する宣言ルールベースの変換を追加または削除します。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
このプロシージャはオーバーロードされています。column_value
パラメータとcolumn_function
パラメータは、両方同時には指定できません。
ノート:
-
ADD_COLUMN
変換では、BLOB
、CLOB
、NCLOB
、BFILE
、LONG
、LONG
RAW
、ROWID
、ユーザー定義タイプ(オブジェクト・タイプ、REF
、VARRAY、ネストした表)およびオラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプ)などは追加できません。 -
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.ADD_COLUMN( rule_name IN VARCHAR2, table_name IN VARCHAR2, column_name IN VARCHAR2, column_value IN ANYDATA, value_type IN VARCHAR2 DEFAULT 'NEW', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
DBMS_STREAMS_ADM.ADD_COLUMN( rule_name IN VARCHAR2, table_name IN VARCHAR2, column_name IN VARCHAR2, column_function IN VARCHAR2, value_type IN VARCHAR2 DEFAULT 'NEW', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-3 ADD_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
行LCRで列を追加する表の名前で、 |
|
ルールを満たす各行LCRに追加する列の名前。 |
|
追加する列の値。列のデータ・タイプおよび値に適した
|
|
このファンクションは、ルールの評価結果が
|
|
行LCRの新しい値に列を追加する場合は、 行LCRの古い値に列を追加する場合は、 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対する列追加の宣言ルールベースの変換のうち、指定したパラメータ(table_name
、column_name
およびstep_number
)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合のADD_COLUMN
プロシージャの動作を示します。
table_name | column_name | step_number | 結果 |
---|---|---|---|
|
|
|
指定したルールに対するすべての列追加変換が削除されます。 |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
162.6.2 ADD_GLOBAL_PROPAGATION_RULESプロシージャ
このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにグローバル・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
構文
DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES( streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL); DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES( streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL);
パラメータ
表162-4 ADD_GLOBAL_PROPAGATION_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
伝播の名前所有者を指定しないでください。 指定された伝播が存在しない場合は、自動的に作成されます。 このパラメータが このパラメータが |
|
ソース・キューの名前で、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。 ノート: 接続修飾子は使用できません。 |
|
|
|
|
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が 伝播ルールではソース・データベースを指定することをお薦めします。 |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
|
このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。
関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。 |
使用上のノート
このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。
例
次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。
(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.3 ADD_GLOBAL_RULESプロシージャ
このプロシージャは、Oracle Streamsクライアント・ルール・セットにルールを追加します。
これは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。
-
streams_type
パラメータをcapture
に設定すると、このプロシージャは、データベース全体に対する変更を取得する取得プロセス・ルールを追加します。 -
streams_type
パラメータをapply
に設定し、streams_name
パラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内のすべての論理変更レコード(LCR)を適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。 -
streams_type
パラメータをdequeue
に設定すると、このプロシージャは、すべての永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
ノート:
グローバル・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていないデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに追加してください。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。
ノート:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
構文
DBMS_STREAMS_ADM.ADD_GLOBAL_RULES( streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL); DBMS_STREAMS_ADM.ADD_GLOBAL_RULES( streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-5 ADD_GLOBAL_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsクライアントのタイプを次のように指定します。
|
|
取得プロセス、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。 このパラメータが このパラメータが
このパラメータが このパラメータが 各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。 |
|
ローカル・キューの名前で、 たとえば、 取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。 |
|
|
|
|
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。 取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、 適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。 メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
使用上のノート
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(データベース名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。データベース名と順序番号を組み合せた名前が長すぎる場合は、データベース名が切り捨てられます。取得プロセス、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。
例
次に、DMLの変更に関して作成されるグローバル・ルール条件の例を示します。
(:dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.4 ADD_MESSAGE_PROPAGATION_RULEプロシージャ
このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにメッセージ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUT
パラメータrule_name
を使用しますが、もう一方のバージョンでは使用しません。
構文
DBMS_STREAMS_ADM.ADD_MESSAGE_PROPAGATION_RULE( message_type IN VARCHAR2, rule_condition IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, rule_name OUT VARCHAR2, queue_to_queue IN BOOLEAN DEFAULT NULL); DBMS_STREAMS_ADM.ADD_MESSAGE_PROPAGATION_RULE( message_type IN VARCHAR2, rule_condition IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, queue_to_queue IN BOOLEAN DEFAULT NULL);
パラメータ
表162-6 ADD_MESSAGE_PROPAGATION_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
メッセージのタイプ。このタイプには、 メッセージのタイプがOracle組込みタイプでない場合は、 たとえば、
関連項目: データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
メッセージのタイプに適用されるルール条件。ルール条件に指定されるルール変数名は、次のように指定する必要があります。 :msg 関連項目: 例 |
|
伝播の名前所有者を指定しないでください。 指定された伝播が存在しない場合は、自動的に作成されます。 このパラメータが このパラメータが |
|
ソース・キューの名前で、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。 ノート: 接続修飾子は使用できません。 |
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
ルール名が出力されます。 |
|
このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。
関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。 |
使用上のノート
このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。
このプロシージャを使用してメッセージ・ルール用の新しいルール・セットを作成する場合、新しいルール・セットには評価コンテキストがありません。指定したメッセージ・タイプに評価コンテキストが存在しない場合は、このプロシージャによって新しい評価コンテキストが作成され、新しいルールと関連付けられます。新しい評価コンテキストには、システム生成の名前が付けられます。既存のメッセージ・タイプを使用する新しいルールを作成した場合は、そのメッセージ・タイプ用の既存の評価コンテキストが新しいルールで使用されます。
例
メッセージ・タイプがVARCHAR2(128)
であるとします。このタイプでは、次のようなルール条件を指定できます。
':msg = ''HQ'''
VARCHAR2(128)
タイプのユーザー・メッセージの値がHQ
の場合、このルール条件はTRUE
と評価されます。
usr_msg
というメッセージ・タイプに、source_dbname
、owner
、name
およびmessage
の属性が設定されているとします。このタイプでは、次のようなルール条件を指定できます。
':msg.source_dbname = ''DBS1.NET'' AND ' || ':msg.owner = ''HR'' AND ' || ':msg.name = ''EMPLOYEES'''
このルール条件がTRUE
と評価されるのは、usr_msg
タイプのユーザー・メッセージのsource_dbname
属性がDBS1.NET
、owner
属性がHR
、およびname
属性がEMPLOYEES
の場合です。
ノート:
前述の例の引用符は、すべて一重引用符です。
162.6.5 ADD_MESSAGE_RULEプロシージャ
このプロシージャは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してメッセージ・ルールを追加します。
-
streams_type
パラメータをapply
に設定すると、このプロシージャは、特定のメッセージ・タイプのユーザー・メッセージをキューからデキューする適用プロセス・ルールを追加します。 -
streams_type
パラメータをdequeue
に設定すると、このプロシージャは、特定のメッセージ・タイプのユーザー・メッセージをキューからデキューするメッセージ・クライアント・ルールを追加します。
このプロシージャは、指定されたOracle Streamsクライアントが存在しない場合、そのOracle Streamsクライアントも作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンではOUT
パラメータrule_name
を使用しますが、もう一方のバージョンでは使用しません。
ノート:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
構文
DBMS_STREAMS_ADM.ADD_MESSAGE_RULE( message_type IN VARCHAR2, rule_condition IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', inclusion_rule IN BOOLEAN DEFAULT TRUE, rule_name OUT VARCHAR2); DBMS_STREAMS_ADM.ADD_MESSAGE_RULE( message_type IN VARCHAR2, rule_condition IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', inclusion_rule IN BOOLEAN DEFAULT TRUE);
パラメータ
表162-7 ADD_MESSAGE_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
メッセージのタイプ。このタイプには、 メッセージのタイプがOracle組込みタイプでない場合は、 たとえば、
関連項目: データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
メッセージのタイプに適用されるルール条件。ルール条件に指定されるルール変数名は、次のように指定する必要があります。 :msg 関連項目: 例 |
|
メッセージ・コンシューマのタイプ。 |
|
Oracle Streams適用プロセスまたはメッセージ・クライアントの名前。
このパラメータが このパラメータが 適用プロセスとメッセージ・クライアントに同じ名前を付けることはできません。 |
|
メッセージをデキューするローカル・キューの名前で、 たとえば、 |
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
ルール名が出力されます。 |
使用上のノート
適用プロセス・ルールを追加するときに、適用プロセスが存在しない場合は、このプロシージャによって作成されます。このプロシージャによって作成される適用プロセスは、ユーザー・メッセージのみを適用可能であり、デキューされたメッセージは、適用プロセス用のメッセージ・ハンドラに送信します。メッセージ・クライアント・ルールを追加するときに、メッセージ・クライアントが存在しない場合は、このプロシージャによって作成されます。
このプロシージャを使用してメッセージ・ルール用の新しいルール・セットを作成する場合、新しいルール・セットには評価コンテキストがありません。指定したメッセージ・タイプに評価コンテキストが存在しない場合は、このプロシージャによって新しい評価コンテキストが作成され、新しいルールと関連付けられます。新しい評価コンテキストには、システム生成の名前が付けられます。既存のメッセージ・タイプを使用する新しいルールを作成した場合は、そのメッセージ・タイプ用の既存の評価コンテキストが新しいルールで使用されます。
参照:
-
適用プロセス用のメッセージ・ハンドラの設定方法は、「ALTER_APPLYプロシージャ」を参照してください。
例
メッセージ・タイプがVARCHAR2(128)
であるとします。このタイプでは、次のようなルール条件を指定できます。
':msg = ''HQ'''
VARCHAR2(128)
タイプのユーザー・メッセージの値がHQ
の場合、このルール条件はTRUE
と評価されます。
usr_msg
というメッセージ・タイプに、source_dbname
、owner
、name
およびmessage
の属性が設定されているとします。このタイプでは、次のようなルール条件を指定できます。
':msg.source_dbname = ''DBS1.NET'' AND ' || ':msg.owner = ''HR'' AND ' || ':msg.name = ''EMPLOYEES'''
このルール条件がTRUE
と評価されるのは、usr_msg
タイプのユーザー・メッセージのsource_dbname
属性がDBS1.NET
、owner
属性がHR
、およびname
属性がEMPLOYEES
の場合です。
ノート:
前述の例の引用符は、すべて一重引用符です。
162.6.6 ADD_SCHEMA_PROPAGATION_RULESプロシージャ
このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにスキーマ・ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
構文
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES( schema_name IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL); DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES( schema_name IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL);
パラメータ
表162-8 ADD_SCHEMA_PROPAGATION_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。たとえば、 |
|
伝播の名前所有者を指定しないでください。 指定された伝播が存在しない場合は、自動的に作成されます。 このパラメータが このパラメータが |
|
ソース・キューの名前で、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。 ノート: 接続修飾子は使用できません。 |
|
|
|
|
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が 伝播ルールではソース・データベースを指定することをお薦めします。 |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
|
このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。
関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。 |
使用上のノート
このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。
例
次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。
((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.7 ADD_SCHEMA_RULESプロシージャ
このプロシージャは、Oracle Streamsクライアント・ルール・セットにルールを追加します。
これは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。
-
streams_type
パラメータをcapture
に設定すると、このプロシージャは、指定したスキーマに対する変更を取得する取得プロセス・ルールを追加します。 -
streams_type
パラメータをapply
に設定し、streams_name
パラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定したスキーマに対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。 -
streams_type
パラメータをdequeue
に設定すると、このプロシージャは、指定したスキーマに対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
指定された取得プロセス、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
ノート:
スキーマ・ルールを取得プロセスのポジティブ・ルールセットに追加する場合は、Oracle Streamsでサポートされていない、スキーマ内のデータベース・オブジェクトを除外するルールを、取得プロセスのネガティブ・ルールセットに必ず追加するようにしてください。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。
ノート:
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
構文
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES( schema_name IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL); DBMS_STREAMS_ADM.ADD_SCHEMA_RULES( schema_name IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-9 ADD_SCHEMA_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前。たとえば、 Oracle Streamsではスキーマの有無がチェックされないため、まだ存在しないスキーマも指定できます。 |
|
Oracle Streamsクライアントのタイプを次のように指定します。
|
|
取得プロセス、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。 このパラメータが このパラメータが
このパラメータが このパラメータが 各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。 |
|
ローカル・キューの名前で、 たとえば、 取得プロセス・ルールの場合は、取得プロセスによってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。 |
|
|
|
|
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。 取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、 適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。 メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
使用上のノート
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(スキーマ名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。スキーマ名と順序番号を組み合せた名前が長すぎる場合は、スキーマ名が切り捨てられます。取得プロセス、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。
例
次に、DMLの変更に関して作成されるスキーマ・ルール条件の例を示します。
((:dml.get_object_owner() = 'HR') and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.8 ADD_SUBSET_PROPAGATION_RULESプロシージャ
このプロシージャは、ソース・キュー内の論理変更レコード(LCR)のうち、指定した表の行のサブセットに関連するLCRを宛先キューに伝播するための伝播ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
構文
DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES( table_name IN VARCHAR2, dml_condition IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, insert_rule_name OUT VARCHAR2, update_rule_name OUT VARCHAR2, delete_rule_name OUT VARCHAR2, queue_to_queue IN BOOLEAN DEFAULT NULL); DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES( table_name IN VARCHAR2, dml_condition IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL);
パラメータ
表162-10 ADD_SUBSET_PROPAGATION_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
指定した表は、伝播と同じデータベースに存在する必要があります。また、指定した表では、現在および将来にわたり、LOB列、 |
|
サブセット条件。SQLの たとえば、
ノート: 前述の例の引用符は、すべて一重引用符です。 |
|
伝播の名前所有者を指定しないでください。 指定された伝播が存在しない場合は、自動的に作成されます。 このパラメータが このパラメータが |
|
ソース・キューの名前で、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。 ノート: 接続修飾子は使用できません。 |
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が 伝播ルールではソース・データベースを指定することをお薦めします。 |
|
システムによって生成された |
|
システムによって生成された |
|
システムによって生成された |
|
このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。
関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。 |
使用上のノート
このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。
このプロシージャを実行すると、指定された伝播に対して3つのルール(INSERT
文に関するルール、UPDATE
文に関するルール、DELETE
文に関するルール)が生成されます。INSERT
文とDELETE
文については、dml_condition
パラメータで指定された条件を満たす行LCRのみが伝播されます。UPDATE
文については、次のバリエーションがあります。
-
行LCRの新旧の値が両方とも指定の
dml_condition
を満たす場合、その行LCRは変更なしで伝播されます。 -
行LCRの新旧の値が両方とも指定の
dml_condition
を満たさない場合、その行LCRは伝播されません。 -
行LCRの古い値が指定の
dml_condition
を満たし、新しい値が満たさない場合、更新行LCRは削除行LCRに変換されます。 -
行LCRの新しい値が指定の
dml_condition
を満たし、古い値が満たさない場合、更新行LCRは挿入行LCRに変換されます。
更新が挿入または削除に変換されることを行の移行と呼びます。
伝播では、これらのルールがフィルタ処理に使用されます。伝播にポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に変更を伝播するためのルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。伝播の既存のポジティブ・ルール・セット内にある他のルールは、この影響を受けません。新しいルールを追加するには、DBMS_STREAMS_ADM
パッケージまたはDBMS_RULE_ADM
パッケージを使用します。
このプロシージャを実行すると、INSERT
文、UPDATE
文およびDELETE
文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULES
プロシージャがオーバーロードされているため、INSERT
文、UPDATE文
およびDELETE
文に対するシステム生成のルール名が戻されます。
表のサブセット・ルールを作成する場合は、表のすべての列を保持するソース・データベースで、無条件のサプリメンタル・ログ・グループを作成してください。サプリメンタル・ロギングは、更新を挿入に変換する必要がある場合に必要です。この変換を正しく実行するには、伝播ルールに列値がすべて設定されている必要があります。
ノート:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。
例
次に、行LCRのフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_condition
がregion_id = 2
、table_name
がhr.regions
、およびsource_database
がdbs1.net
である場合の更新操作を示します。
:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS' AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET' AND :dml.get_command_type()='UPDATE' AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL) AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL) AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2) AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)
162.6.9 ADD_SUBSET_RULESプロシージャ
このプロシージャは、Oracle Streamsクライアントにルールを追加します。
これは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。
-
streams_type
パラメータをcapture
に設定すると、このプロシージャは、指定した表の行のサブセットに対する変更を取得する取得プロセス・ルールを追加します。 -
streams_type
パラメータをsync_capture
に設定すると、このプロシージャは、指定した表の行のサブセットに対する変更を取得するルールを追加します。 -
streams_type
パラメータをapply
に設定し、streams_name
パラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定した表の行のサブセットに対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。 -
streams_type
パラメータをdequeue
に設定すると、このプロシージャは、指定した表の行のサブセットに対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは3つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
ノート:
-
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
-
起動ユーザーには、同期取得を作成するための
DBA
ロールを付与する必要があります。
構文
DBMS_STREAMS_ADM.ADD_SUBSET_RULES( table_name IN VARCHAR2, dml_condition IN VARCHAR2, streams_type IN VARCHAR2 DEFAULT 'apply', streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, insert_rule_name OUT VARCHAR2, update_rule_name OUT VARCHAR2, delete_rule_name OUT VARCHAR2); DBMS_STREAMS_ADM.ADD_SUBSET_RULES( table_name IN VARCHAR2, dml_condition IN VARCHAR2, streams_type IN VARCHAR2 DEFAULT 'apply', streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-11 ADD_SUBSET_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
指定する表は、取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントと同じデータベース内に存在する必要があります。また、指定した表では、現在および将来にわたり、LOB列、 |
|
サブセット条件。SQLの たとえば、
ノート: 前述の例の引用符は、すべて一重引用符です。 |
|
Oracle Streamsクライアントのタイプを次のように指定します。
|
|
取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。 このパラメータが このパラメータが
このパラメータが このパラメータが 各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。 |
|
ローカル・キューの名前で、 たとえば、 取得プロセス・ルールまたは同期取得ルールの場合は、取得プロセスまたは同期取得によってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。 |
|
通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、 関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。 取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、 同期取得ルールの場合は、ローカル・データベースの名前を指定します。 適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。 メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が |
|
システムによって生成された |
|
システムによって生成された |
|
システムによって生成された |
使用上のノート
このプロシージャを実行すると、指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントに対して3つのルール(INSERT
文に関するルール、UPDATE
文に関するルール、DELETE
文に関するルール)が生成されます。INSERT
文とDELETE
文については、dml_condition
パラメータで指定された条件を満たすDML変更のみが取得、適用、デキューの対象となります。UPDATE
文については、次のバリエーションがあります。
-
DML変更の新旧の値が両方とも指定の
dml_condition
を満たす場合、そのDML変更は変更なしでそのまま取得、適用、デキューの対象となります。 -
DML変更の新旧の値が両方とも指定の
dml_condition
を満たさない場合、そのDML変更は取得、適用、デキューの対象となりません。 -
DML変更の古い値が指定の
dml_condition
を満たし、新しい値が満たさない場合、DML変更は削除に変換されます。 -
DML変更の新しい値が指定の
dml_condition
を満たし、古い値が満たさない場合、DML変更は挿入に変換されます。
更新が挿入または削除に変換されることを行の移行と呼びます。
取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。Oracle Streamsクライアントにポジティブ・ルール・セットがない場合は、ポジティブ・ルール・セットが自動的に作成され、表に関するルールがポジティブ・ルール・セットに追加されます。サブセット・ルールはポジティブ・ルール・セットのみに追加可能で、ネガティブ・ルール・セットには追加できません。プロセスの既存のルール・セット内にある他のルールは、この影響を受けません。新しいルールを追加するには、DBMS_STREAMS_ADM
パッケージまたはDBMS_RULE_ADM
パッケージを使用します。
このプロシージャを実行すると、INSERT
文、UPDATE
文およびDELETE
文のルールが自動的に作成され、これらのルールには、システム生成のルール名が指定されます。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。ADD_SUBSET_RULES
プロシージャがオーバーロードされているため、INSERT
文、UPDATE文
およびDELETE
文に対するシステム生成のルール名が戻されます。
ノート:
サブセット・ルールはポジティブ・ルール・セットの内部のみで使用できます。ネガティブ・ルール・セットにはサブセット・ルールを追加できません。ネガティブ・ルール・セットにサブセット・ルールを追加すると、ネガティブ・ルール・セットによって破棄されないLCRに対して行の移行が実行されないため、予期しない結果が発生する場合があります。
例
次に、DML変更のフィルタ処理に関して作成されるルール条件の例を示します。このルール条件では、dml_condition
がregion_id = 2
、table_name
がhr.regions
、かつsource_database
がdbs1.net
である場合の更新操作を示します。
:dml.get_object_owner()='HR' AND :dml.get_object_name()='REGIONS' AND :dml.is_null_tag()='Y' AND :dml.get_source_database_name()='DBS1.NET' AND :dml.get_command_type()='UPDATE' AND (:dml.get_value('NEW','"REGION_ID"') IS NOT NULL) AND (:dml.get_value('OLD','"REGION_ID"') IS NOT NULL) AND (:dml.get_value('OLD','"REGION_ID"').AccessNumber()=2) AND (:dml.get_value('NEW','"REGION_ID"').AccessNumber()=2)
162.6.10 ADD_TABLE_PROPAGATION_RULESプロシージャ
このプロシージャは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットに表ルールを追加します。指定された伝播が存在しない場合は、伝播を作成します。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
構文
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES( table_name IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL); DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES( table_name IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, source_queue_name IN VARCHAR2, destination_queue_name IN VARCHAR2, include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL, queue_to_queue IN BOOLEAN DEFAULT NULL);
パラメータ
表162-12 ADD_TABLE_PROPAGATION_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表の名前で、 |
|
伝播の名前所有者を指定しないでください。 指定された伝播が存在しない場合は、自動的に作成されます。 このパラメータが このパラメータが |
|
ソース・キューの名前で、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
宛先キュー(データベース・リンクを含む)の名前で、宛先キューがリモート・データベース内に存在する場合は、 たとえば、 スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 データベース・リンクが省略された場合は、現行のデータベースのグローバル名が使用されます。その場合、ソース・キューと宛先キューは同じデータベース内に存在する必要があります。 ノート: 接続修飾子は使用できません。 |
|
|
|
生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対しては |
|
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。ソース・データベースは、変更が発生したデータベースです。 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が 伝播ルールではソース・データベースを指定することをお薦めします。 |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
|
このプロシージャでは、既存の伝播のqueue_to_queueプロパティは変更できません。指定した伝播が存在する場合は、それぞれの設定に対して次のように処理されます。
関連項目: キューからキューへの伝播の詳細は、『Oracle Streams概要および管理』を参照してください。 |
使用上のノート
このプロシージャは、現行のユーザーを使用して伝播を構成します。特定のソース・キューと宛先キューの間で許可される伝播は1つのみです。
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。伝播では、これらのルールがフィルタ処理に使用されます。
例
次に、DML文のフィルタ処理に関して作成される表ルール条件の例を示します。
(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS')) and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.11 ADD_TABLE_RULESプロシージャ
このプロシージャは、Oracle Streamsクライアントのルール・セットにルールを追加します。
これは、次に示すいずれかのタイプのOracle Streamsクライアントのルール・セットに対してグローバル・ルールを追加します。
-
streams_type
パラメータをcapture
に設定すると、このプロシージャは、指定した表に対する変更を取得する取得プロセス・ルールを追加します。 -
streams_type
パラメータをsync_capture
に設定すると、このプロシージャは、指定した表に対する変更を取得するルールを追加します。 -
streams_type
パラメータをapply
に設定し、streams_name
パラメータで適用プロセスの名前を指定すると、このプロシージャは、キュー内の論理変更レコード(LCR)のうち、指定した表に対する変更が記録されるLCRを適用する適用プロセス・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。 -
streams_type
パラメータをdequeue
に設定すると、このプロシージャは、指定した表に対する変更が記録される永続LCRをキューからデキューするメッセージ・クライアント・ルールを追加します。このルールでは、特定のソース・データベースに属するLCRのみをルールの対象として指定できます。
指定された取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントが存在しない場合は、そのクライアントが自動的に作成されます。
このプロシージャはオーバーロードされています。このプロシージャの一方のバージョンでは2つのOUT
パラメータを使用しますが、もう一方のバージョンでは使用しません。
ノート:
-
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
-
起動ユーザーには、同期取得を作成するための
DBA
ロールを付与する必要があります。
構文
DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, dml_rule_name OUT VARCHAR2, ddl_rule_name OUT VARCHAR2, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL); DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', include_dml IN BOOLEAN DEFAULT TRUE, include_ddl IN BOOLEAN DEFAULT FALSE, include_tagged_lcr IN BOOLEAN DEFAULT FALSE, source_database IN VARCHAR2 DEFAULT NULL, inclusion_rule IN BOOLEAN DEFAULT TRUE, and_condition IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-13 ADD_TABLE_RULESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsでは表の有無がチェックされないため、まだ存在しない表も指定できます。 |
|
Oracle Streamsクライアントのタイプを次のように指定します。
|
|
取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントの名前。所有者を指定しないでください。 このパラメータが このパラメータが
このパラメータが このパラメータが 各適用プロセスとメッセージ・クライアントは、それぞれが一意の名前を持つ必要があります。 |
|
ローカル・キューの名前で、 たとえば、 取得プロセス・ルールまたは同期取得ルールの場合は、取得プロセスまたは同期取得によってLCRがエンキューされるキューを指定します。適用プロセス・ルールの場合は、適用プロセスによってメッセージがデキューされるキューを指定します。メッセージ・クライアント・ルールの場合は、メッセージ・クライアントによってメッセージがデキューされるキューを指定します。 |
|
|
|
生成されるルールは、表で動作するDDL変更または表内のオブジェクト(表の索引、トリガーなど)で動作するDDL変更に対しては |
|
ポジティブ・ルール・セットにルールが追加される場合は、データベースの完全なコピー(スタンバイなど)を作成するときに、このパラメータを
ポジティブ・ルール・セットにルールが追加される場合は、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐために、このパラメータを 通常、変更が頻発する構成でソース・データベースに変更が循環するのを防ぐには、
関連項目: タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
ソース・データベースのグローバル名。 取得プロセス・ルールの場合、ソース・データベース上でローカルに取得プロセスを作成するには、 同期取得ルールの場合は、ローカル・データベースの名前を指定します。 適用プロセス・ルールの場合は、適用プロセスによって適用される変更のソース・データベースを指定します。ソース・データベースは、変更が発生したデータベースです。取得メッセージを適用する場合、適用プロセスによって適用できるのは、1つのソース・データベースでの1つの取得プロセスによるメッセージのみです。 メッセージ・クライアント・ルールの場合、このプロシージャによって作成されるルールにソース・データベースに関する条件を付加しないときは、 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が |
|
|
|
|
|
どちらの場合も、ルール・セットが存在しないときは、自動的に作成されます。 |
|
このパラメータに (system_condition) AND (and_condition) 指定する条件の変数は、必ず :lcr.get_tag() = HEXTORAW(''02'') 指定した条件内の つまり、行LCRに対してのみ有効なLCRメンバー・サブプログラムを指定する場合は、 関連項目: 論理変更レコードのタイプ |
使用上のノート
このプロシージャは、include_dml
パラメータ値とinclude_ddl
パラメータ値に基づいて、DMLとDDLのルールをそれぞれ自動的に作成します。各ルールには、システム生成のルール名(表名とその後ろに付加される順序番号で構成される)が付けられます。この順序番号によって、名前の競合が回避されます。表名と順序番号を組み合せた名前が長すぎる場合は、表名が切り捨てられます。取得プロセス、同期取得、適用プロセスまたはメッセージ・クライアントでは、これらのルールがフィルタ処理に使用されます。
例
次に、DMLの変更に関して作成される表ルール条件の例を示します。
(((:dml.get_object_owner() = 'HR' and :dml.get_object_name() = 'LOCATIONS')) and :dml.is_null_tag() = 'Y' and :dml.get_source_database_name() = 'DBS1.NET' )
162.6.12 CLEANUP_INSTANTIATION_SETUPプロシージャ
このプロシージャは、このパッケージのPRE_INSTANTIATION_SETUP
プロシージャおよびPOST_INSTANTIATION_SETUP
プロシージャによって設定されたOracle Streamsレプリケーション構成を削除します。このプロシージャは、構成を直接削除するか、または構成を削除するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
ノート:
CLEANUP_INSTANTIATION_SETUP
プロシージャの実行時、パラメータの値は、対応するPRE_INSTANTIATION_SETUP
プロシージャおよびPOST_INSTANTIATION_SETUP
プロシージャの実行時に指定したパラメータ(perform_actions
、script_name
およびscript_directory_object
を除く)の値と一致している必要があります。
参照:
-
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.CLEANUP_INSTANTIATION_SETUP( maintain_mode IN VARCHAR2, tablespace_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, change_global_name IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-14 CLEANUP_INSTANTIATION_SETUPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のいずれかを指定します。
|
|
表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。 この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対する
関連項目: 「TABLESPACE_SET表タイプ」 |
|
ソース・データベースのグローバル名。
|
|
宛先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
Oracle Streams構成内の変更を取得するように構成する取得プロセスの名前。所有者を指定しないでください。
|
|
取得プロセスで使用する各キューのキュー表の名前で、
|
|
取得プロセスで使用する各キューの名前で、 スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。
|
|
ソース・データベース内のキューに対する |
|
Oracle Streams構成内の変更を転送するように構成する伝播の名前。所有者を指定しないでください。
|
|
Oracle Streams構成内の変更を適用するように構成する適用プロセスの名前。所有者を指定しないでください。
|
|
適用プロセスで使用する各キューのキュー表の名前で、
|
|
適用プロセスで使用する各キューの名前で、 スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。
|
|
接続先データベース内のキューに対する |
|
Oracle Streamsレプリケーションの構成が、現行のデータベースから |
|
|
162.6.13 DELETE_COLUMNプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)から列を削除する宣言ルールベースの変換を追加または削除します。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
ノート:
-
DELETE_COLUMN
プロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。 -
DELETE_COLUMN
プロシージャは、行LCR内の比較的少ない数の列を削除する場合に役立ちます。行LCR内のほとんどの列を削除し、比較的少ない数の列を保持するには、このパッケージのKEEP_COLUMNS
プロシージャの使用を検討してください。 -
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
構文
DBMS_STREAMS_ADM.DELETE_COLUMN( rule_name IN VARCHAR2, table_name IN VARCHAR2, column_name IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-15 DELETE_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
行LCRで列を削除する表の名前で、 |
|
ルールを満たす各行LCRから削除する列の名前。 |
|
行LCRの新しい値から列を削除する場合は、 行LCRの古い値から列を削除する場合は、 行LCRの新しい値と古い値の両方から列を削除する場合は、 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 このパラメータの詳細は、「使用上のノート」を参照してください。 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対する列削除の宣言ルールベースの変換のうち、指定したパラメータ(table_name
、column_name
およびstep_number
)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合の、DELETE_COLUMN
プロシージャの動作を示します。
table_name | column_name | step_number | 結果 |
---|---|---|---|
|
|
|
指定したルールに対するすべての列削除変換が削除されます。 |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
162.6.14 GET_MESSAGE_TRACKINGファンクション
GET_MESSAGE_TRACKING
ファンクションは、現在のセッションの追跡ラベルを戻します。
構文
DBMS_STREAMS_ADM.GET_MESSAGE_TRACKING RETURN VARCHAR2;
162.6.15 GET_SCN_MAPPINGプロシージャ
このプロシージャは、Oracle Streamsレプリケーション環境内のOracle Streamsの取得プロセスと適用プロセスで使用するために、システム変更番号(SCN)に関する情報を取り出します。
取り出した情報は、次の目的で使用できます。
-
マルチ・ソースOracle Streams構成のソース・データベース上でPoint-in-Timeリカバリを実行した後、トランザクションを復元する。
-
単一ソースOracle Streamsレプリケーション構成のソース・データベースまたは接続先データベースにおいて、対応するSCNに対してフラッシュバック問合せを実行する。
参照:
-
Oracle Streamsレプリケーション環境におけるPoint-in-Timeリカバリの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
Oracle Streamsレプリケーション環境におけるフラッシュバック問合せの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
構文
DBMS_STREAMS_ADM.GET_SCN_MAPPING( apply_name IN VARCHAR2, src_pit_scn IN NUMBER, dest_instantiation_scn OUT NUMBER, dest_start_scn OUT NUMBER, dest_skip_txn_ids OUT DBMS_UTILITY.NAME_ARRAY);
パラメータ
表162-16 GET_SCN_MAPPINGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ソース・データベースから取得した論理変更レコード(LCR)を適用する適用プロセスの名前。指定した適用プロセスが存在しない場合は、エラーが発生します。 |
|
ソース・データベースにおけるSCN。 Point-in-Timeリカバリの場合は、ソース・データベースにおけるPoint-in-TimeリカバリSCNを指定します。 指定したSCNが最後に適用されたトランザクションのソース・コミットSCNよりも大きい場合は、 |
|
ソース・データベースに指定した Point-in-Timeリカバリの実行中は、このSCNをソース・データベースにおけるインスタンス化SCNとして使用します。 |
|
Point-in-Timeリカバリにおいて、リカバリ取得プロセス用の |
|
適用プロセスが非依存トランザクションを順不同に適用したため、 Point-in-Timeリカバリの場合、これらのトランザクションIDはリカバリ適用プロセスによって無視されます。 このパラメータは、これらのトランザクションを適用した適用プロセスに対して |
162.6.16 GET_TAGファンクション
このファンクションは、現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。
参照:
-
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構文
DBMS_STREAMS_ADM.GET_TAG RETURN RAW;
例
次の例は、現行の論理変更レコード(LCR)タグを出力として表示する方法を示しています。
SET SERVEROUTPUT ON DECLARE raw_tag RAW(2000); BEGIN raw_tag := DBMS_STREAMS_ADM.GET_TAG(); DBMS_OUTPUT.PUT_LINE('Tag Value = ' || RAWTOHEX(raw_tag)); END; /
DUAL
ビューを問い合せて値を表示することもできます。
SELECT DBMS_STREAMS_ADM.GET_TAG FROM DUAL;
162.6.17 KEEP_COLUMNSプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列のリストを保持する宣言ルールベースの変換を追加または削除します。変換によって、リストにない列が行LCRから削除されます。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
このプロシージャはオーバーロードされています。column_list
パラメータは、VARCHAR2
タイプで、column_table
パラメータは、DBMS_UTILITY.LNAME_ARRAY
タイプです。これらのパラメータによって、列のリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。
ノート:
-
KEEP_COLUMNS
プロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。 -
KEEP_COLUMNS
プロシージャは、行LCR内の比較的少ない数の列を保持する場合に役立ちます。行LCR内のほとんどの列を保持し、比較的少ない数の列を削除するには、このパッケージのDELETE_COLUMN
プロシージャの使用を検討してください。 -
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
-
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。
-
Oracle Streams取得プロセスによってサポートされているデータ・タイプについては、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.KEEP_COLUMNS( rule_name IN VARCHAR2, table_name IN VARCHAR2, column_list IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD'); DBMS_STREAMS_ADM.KEEP_COLUMNS( rule_name IN VARCHAR2, table_name IN VARCHAR2, column_table IN DBMS_UTILITY.LNAME_ARRAY, value_type IN VARCHAR2 DEFAULT '*', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-17 KEEP_COLUMNSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
行LCRで列を保存する表の名前で、 |
|
ルールを満たす各行LCRで保持される列の名前。 このパラメータが |
|
ルールを満たす各行LCRで保持される列の名前。 表に含まれていない列は、変換によって行LCRから削除されません。 このパラメータが |
|
行LCRの新しい値に列を保持する場合は、 行LCRの古い値に列を保持する場合は、 行LCRの新しい値と古い値の両方に列を保持する場合は、 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 このパラメータの詳細は、「使用上のノート」を参照してください。 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対する列保持の宣言ルールベースの変換のうち、指定したパラメータ(table_name
、column_list
、column_table
およびstep_number
)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合の、KEEP_COLUMNS
プロシージャの動作を示します。
table_name | column_list/column_table | step_number | 結果 |
---|---|---|---|
|
|
|
指定したルールに対するすべての列保持変換が削除されます。 |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
162.6.18 MAINTAIN_CHANGE_TABLEプロシージャ
このプロシージャは、ソース・テーブルに対して行われたデータ操作言語(DML)の変更を変更ハンドラを使用してチェンジ・テーブルに記録する、Oracle Streams環境を構成します。このプロシージャは、オプションで、表の一方向レプリケーション(ソース・データベースから接続先データベースへ)を構成することもできます。
このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。
変更ハンドラは、表の変更を追跡する特別なタイプの文DMLハンドラであり、このMAINTAIN_CHANGE_TABLE
プロシージャまたはDBMS_APPLY_ADM.SET_CHANGE_HANDLER
プロシージャのいずれかによって作成されました。変更ハンドラに関する情報は、ALL_APPLY_CHANGE_HANDLERS
およびDBA_APPLY_CHANGE_HANDLERS
ビューに格納されています。
チェンジ・テーブルは、ソース・テーブルと同じデータベースまたは異なるデータベースに存在することができます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
ノート:
このプロシージャによって構成された環境は、ソース・テーブルに対して行われたデータ定義言語(DDL)の変更について、記録もレプリケートも行いません。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_CHANGE_TABLE( change_table_name IN VARCHAR2, source_table_name IN VARCHAR2, column_type_list IN VARCHAR2, extra_column_list IN VARCHAR2 DEFAULT 'command_type, value_type', capture_values IN VARCHAR2, options_string IN VARCHAR2 DEFAULT NULL, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, perform_actions IN BOOLEAN DEFAULT TRUE, capture_name IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, source_database IN VARCHAR2 DEFAULT NULL, destination_database IN VARCHAR2 DEFAULT NULL, keep_change_columns_only IN BOOLEAN DEFAULT TRUE, execute_lcr IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-18 MAINTAIN_CHANGE_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ソース・テーブルの変更を記録する表。この表は、構成後にOracle Streamsによって保持されます。 表は、
指定した表が |
|
変更が記録されるソース・データベースの表。 表は、
|
|
変更が記録されるソース・テーブルの列のリスト。列とそのデータ・タイプごとにカンマ区切りリストを指定します。 たとえば、 job_id VARCHAR2(10), job_title VARCHAR2(35), min_salary NUMBER(6), max_salary NUMBER(6) プロシージャは、ソース・データベースの列と同じ名前を持つ列を無条件のサプリメンタル・ログ・グループに自動的に配置します。
|
|
チェンジ・テーブルに格納するメタデータ属性のカンマ区切りリスト。メタデータ属性の列名は、属性名の後に 次のメタデータ属性を含めることができます。
チェンジ・テーブルの チェンジ・テーブルの プロシージャはソース・データベースを自動的に構成して、追加属性( |
|
ソース・テーブルに対する更新操作の実行時に取得する値を指定します。
ノート: 挿入操作では、新しい列値のみを取得できます。削除操作では、古い列値のみを取得できます。 |
|
チェンジ・テーブルを作成する |
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。 指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベースへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。
ノート: 取得プロセスは、作成した後で名前を変更することはできません。 |
|
ソース・データベースから接続先データベースに変更を伝播するように構成された伝播の名前。所有者を指定しないでください。 指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、変更を転送するためのルールが伝播のポジティブ・ルール・セットに追加されます。
ノート: 伝播は、作成した後で名前を変更することは変更できません。 |
|
変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。 指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。 指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。
ノート: 適用プロセスは、作成した後で名前を変更することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
ノート: このパラメータを |
|
|
使用上のノート
次の項では、このプロシージャの使用上のノートについて説明します。
プロシージャによって構成されるOracle Streams環境のタイプ
このプロシージャは、次のタイプのOracle Streams環境を構成できます。
-
Local capture and apply on one database:
source_database
パラメータとdestination_database
パラメータに同じグローバル名を指定します。 -
Local capture and remote apply:
source_database
パラメータにローカル・データベースのグローバル名を指定し、destination_database
パラメータにリモート・データベースのグローバル名を指定します。 -
Downstream capture and local apply:
source_database
パラメータにリモート・データベースを指定し、destination_database
パラメータにローカル・データベースを指定します。 -
Downstream capture and remote apply:
source_database
パラメータにリモート・データベースを指定し、destination_database
パラメータにリモート・データベースを指定します。
このプロシージャによる一方向レプリケーション(オプション)
表の一方向レプリケーションを構成するには、変更内容を表に記録し、さらにexecute_lcr
パラメータをTRUE
に設定します。適用プロセスは、各行LCRを実行し、行LCRでの変更内容を接続先データベースのレプリカ表に適用します。この場合、プロシージャを実行する前に、接続先データベースでソース表がインスタンス化されていることを確認します。具体的には、インスタンス化のためにソース表が作成されていること、インスタンス化SCNが接続先データベースでレプリカ表に設定されていることが必要であり、通常は、ソース表とレプリカ表が一致している必要があります。
文DMLハンドラ、チェンジ・テーブル、行LCRの実行
このプロシージャは、次のアクションを実行する1つ以上の文DMLハンドラを構成します。
-
行LCRの情報を使用して、チェンジ・テーブルの変更を記録する。
-
execute_lcr
パラメータがTRUE
に設定されている場合に、行LCRを実行する。
このプロシージャによって、capture_type_list
、extra_column_list
およびcapture_values
パラメータで指定された変更を記録するために必要な属性が、行LCRに確実に含まれるようになります。このプロシージャは、apply_name
パラメータで指定された適用プロセスに文DMLハンドラを追加します。
162.6.19 MAINTAIN_GLOBALプロシージャ
このプロシージャは、データベース・レベルの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
ノート:
-
このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていないデータベース・オブジェクトをレプリケーション環境から自動的に除外します。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、
DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。 -
bi_directional
パラメータをTRUE
に設定する場合、MAINTAIN_GLOBAL
プロシージャまたはプロシージャが作成するスクリプトを実行している間は、データ操作言語(DML)またはデータ定義言語(DDL)を接続先データベースに変更できません。この制限は、ソース・データベースには適用されません。 -
取得プロセスでは、
SYS
、SYSTEM
またはCTXSYS
スキーマ内の変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_GLOBAL( source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, instantiation IN INTEGER DEFAULT DBMS_STREAMS_ADM.INSTANTIATION_FULL);
パラメータ
参照:
共通のプロシージャのパラメータについては、「Oracle Streams環境を構成するプロシージャ」を参照してください。
表162-19 MAINTAIN_GLOBALプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。プロシージャの実行後も、このファイルはこのディレクトリ内に残ります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの転送先となる、宛先データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、
このパラメータが |
|
データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。
このパラメータが |
|
インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。
このパラメータを 接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は宛先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。 |
162.6.20 MAINTAIN_SCHEMASプロシージャ
このプロシージャは、指定されたスキーマへの変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。
このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
このプロシージャはオーバーロードされています。1つのschema_names
パラメータは、VARCHAR2
タイプで、もう1つのschema_names
パラメータは、DBMS_UTILITY.UNCL_ARRAY
タイプです。これらのパラメータによって、スキーマのリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。
ノート:
-
このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、スキーマ内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、
DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。 -
bi_directional
パラメータをTRUE
に設定している場合、MAINTAIN_SCHEMAS
プロシージャまたはプロシージャが作成するスクリプトを実行している間は、データ操作言語(DML)またはデータ定義言語(DDL)を、接続先データベースの共有データベース・オブジェクトに変更できません。この制限は、ソース・データベースには適用されません。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS( schema_names IN VARCHAR2, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, instantiation IN INTEGER DEFAULT DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA); DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS( schema_names IN DBMS_UTILITY.UNCL_ARRAY, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, instantiation IN INTEGER DEFAULT DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA);
パラメータ
参照:
表162-20にない共通のプロシージャのパラメータについては、「Oracle Streams環境を構成するプロシージャ」を参照してください。
表162-20 MAINTAIN_SCHEMASプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
レプリケーションを行うように構成し、構成後はOracle Streamsによって保守されるスキーマ。スキーマは、次の方法で指定できます。
このプロシージャでは、次のいずれかの場合にエラーが発生します。
|
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。プロシージャの実行後も、このファイルはこのディレクトリ内に残ります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの転送先となる、宛先データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、
このパラメータが |
|
ソース・データベース内のキューに対する
|
|
データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。
このパラメータが |
|
インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。
このパラメータを 接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は宛先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。 |
162.6.21 MAINTAIN_SIMPLE_TABLESPACEプロシージャ
このプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。
このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。このプロシージャは、ソース・データベースで実行します。
ノート:
このプロシージャの使用は推奨されていません。かわりにMAINTAIN_SIMPLE_TTS
プロシージャを使用してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_SIMPLE_TABLESPACE( tablespace_name IN VARCHAR2, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, destination_database IN VARCHAR2, setup_streams IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-21 MAINTAIN_SIMPLE_TABLESPACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル単一表領域。 この表領域は、ソース・データベースには存在している必要がありますが、接続先データベースには存在しないようにする必要があります。 この表領域のデータファイルを格納するディレクトリには、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、そのディレクトリ・オブジェクトに対する
|
|
ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが転送されます。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
宛先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ソース・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。
|
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
現行のデータベースと、 現行のデータベースと、 |
使用上のノート
指定する表領域は単一表領域である必要があります。単一表領域とは、1つのデータファイルのみを使用する自己完結型の単一表領域です。自己完結型の表領域には、その表領域の外部を指す表領域からの参照は含まれません。たとえば、表領域の索引が異なる表領域の表に対する索引である場合、その表領域は自己完結型ではありません。このプロシージャは、単一でない表領域、つまり表領域セットに対しては使用できません。
保守されないDDL変更
このプロシージャのOracle Streams環境構成では、表領域に対するDDL変更または表領域内のデータベース・オブジェクトに対するDDL変更は保守されません。たとえば、このプロシージャによって構成されるOracle Streams環境では、表領域に関するALTER
TABLESPACE
文や、表領域内の表に関するALTER
TABLE
文がレプリケートされません。DDL変更が保守されるようにするには、Oracle Streams環境を手作業で構成するか、このプロシージャによって生成されたスクリプトを編集する必要があります。
このプロシージャの関連項目
MAINTAIN_SIMPLE_TABLESPACE
プロシージャについては、次の説明を参照してください。
-
自動プラットフォーム変換については、「* Oracle StreamsクライアントおよびXStreamクライアントのルールを作成するプロシージャ」を参照してください。
このプロシージャの実行要件
MAINTAIN_SIMPLE_TABLESPACE
プロシージャを実行するには、次の要件を満たしている必要があります。
-
このプロシージャは、ソース・データベースで実行します。
-
構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、
destination_database
パラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。 -
このプロシージャを実行するユーザーには、
DBA
ロールを付与してください。また、次の処理を実行するための権限も必要です。-
ANYDATA
キュー、取得プロセス、伝播および適用プロセスを作成する権限。 -
サプリメンタル・ロギングを指定する権限。
-
DBMS_STREAMS_ADM
およびDBMS_AQADM
パッケージのサブプログラムを実行する権限。 -
destination_database
パラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのサブプログラムを実行する権限。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのCLONE_SIMPLE_TABLESPACE
プロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_SIMPLE_TABLESPACEプロシージャ」を参照してください。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのATTACH_SIMPLE_TABLESPACE
プロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_SIMPLE_TABLESPACEプロシージャ」を参照してください。
このプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。
通常、
DBA
ロールは、構成の完了後に必要に応じてユーザーから取り消します。 -
-
bi_directional
パラメータをTRUE
に設定した場合は、接続先データベース上の対応するユーザーが、データベース・リンクを通じてソース・データベースにアクセスできるようにする必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。 -
指定する各ディレクトリ・オブジェクトは、SQL文の
CREATE
DIRECTORY
を使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限が必要です。 -
このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース2以上のデータベースである必要があります。
-
このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。
-
Oracle Streamsレプリケーション環境を直接構成するために
setup_streams
パラメータがTRUE
に設定されている場合。
-
-
このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース1以上のデータベースである必要があります。
-
このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。
-
このプロシージャの
setup_streams
パラメータがFALSE
に設定され、生成されたスクリプトでレプリケーション環境が構成されている場合。
スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。
-
-
このプロシージャをOracle Database 10g リリース1のデータベースで実行する場合、このプロシージャで構成するデータベースは、Oracle Database 10g リリース1以上のデータベースである必要があります。
参照:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
MAINTAIN_SIMPLE_TABLESPACEプロシージャから除外されたパラメータのデフォルト値
このプロシージャは、MAINTAIN_SIMPLE_TABLESPACE
プロシージャに存在しない、MAINTAIN_TABLESPACES
プロシージャのパラメータのデフォルト値を使用します。たとえば、このプロシージャは、MAINTAIN_TABLESPACES
プロシージャ内のcapture_name
パラメータのデフォルト値がcapture
であるため、captureという名前の取得プロセスをソース・データベースで作成します。
構成の進行状況およびリカバリ機能
setup_streams
パラメータをTRUE
に設定して、このプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT
、DBA_RECOVERABLE_SCRIPT_PARAMS
、DBA_RECOVERABLE_SCRIPT_BLOCKS
およびDBA_RECOVERABLE_SCRIPT_ERRORS
に記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATION
プロシージャを使用すると、構成を完了できます。
ノート:
setup_streams
パラメータをFALSE
に設定して、このプロシージャを実行した場合は、前述のビューにデータが格納されません。また、このプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。
162.6.22 MAINTAIN_SIMPLE_TTSプロシージャ
このプロシージャは、ソース・データベース内の単一表領域のクローンを接続先データベース内に作成し、Oracle Streamsを使用してソース・データベース内と接続先データベース内の表領域を保守します。
このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
ノート:
-
このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、表領域内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、
DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。 -
このプロシージャは、推奨されない
MAINTAIN_SIMPLE_TABLESPACE
プロシージャのかわりに使用します。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_SIMPLE_TTS( tablespace_name IN VARCHAR2, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE);
パラメータ
参照:
表162-22にない共通のプロシージャのパラメータについては、「Oracle Streams環境を構成するプロシージャ」を参照してください。
表162-22 MAINTAIN_SIMPLE_TTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル単一表領域。 この表領域は、ソース・データベースには存在している必要がありますが、接続先データベースには存在しないようにする必要があります。 この表領域のデータファイルを格納するディレクトリには、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、そのディレクトリ・オブジェクトに対する
|
|
ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域のデータファイルが転送されます。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
使用上のノート
指定する表領域は単一表領域である必要があります。単一表領域とは、1つのデータファイルのみを使用する自己完結型の単一表領域です。自己完結型の表領域には、その表領域の外部を指す表領域からの参照は含まれません。たとえば、表領域の索引が異なる表領域の表に対する索引である場合、その表領域は自己完結型ではありません。このプロシージャは、単一でない表領域、つまり表領域セットに対しては使用できません。
保守されないDDL変更
このプロシージャのOracle Streams環境構成では、表領域に対するDDL変更または表領域内のデータベース・オブジェクトに対するDDL変更は保守されません。たとえば、このプロシージャによって構成されるOracle Streams環境では、表領域に関するALTER
TABLESPACE
文や、表領域内の表に関するALTER
TABLE
文がレプリケートされません。DDL変更が保守されるようにするには、Oracle Streams環境を手作業で構成するか、このプロシージャによって生成されたスクリプトを編集する必要があります。
MAINTAIN_SIMPLE_TTS
プロシージャで必要なその他の権限
MAINTAIN_SIMPLE_TTS
プロシージャを実行するユーザーには、「Oracle Streams環境を構成するプロシージャ」で説明した権限の他に、次の処理を実行するための権限も必要です。
-
DBMS_STREAMS_TABLESPACES_ADM
パッケージのサブプログラムを実行する権限。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのCLONE_SIMPLE_TABLESPACE
プロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_SIMPLE_TABLESPACEプロシージャ」を参照してください。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのATTACH_SIMPLE_TABLESPACE
プロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_SIMPLE_TABLESPACEプロシージャ」を参照してください。
MAINTAIN_SIMPLE_TTSプロシージャから除外されたパラメータのデフォルト値
このプロシージャは、MAINTAIN_SIMPLE_TTS
プロシージャに存在しない、MAINTAIN_TTS
プロシージャのパラメータのデフォルト値を使用します。たとえば、このプロシージャは、取得プロセス名を自動的に生成しますが、これは、MAINTAIN_TTS
プロシージャのcapture_name
パラメータのデフォルト値がNULL
であるためです(MAINTAIN_TTSプロシージャは、capture_name
がNULL
に指定されている場合、取得プロセス名を自動的に生成します)。
162.6.23 MAINTAIN_TABLESプロシージャ
このプロシージャは、指定された表への変更を2つのデータベース間でレプリケートするOracle Streams環境を構成します。
このプロシージャは、環境を直接構成するか、または環境を構成するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
このプロシージャはオーバーロードされています。1つのtable_names
パラメータは、VARCHAR2
タイプで、もう1つのtable_names
パラメータは、DBMS_UTILITY.UNCL_ARRAY
タイプです。これらのパラメータによって、スキーマのリストを異なる方法で入力できますが、これらのパラメータを同時に使用することはできません。
ノート:
bi_directional
パラメータをTRUE
に設定した場合、MAINTAIN_TABLES
プロシージャまたはプロシージャによって生成されたスクリプトの実行中に、接続先データベースの共有データベース・オブジェクトに対するデータ操作言語(DML)変更またはデータ定義言語(DDL)変更を許可しないでください。この制限は、ソース・データベースには適用されません。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_TABLES( table_names IN VARCHAR2, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, instantiation IN INTEGER DEFAULT DBMS_STREAMS_ADM.INSTANTIATION_TABLE); DBMS_STREAMS_ADM.MAINTAIN_TABLES( table_names IN DBMS_UTILITY.UNCL_ARRAY, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, instantiation IN INTEGER DEFAULT DBMS_STREAMS_ADM.INSTANTIATION_TABLE);
パラメータ
参照:
表162-23にない共通のプロシージャのパラメータについては、「Oracle Streams環境を構成するプロシージャ」を参照してください。
表162-23 MAINTAIN_TABLESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
レプリケーションを行うように構成し、構成後はOracle Streamsによって保守される表。表は、次の方法で指定できます。
それぞれの表は、 このプロシージャでは、次のいずれかの場合にエラーが発生します。
|
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの格納先となる、ソース・データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。このファイルは、プロシージャの実行後も指定のディレクトリ内に残ります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
生成されたデータ・ポンプ・エクスポート・ダンプ・ファイルの転送先となる、宛先データベースを実行するコンピュータ・システム上にあるディレクトリのディレクトリ・オブジェクト。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
データ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、
このパラメータが |
|
ソース・データベース内のキューに対する
|
|
データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。
このパラメータが |
|
インスタンス化を実行するかどうか、および実行する場合はインスタンス化のタイプを次のように指定します。
このパラメータを 接続先データベースにインスタンス化されたデータベース・オブジェクトがない場合は、ソース・データベースからのサプリメンタル・ロギング指定および索引やトリガーなどのサポート・データベース・オブジェクトとともにインポートされます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトがある場合は、インポートされません。このため、ソース・データベースからのサプリメンタル・ロギング指定は宛先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトはインポートされません。 また、インスタンス化する表が接続先データベースに存在しない場合、このプロシージャは表のインスタンス化SCNを設定します。ただし、インスタンス化する表がインスタンス化の前に接続先データベースに存在する場合は、このプロシージャは表のインスタンス化SCNを設定しません。この場合は、プロシージャの完了後に表に対するインスタンス化SCNを手動で設定する必要があります。 |
162.6.24 MAINTAIN_TABLESPACESプロシージャ
このプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。
このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。このプロシージャは、ソース・データベースで実行します。
ノート:
このプロシージャの使用は推奨されていません。かわりにMAINTAIN_TTS
プロシージャを使用してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_TABLESPACES( tablespace_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, destination_database IN VARCHAR2, setup_streams IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, source_queue_table IN VARCHAR2 DEFAULT 'streams_queue_table', source_queue_name IN VARCHAR2 DEFAULT 'streams_queue', source_queue_user IN VARCHAR2 DEFAULT NULL, destination_queue_table IN VARCHAR2 DEFAULT 'streams_queue_table', destination_queue_name IN VARCHAR2 DEFAULT 'streams_queue', destination_queue_user IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT 'capture', propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE);
パラメータ
表162-24 MAINTAIN_TABLESPACESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル表領域セット。 表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。 この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対する
関連項目: 「TABLESPACE_SET表タイプ」 |
|
ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクトで、このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが転送されます。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
宛先データベースのグローバル名。接続先データベースのグローバル名と同じ名前を持つ、ソース・データベースから接続先データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
指定した表領域セットが保存されるデータ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、
|
|
ソース・データベースにあるキューのキュー表の名前で、 |
|
ソース・データベースで スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。 |
|
ソース・データベース内のキューに対する
|
|
接続先データベースにあるキューのキュー表の名前で、 |
|
接続先データベースで スキーマを指定しない場合は、キュー表の所有者名がデフォルトで使用されます。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。 |
|
接続先データベース内のキューに対する
|
|
表領域セット内のデータベース・オブジェクトへの変更を取得するように構成する各取得プロセスの名前。所有者を指定しないでください。 指定した名前が既存の取得プロセスの名前と一致した場合は、その既存の取得プロセスが使用され、データベース・セット内のデータベース・オブジェクトへの変更を取得するためのルールが取得プロセスのポジティブ・ルール・セットに追加されます。 ノート: 取得プロセスは、作成した後で名前を変更することはできません。 |
|
表領域セット内のデータベース・オブジェクトへの変更を転送するように構成する各伝播の名前。所有者を指定しないでください。 指定した名前が既存の伝播の名前と一致した場合は、その既存の伝播が使用され、表領域セット内のデータベース・オブジェクトに対する変更を転送するためのルールが、伝播のポジティブ・ルール・セットに追加されます。
ノート: 伝播は、作成した後で名前を変更することは変更できません。 |
|
表領域セット内のデータベース・オブジェクトへの変更を適用するように構成する各適用プロセスの名前。所有者を指定しないでください。 指定した名前が既存の適用プロセスの名前と一致した場合は、その既存の適用プロセスが使用され、データベース・セット内のデータベース・オブジェクトへの変更を適用するためのルールが適用プロセスのポジティブ・ルール・セットに追加されます。 指定する適用プロセス名が、接続先データベースにある既存のメッセージ・クライアントの名前と同じにならないように注意してください。
ノート: 適用プロセスは、作成した後で名前を変更することはできません。 |
|
データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。 このパラメータに |
|
現行のデータベースと、 現行のデータベースと、 |
|
DMLとDDLの両方の変更を管理するOracle Streamsレプリケーション環境を構成する場合は、 DML変更のみを管理するOracle Streamsレプリケーション環境を構成する場合は、 |
使用上のノート
指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。
参照:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。
このプロシージャの関連項目
MAINTAIN_TABLESPACES
プロシージャについては、次の説明を参照してください。
-
自動プラットフォーム変換の詳細は、「* Oracle Streams環境を構成するプロシージャ」を参照してください。
このプロシージャの実行要件
MAINTAIN_TABLESPACES
プロシージャを実行するには、次の要件を満たしている必要があります。
-
このプロシージャは、ソース・データベースで実行します。
-
構成時に、両方のデータベースがオープンしている必要があります。プロシージャでスクリプトの生成のみを行う場合は、プロシージャの実行時に、
destination_database
パラメータで指定されるデータベースが開いている必要はありませんが、生成されたスクリプトを実行するときは、両方のデータベースをオープンしておく必要があります。 -
このプロシージャを実行するユーザーには、
DBA
ロールが付与されている必要があります。また、次の処理を実行するための権限も必要です。-
ANYDATA
キュー、取得プロセス、伝播および適用プロセスを作成する権限。 -
サプリメンタル・ロギングを指定する権限。
-
DBMS_STREAMS_ADM
およびDBMS_AQADM
パッケージのサブプログラムを実行する権限。 -
destination_database
パラメータで指定されたデータベースにデータベース・リンクを通じてアクセスする権限。このデータベース・リンクの名前は、接続先データベースのグローバル名と同じである必要があります。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのサブプログラムを実行する権限。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのCLONE_TABLESPACES
プロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_TABLESPACESプロシージャ」を参照してください。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのATTACH_TABLESPACES
プロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_TABLESPACESプロシージャ」を参照してください。
このプロシージャを実行するユーザーが、必要な権限を所有するには、各データベースにOracle Streams管理者を構成し、そのOracle Streams管理者のスキーマ内に各データベース・リンクを作成する必要があります。
-
-
bi_directional
パラメータをTRUE
に設定した場合は、接続先データベース上の対応するユーザーが、データベース・リンクを通じてソース・データベースにアクセスできるようにする必要があります。このデータベース・リンクの名前は、ソース・データベースのグローバル名と同じである必要があります。 -
指定する各ディレクトリ・オブジェクトは、SQL文の
CREATE
DIRECTORY
を使用して作成する必要があります。このプロシージャを起動するユーザーには、それぞれのディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限が必要です。 -
このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース2以上のデータベースである必要があります。
-
このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。
-
Oracle Streamsレプリケーション環境を直接構成するために
setup_streams
パラメータがTRUE
に設定されている場合。
-
-
このプロシージャを次の条件で実行する場合、このプロシージャで構成するデータベースはOracle Database 10g リリース1以上のデータベースである必要があります。
-
このプロシージャをOracle Database 10g リリース2以上のデータベースで実行する場合。
-
このプロシージャの
setup_streams
パラメータがFALSE
に設定され、生成されたスクリプトでレプリケーション環境が構成されている場合。
スクリプトを使用してOracle Database 10g リリース1のデータベースを構成する場合は、Oracle Database 10g リリース2以上のみで使用可能な機能(キューからキューへの伝播など)が構成されないように、スクリプトを変更する必要があります。
-
-
このプロシージャをOracle Database 10g リリース1のデータベースで実行する場合、このプロシージャで構成するデータベースは、Oracle Database 10g リリース1以上のデータベースである必要があります。
参照:
Oracle Streams管理者の構成の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構成の進行状況およびリカバリ機能
setup_streams
パラメータをTRUE
に設定して、このプロシージャを実行すると、その構成処理に関するメタデータがデータ・ディクショナリ・ビューのDBA_RECOVERABLE_SCRIPT
、DBA_RECOVERABLE_SCRIPT_PARAMS
、DBA_RECOVERABLE_SCRIPT_BLOCKS
およびDBA_RECOVERABLE_SCRIPT_ERRORS
に記録されます。エラーが発生したためプロシージャが停止した場合は、エラーの原因となった状況を解消してからRECOVER_OPERATION
プロシージャを使用すると、構成を完了できます。
ノート:
setup_streams
パラメータをFALSE
に設定して、このプロシージャを実行した場合は、前述のビューにデータが格納されません。また、このプロシージャで生成されたスクリプトを実行した場合も、データはビューに格納されません。
162.6.25 MAINTAIN_TTSプロシージャ
このプロシージャは、ソース・データベース内の表領域セットのクローンを接続先データベース内に作成し、Oracle Streamsを使用してこの2つのデータベース内の表領域セットを保守します。
このプロシージャは、これらの処理を直接実行するか、またはこれらの処理を実行するスクリプトを生成できます。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
ノート:
-
このプロシージャは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加して、Oracle Streamsでサポートされていない、表領域内のデータベース・オブジェクトをレプリケーション環境から自動的に除外します。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、
DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされないデータベース・オブジェクトが除外されていない場合は、取得エラーが発生します。 -
このプロシージャは、推奨されない
MAINTAIN_TABLESPACES
プロシージャのかわりに使用します。
参照:
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
構文
DBMS_STREAMS_ADM.MAINTAIN_TTS( tablespace_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET, source_directory_object IN VARCHAR2, destination_directory_object IN VARCHAR2, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, dump_file_name IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, log_file IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE);
パラメータ
参照:
表162-25にない共通のプロシージャのパラメータについては、「Oracle Streams環境を構成するプロシージャ」を参照してください。
表162-25 MAINTAIN_TTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsによって接続先データベースにクローンが作成され保守される、ローカル表領域セット。 表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。 この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対する
関連項目: 「TABLESPACE_SET表タイプ」 |
|
ソース・データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクトで、このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが保存されます。プロシージャの実行後も、これらのファイルはこのディレクトリ内に残ります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
接続先データベースを実行するコンピュータ・システムのディレクトリのディレクトリ・オブジェクト。このディレクトリには、生成されたデータ・ポンプ・エクスポート・ダンプ・ファイル、およびクローンされた表領域セットで構成されるデータファイルが転送されます。 ソース・データベースと接続先データベースが同じコンピュータ・システム上で実行されている場合、ソース・ディレクトリと宛先ディレクトリは別々にする必要があります。
ノート: ディレクトリ・オブジェクトにOracle ASMディスク・グループを指定することはできません。 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
指定した表領域セットが保存されるデータ・ポンプ・エクスポート・ダンプ・ファイルの名前。指定したファイル名のファイルが、
|
|
データ・ポンプ・エクスポート・ログ・ファイルの名前。このログ・ファイルは、データ・ポンプ・エクスポート・ダンプ・ファイルと同じディレクトリに保存されます。 このパラメータに |
使用上のノート
指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。
参照:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。
MAINTAIN_TTSプロシージャで必要なその他の権限
MAINTAIN_TTS
プロシージャを実行するユーザーには、「* Oracle Streams環境を構成するプロシージャ」で説明した権限の他に、次の処理を実行するための権限も必要です。
-
DBMS_STREAMS_TABLESPACES_ADM
パッケージのサブプログラムを実行する権限。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのCLONE_TABLESPACES
プロシージャをソース・データベースで実行するのに必要な権限。必要な権限の一覧は、「CLONE_TABLESPACESプロシージャ」を参照してください。 -
DBMS_STREAMS_TABLESPACES_ADM
パッケージのATTACH_TABLESPACES
プロシージャを接続先データベースで実行するのに必要な権限。必要な権限の一覧は、「ATTACH_TABLESPACESプロシージャ」を参照してください。
162.6.26 MERGE_STREAMSプロシージャ
このプロシージャは、1つの取得プロセスからのストリームを別の取得プロセスからのストリームとマージします。
このプロシージャは、通常、このパッケージのSPLIT_STREAMS
プロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMS
プロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。
-
分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。
-
SPLIT_STREAMS
プロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。
このプロシージャは、MERGE_STREAMS_JOB
プロシージャによってコールされます。MERGE_STREAMS_JOB
プロシージャは、安全にマージできるようにストリームがユーザー指定のマージしきい値内にあるかどうかを判別します。ストリームがマージしきい値の範囲外の場合、MERGE_STREAMS_JOB
プロシージャは何も実行しません。通常、MERGE_STREAMS
プロシージャを直接実行するのではなく、MERGE_STREAMS_JOB
プロシージャを実行することをお薦めします。
ただし、次の条件を満たす場合は、MERGE_STREAMS
プロシージャを直接実行することを選択できます。
-
分割ストリームの宛先での問題が修正されており、宛先キューが変更を受け入れることができる。
-
分割ストリームによって使用されるクローニングされた取得プロセスが開始され、変更を取得している。
-
接続先データベースにある適用プロセスが、クローニングされた取得プロセスによって取得された変更を適用している。
-
クローニングされた取得プロセスの
GV$STREAMS_CAPTURE
ビューのCAPTURE_MESSAGE_CREATE_TIME
が、元の取得プロセスのCAPTURE_MESSAGE_CREATE_TIME
に追いついているか、ほとんど追いついている。クローニングされた取得プロセスは、元の取得プロセスに完全には追いつかない場合があります。そのため、クローニングされた取得プロセスが元の取得プロセスにほとんど追いついている場合、分割ストリームをマージできます。
MERGE_STREAMS
プロシージャを実行すると、次のアクションが実行されます。
-
クローニングされた取得プロセスが停止されます。
-
元の取得プロセスを停止します。
-
クローニングされた伝播を元の伝播にコピーして戻します。コピーして戻した後の伝播の名前は、元の伝播と同じ名前です。
-
次の2つのSCN値の小さいほうのSCN値から元の取得プロセスを開始します。
-
クローニングされた伝播の確認済SCN
-
元の取得プロセスによって取得された変更を伝播する他の伝播の、一番小さい確認済SCN
元の取得プロセスを開始すると、すでに取得されている変更が再取得されたり、クローニングされた取得プロセスによってすでに取得されている変更が取得される場合があります。いずれの場合も、関連する適用プロセスによって、重複して受信した変更が破棄されます。
-
-
クローニングされた伝播が削除されます。
-
クローニングされた取得プロセスが削除されます。
-
クローニングされたキューが削除されます。
構文
DBMS_STREAMS_ADM.MERGE_STREAMS( cloned_propagation_name IN VARCHAR2, propagation_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT NULL, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-26 MERGE_STREAMSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存の伝播名を指定する必要があります。所有者を指定しないでください。 |
|
元のストリームにマージされて戻される伝播の名前。
元の伝播名とは異なる名前を使用する場合、または
|
|
マージされて戻される伝播のソース・キューであるキューの名前。
|
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
使用上のノート
MERGE_STREAMS
プロシージャを使用して、SPLIT_STREAMS
プロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。
DBA_STREAMS_SPLIT_MERGE
ビューは、分割およびマージ操作に関する情報を示します。
162.6.27 MERGE_STREAMS_JOBプロシージャ
このプロシージャは、元の取得プロセスおよびクローニングされた取得プロセスが、指定されたマージしきい値内にあるかどうかを判別します。マージしきい値内にある場合、このプロシージャはMERGE_STREAMS
プロシージャを実行して2つのストリームをマージします。
このプロシージャは、通常、このパッケージのSPLIT_STREAMS
プロシージャを使用して分割された2つのストリームのマージに使用します。SPLIT_STREAMS
プロシージャは、ストリームの分割時に元のストリームのコンポーネントをクローニングします。このため、この項では次の用語が使用されています。
-
分割前のストリームには、元のキュー、元の取得プロセスおよび元の伝播があります。
-
SPLIT_STREAMS
プロシージャによって分割されたストリームには、クローニングされたキュー、クローニングされた取得プロセスおよびクローニングされた伝播があります。
ストリームを分割するSPLIT_STREAMS
プロシージャでauto_merge_threshold
パラメータが正数に設定された場合、マージ・ジョブはスケジュールに従ってMERGE_STREAMS_JOB
プロシージャを自動的に実行します。MERGE_STREAMS_JOB
プロシージャが自動的に実行される場合、schedule_name
パラメータにスケジュール名を、merge_job_name
パラメータにマージ・ジョブ名を指定します。マージ・ジョブおよびそのスケジュールは、SPLIT_STREAMS
プロシージャによって作成されました。
ストリームを分割するSPLIT_STREAMS
プロシージャでauto_merge_threshold
パラメータがNULL
または0
(ゼロ)に設定された場合は、MERGE_STREAMS_JOB
プロシージャを手動で実行できます。この場合は、自動的には実行されません。
参照:
-
MERGE_STREAMS_JOB
プロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構文
DBMS_STREAMS_ADM.MERGE_STREAMS_JOB( cloned_propagation_name IN VARCHAR2, propagation_name IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT NULL, merge_threshold IN NUMBER, schedule_name IN VARCHAR2 DEFAULT NULL, merge_job_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-27 MERGE_STREAMS_JOBプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存の伝播名を指定する必要があります。所有者を指定しないでください。 |
|
元のストリームにマージされて戻される伝播の名前。
元の伝播名とは異なる名前を使用する場合、または
|
|
マージされて戻される伝播のソース・キューであるキューの名前。
|
|
マージしきい値(秒単位)。
具体的には、クローニングされた取得プロセスと元の取得プロセスの |
|
マージ・ジョブのスケジュールの名前。
このプロシージャを手動で実行する場合は、 |
|
ストリームをマージするジョブの名前。
このプロシージャを手動で実行する場合は、 |
使用上のノート
MERGE_STREAMS_JOB
プロシージャを使用して、SPLIT_STREAMS
プロシージャを使用して分割されなかった2つのストリームをマージできます。この方法でストリームをマージすることによって、1つのデータベースで複数の取得プロセスを実行しているときに、リソースを節約してパフォーマンスを向上させることができます。
MERGE_STREAMS_JOB
プロシージャの完了後、DBA_CAPTURE
ビューおよびDBA_PROPAGATION
ビューを問い合せて、ストリームがマージされたかどうかを判別できます。ストリームがマージされた場合、クローニングされた取得プロセスおよびクローニングされた伝播はこれらのビューに表示されません。
ストリームがマージされ、schedule_name
パラメータおよびmerge_job_name
パラメータがNULL
以外の場合、指定されたスケジュールおよびマージ・ジョブは自動的に削除されます。
DBA_STREAMS_SPLIT_MERGE
ビューは、分割およびマージ操作に関する情報を示します。
162.6.28 POST_INSTANTIATION_SETUPプロシージャ
このプロシージャはOracle Streamsレプリケーション環境を構成するために、インスタンス化後に必要な処理を実行します。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
Oracle Streamsレプリケーションの構成を完了するには、次のステップを実行します。
-
ソース・データベースで
PRE_INSTANTIATION_SETUP
プロシージャを実行します。 -
必要なインスタンス化処理を実行します。
-
ソース・データベースで
POST_INSTANTIATION_SETUP
プロシージャを実行します。
通常、このステップで構成したOracle Streamsレプリケーション環境は、次のいずれかの目的に使用されます。
-
共有データベース・オブジェクトへの変更をレプリケートして、異なるデータベースでデータベース・オブジェクトの同期を維持するため。
-
データベースの保守操作時(別のプラットフォームへのデータベースの移行時など)に、データベース・オブジェクトへの変更をレプリケートするため。この場合は、保守操作の完了後に
CLEANUP_INSTANTIATION_SETUP
プロシージャを使用してレプリケーション環境を削除します。
ノート:
POST_INSTANTIATION_SETUP
プロシージャの実行時、パラメータの値は、対応するPRE_INSTANTIATION_SETUP
プロシージャの実行時に指定したパラメータ(perform_actions
、script_name
, script_directory_object
およびstart_processes
を除く)の値と一致している必要があります。
ノート:
取得プロセスでは、SYS
、SYSTEM
またはCTXSYS
スキーマ内の変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。
参照:
-
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
-
Oracle Streamsレプリケーション環境の設定については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
データベースの保守操作を実行する方法については、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.POST_INSTANTIATION_SETUP( maintain_mode IN VARCHAR2, tablespace_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, start_processes IN BOOLEAN DEFAULT FALSE, instantiation_scn IN NUMBER DEFAULT NULL, exclude_schemas IN VARCHAR2 DEFAULT NULL, exclude_flags IN BINARY_INTEGER DEFAULT NULL);
パラメータ
参照:
このプロシージャのパラメータで表162-28に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。
表162-28 POST_INSTANTIATION_SETUPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のいずれかを指定します。
|
|
表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。 また、この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対する
関連項目: 「TABLESPACE_SET表タイプ」 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
|
|
インスタンス化の実行時にインスタンス化SCNが設定されなかった場合は、接続先データベース上のデータベース・オブジェクトのインスタンス化SCNを指定します。RMANを使用したインスタンス化では、インスタンス化SCNは自動的には設定されませんが、適切なインスタンス化SCN値が指定されます。詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 接続先データベース上のデータベース・オブジェクトのインスタンス化SCNがインスタンス化の実行時に設定された場合は、 |
|
Oracle Streams構成から除外するスキーマのカンマ区切りリスト。これらのスキーマを除外するために、各取得プロセスのネガティブ・ルール・セットにスキーマ・ルールが追加されます。 データベース内のすべてのスキーマを除外する場合は、アスタリスク(
このパラメータは、 |
|
|
使用上のノート
次の項では、このプロシージャの使用上のノートについて説明します。
自己完結型の表領域セット
maintain_mode
パラメータをTRANSPORTABLE
TABLESPACES
に設定した場合、指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。
参照:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。
RMANによるデータベースのインスタンス化の実行時に名前が変更された接続先データベース
maintain_mode
パラメータをGLOBAL
に設定した場合は、POST_INSTANTIATION_SETUP
プロシージャを実行する前に、データベースをインスタンス化する必要があります。RMANのDUPLICATE
コマンドまたはCONVERT
DATABASE
コマンドを使用してデータベースをインスタンス化する場合は、インスタンス化の実行時に、接続先データベースのグローバル名をソース・データベースのグローバル名に変更できます。この場合は、POST_INSTANTIATION_SETUP
プロシージャを実行する前に、次のステップを実行します。
-
接続先データベースのグローバル名を変更して、
destination_database
パラメータで指定する名前に戻します。 -
ソースに存在していて、接続先データベースにクローニングされたすべてのループバック・データベース・リンクを、接続先データベースで削除し、再作成します。たとえば、ソース・データベース
dbs1.net
に、そのソース・データベース自体を参照するデータベース・リンクがあるとします。接続先データベースは、dbs2.net
であるとします。接続先データベースで、このデータベース・リンクを削除し、接続先データベース自体(dbs2.net
)を参照するループバック・データベース・リンクとして再作成します。 -
ソース・データベースから接続先データベースにクローニングされた、ソース・データベースから接続先データベースへのすべてのデータベース・リンクを削除します。たとえば、ソース・データベースが
dbs1.net
、接続先データベースがdbs2.net
である場合は、接続先データベース上のdbs1.net
からdbs2.net
へのすべてのデータベース・リンクを削除します。 -
接続先データベースからソース・データベースへのデータベース・リンクを、ソース・データベースのグローバル名と同じ名前で作成します。データベース・リンクは、接続先データベース上のOracle Streams管理者がアクセスできる必要があります。
このデータベース・リンクは、
POST_INSTANTIATION_SETUP
プロシージャによって、宛先データベースでDBMS_APPLY_ADM
パッケージのSET_GLOBAL_INSTANTIATION_SCN
プロシージャが実行されるために必要です。SET_GLOBAL_INSTANTIATION_SCN
プロシージャには、データベース・リンクが必要です。インスタンス化SCNは、POST_INSTANTIATION_SETUP
プロシージャのinstantiation_scn
パラメータで指定する値に設定されます。
ノート:
RMANのDUPLICATE
コマンドまたはCONVERT
DATABASE
コマンドを使用してデータベースをインスタンス化する場合、接続先データベースを取得データベースにすることはできません。
接続先データベースから削除されるOracle Streamsコンポーネント
maintain_mode
パラメータをGLOBAL
に設定した場合は、POST_INSTANTIATION_SETUP
プロシージャを実行する前に、データベースをインスタンス化する必要があります。データベースのインスタンス化の実行時に、PRE_INSTANTIATION_SETUP
プロシージャによって作成されたOracle Streamsコンポーネント(Oracle Streamsのクライアント、キューなど)がソース・データベースから接続先データベースにコピーされる場合があります。POST_INSTANTIATION_SETUP
プロシージャは、PRE_INSTANTIATION_SETUP
プロシージャによって作成されたStreamsコンポーネントを接続先データベースから削除します。
PRE_INSTANTIATION_SETUP
プロシージャによって作成されたルール・セットおよびルールが接続先データベースから削除されない場合があります。POST_INSTANTIATION_SETUP
プロシージャは、これらのルール・セットおよびルールを接続先データベースのStreamsクライアントには関連付けません。これらのルール・セットおよびルールは、POST_INSTANTIATION_SETUP
プロシージャまたはこのプロシージャで生成されたスクリプトの実行完了後、ユーザーが接続先データベースから削除できます(オプション)。
ノート:
POST_INSTANTIATION_SETUP
プロシージャは、PRE_INSTANTIATION_SETUP
プロシージャで作成されたOracle Streamsコンポーネントのみを削除します。他の方法で作成されたOracle Streamsコンポーネントは削除しません。
162.6.29 PRE_INSTANTIATION_SETUPプロシージャ
このプロシージャは、Oracle Streamsレプリケーション環境を構成するために、インスタンス化前に必要な処理を実行します。
このプロシージャは、取得データベースで実行します。取得データベースは、ソース・データベースに加えられた変更を取得するデータベースです。
Oracle Streamsレプリケーションの構成を完了するには、次のステップを実行します。
-
Streamsレプリケーション環境内のソース・データベースとなるデータベースで、
PRE_INSTANTIATION_SETUP
プロシージャを実行します。 -
必要なインスタンス化処理を実行します。
-
ソース・データベースで
POST_INSTANTIATION_SETUP
プロシージャを実行します。
通常、このステップで構成したOracle Streamsレプリケーション環境は、次のいずれかの目的に使用されます。
-
共有データベース・オブジェクトへの変更をレプリケートして、異なるデータベースでデータベース・オブジェクトの同期を維持するため。
-
データベースの保守操作時(別のプラットフォームへのデータベースの移行時など)に、データベース・オブジェクトへの変更をレプリケートするため。この場合は、保守操作の完了後に
CLEANUP_INSTANTIATION_SETUP
プロシージャを使用してレプリケーション環境を削除します。
ノート:
-
取得プロセスでは、
SYS
、SYSTEM
またはCTXSYS
スキーマ内の変更は取得されません。このプロシージャは、これらのスキーマに対するレプリケーションは構成しません。 -
RMANの
DUPLICATE
コマンドまたはCONVERT
DATABASE
コマンドを使用してデータベースをインスタンス化する場合、接続先データベースを取得データベースにすることはできません。
参照:
-
このプロシージャの詳細は、「Oracle Streams環境を構成するプロシージャ」を参照してください。
-
Oracle Streamsレプリケーション環境の設定については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
-
データベースの保守操作を実行する方法については、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.PRE_INSTANTIATION_SETUP( maintain_mode IN VARCHAR2, tablespace_names IN DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET, source_database IN VARCHAR2, destination_database IN VARCHAR2, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, capture_name IN VARCHAR2 DEFAULT NULL, capture_queue_table IN VARCHAR2 DEFAULT NULL, capture_queue_name IN VARCHAR2 DEFAULT NULL, capture_queue_user IN VARCHAR2 DEFAULT NULL, propagation_name IN VARCHAR2 DEFAULT NULL, apply_name IN VARCHAR2 DEFAULT NULL, apply_queue_table IN VARCHAR2 DEFAULT NULL, apply_queue_name IN VARCHAR2 DEFAULT NULL, apply_queue_user IN VARCHAR2 DEFAULT NULL, bi_directional IN BOOLEAN DEFAULT FALSE, include_ddl IN BOOLEAN DEFAULT FALSE, start_processes IN BOOLEAN DEFAULT FALSE, exclude_schemas IN VARCHAR2 DEFAULT NULL, exclude_flags IN BINARY_INTEGER DEFAULT NULL);
パラメータ
参照:
このプロシージャのパラメータで表162-29に記載されていないものについては、「構成プロシージャの共通パラメータ」を参照してください。
表162-29 PRE_INSTANTIATION_SETUPプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
次のいずれかを指定します。
|
|
表領域セット内の表領域は、ソース・データベースに存在している必要がありますが、接続先データベースに存在しないようにする必要があります。 また、この表領域セットのデータファイルを格納するディレクトリごとに、ディレクトリ・オブジェクトが1つ存在する必要があります。このプロシージャを起動するユーザーには、それらのディレクトリ・オブジェクトに対する
関連項目: 「TABLESPACE_SET表タイプ」 |
|
ソース・データベースのグローバル名。 ローカル・データベースと同じグローバル名を指定すると、ソース・データベースに対するローカル取得プロセスが構成されます。 ローカル・データベースと異なるグローバル名を指定すると、ローカル・データベースでダウンストリーム取得プロセスが構成されます。この場合は、ソース・データベースのグローバル名と同じ名前を持つ、ローカル・データベースからソース・データベースへのデータベース・リンクが存在する必要があり、また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
宛先データベースのグローバル名。 接続先データベースがローカル・データベースでない場合は、接続先データベースのグローバル名と同じ名前を持つ、ローカル・データベースから接続先データベースへのデータベース・リンクが存在する必要があります。また、プロシージャを実行するユーザーがそのデータベース・リンクにアクセス可能である必要もあります。
|
|
取得プロセスで使用する各キューのキュー表の名前で、
|
|
|
|
Oracle Streams構成から除外するスキーマのカンマ区切りリスト。これらのスキーマを除外するために、各取得プロセスのネガティブ・ルール・セットにスキーマ・ルールが追加されます。 データベース内のすべてのスキーマを除外する場合は、アスタリスク(
このパラメータは、 |
|
|
使用上のノート
次の項では、このプロシージャの使用上のノートについて説明します。
自己完結型の表領域セット
maintain_mode
パラメータをTRANSPORTABLE
TABLESPACES
に設定した場合、指定する表領域セットは自己完結型である必要があります。ここでの自己完結型とは、表領域セットの内部から表領域セットの外部を指す参照が存在しないことを意味します。たとえば、表領域セットにパーティション表が部分的に含まれている場合、その表領域セットは自己完結型ではありません。
参照:
自己完結型の表領域セットの詳細は、『Oracle Database管理者ガイド』を参照してください。
exclude_flagsパラメータ
次のいずれかの値を指定します。
-
スキーマおよびスキーマ内のすべてのデータベース・オブジェクトへの変更を除外する場合は、
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL
を指定します。 -
スキーマ内のOracle Streamsでサポートされていないデータベース・オブジェクトへの変更を除外する場合は、
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED
を指定します。
これらの値を両方とも指定すると、エラーが発生します。
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL
またはDBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED
に加えて、次の値のいずれか(または両方)を指定してください。
-
除外するデータベース・オブジェクトに行ったデータ操作言語(DML)変更を除外する場合は、
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML
を指定します。 -
除外するデータベース・オブジェクトに行ったデータ定義言語(DDL)変更を除外する場合は、
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL
を指定します。
これらの値を複数指定するには、プラス記号(+
)を使用します。たとえば、exclude_schemas
パラメータで指定するスキーマ内の表へのDML変更を保守し、そのスキーマおよびそのスキーマ内のデータベース・オブジェクトへのDDL変更を除外するには、このパラメータを次のように指定します。
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_FULL + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL
exclude_schemas
パラメータで指定するスキーマ内のサポートされていないデータベース・オブジェクトへのDML変更およびDDL変更を除外するには、このパラメータを次のように指定します。
DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL
除外するデータベース・オブジェクトのルールは、各取得プロセスのネガティブ・ルール・セットに追加されます。したがって、除外するデータベース・オブジェクトへの変更は取得およびレプリケートされません。
このパラメータは、maintain_mode
パラメータがGLOBAL
に設定され、exclude_schemas
パラメータがNULL
値以外に設定されている場合にのみ有効です。maintain_mode
パラメータがGLOBAL
に設定され、exclude_schemas
パラメータがNULL
に設定されている場合、このパラメータは無視されます。maintain_mode
パラメータがTRANSPORTABLE
TABLESPACES
に設定されている場合、このパラメータは無視され、指定した表領域セット内のOracle Streamsでサポートされていないすべてのデータベース・オブジェクトがOracle Streams構成から自動的に除外されます。
また、exclude_schemas
パラメータでスキーマが指定されていても、exclude_flags
パラメータがNULL
に設定されている場合は、取得プロセスのネガティブ・ルール・セットにルールは追加されず、exclude_schemas
パラメータで指定されたスキーマはレプリケーション環境に含められます。
162.6.30 PURGE_SOURCE_CATALOGプロシージャ
このプロシージャは、指定されたオブジェクトに属するすべてのOracle Streamsデータ・ディクショナリ情報をローカル・データベースから削除します。
このプロシージャを使用すると、現在および将来にわたり不要なOracle Streamsメタデータを削除できます。
構文
DBMS_STREAMS_ADM.PURGE_SOURCE_CATALOG( source_database IN VARCHAR2, source_object_name IN VARCHAR2, source_object_type IN VARCHAR2);
パラメータ
表162-30 PURGE_SOURCE_CATALOGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトが含まれるソース・データベースのグローバル名。 ドメイン名を指定しない場合は、自動的にドメイン名がデータベース名に追加されます。たとえば、ドメイン名が |
|
オブジェクトの名前で、 |
|
オブジェクトのタイプ。現在、使用できるオブジェクトのタイプは、 |
使用上のノート
オブジェクトが存在するソース・データベースのグローバル名をsource_database
パラメータに指定する必要があります。現行のデータベースがオブジェクトのソース・データベースでない場合、そのオブジェクトに関するデータ・ディクショナリ情報は、ソース・データベースではなく現行のデータベースから削除されます。
たとえば、ソース・データベースdbs1.net
のhr.employees
表への変更が、接続先データベースdbs2.net
のhr.employees
表に適用されると仮定します。また、dbs2.net
のhr.employees
は、ソース・データベースではないとします。この場合、この表にdbs2.net
をsource_database
として指定すると、エラーが発生します。ただし、dbs2.net
データベースでのPURGE_SOURCE_CATALOG
プロシージャの実行時に、この表にdbs1.net
をsource_database
として指定すると、dbs2.net
にある表に関するデータ・ディクショナリ情報が削除されます。
次の条件のいずれかに当てはまる場合は、データベースでこのプロシージャを実行しないでください。
-
オブジェクトの取得プロセスで取得した論理変更レコード(LCR)が、オブジェクトの再インスタンス化を行わずにローカルで適用される場合(またはその可能性がある場合)。
-
オブジェクトの取得プロセスで取得したLCRが、オブジェクトの再インスタンス化を行わずにデータベースによって転送される場合(またはその可能性がある場合)。
ノート:
これらの条件は、取得プロセスで作成されていないLCRには適用されません。つまり、これらの条件は、ユーザーが作成したLCRには適用されません。
162.6.31 RECOVER_OPERATIONプロシージャ
このプロシージャは、エラーの発生により停止した操作に対するオプションを提供します。
これらの操作には、分割およびマージ操作、Oracle Streamsレプリケーション構成操作、Oracle Streamsチェンジ・テーブル構成操作が含まれます。このプロシージャは、操作のロールフォワード、操作のロールバック、操作に関するすべてのメタデータのパージのいずれかの処理を実行します。
このプロシージャは、次の操作に対してのみアクションを実行できます。
-
次を使用した分割操作およびマージ操作
-
split_threshold
およびmerge_threshold
取得プロセス・パラメータ(自動的な分割およびマージを有効にするために、NULL
以外の値に設定)
-
-
MAINTAIN_CHANGE_TABLEプロシージャによるチェンジ・テーブル構成操作
-
次のプロシージャによって実行されるレプリケーション構成操作
操作に関する情報は、操作の処理中に次のデータ・ディクショナリ・ビューに格納されます。
分割およびマージ操作の場合、データ・ディクショナリ・ビューは取得プロセスを含むデータベースに移入されます。構成操作の場合、データ・ディクショナリ・ビューはレプリケーション構成プロシージャが実行されたデータベースに移入されます。
操作が正常に完了すると、操作に関するメタデータはDBA_RECOVERABLE_SCRIPT
ビューからDBA_RECOVERABLE_SCRIPT_HIST
ビューに移動されます。その他のビュー(DBA_RECOVERABLE_SCRIPT_PARAMS
、DBA_RECOVERABLE_SCRIPT_BLOCKS
およびDBA_RECOVERABLE_SCRIPT_ERRORS
)では、操作に関する情報は30日間保存された後に自動的に削除されます。
これらのいずれかの操作でエラーが発生して操作が停止した場合、操作に関するメタデータはこれらのビューに残ります。この場合、操作に関するメタデータは、RECOVER_OPERATION
プロシージャを使用してロールフォワード、ロールバックまたはパージできます。操作のロールフォワードを選択した場合は、処理を行う前にDBA_RECOVERABLE_SCRIPT_ERRORS
に記録されたエラーの原因を解消します。
分割およびマージ操作の場合は、取得プロセスを含むデータベースでRECOVER_OPERATION
プロシージャを実行します。構成操作の場合は、レプリケーション構成プロシージャが実行されたデータベースでRECOVER_OPERATION
を実行します。
ノート:
-
構成操作の場合、プロシージャは、リカバリ可能なビューに格納される操作情報および
RECOVER_OPERATION
プロシージャにより管理される操作に対して、スクリプトを生成して環境を構成するのではなく、直接環境を構成する必要があります(perform_actions
=>
TRUE
)。 -
RECOVER_OPERATION
プロシージャを実行するには、両方のデータベースがOracle Database 10g リリース2以上のデータベースである必要があります。
構文
DBMS_STREAMS_ADM.RECOVER_OPERATION( script_id IN RAW, operation_mode IN VARCHAR2 DEFAULT 'FORWARD');
パラメータ
表162-31 RECOVER_OPERATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ロールフォワード中、ロールバック中またはパージ中の操作の操作ID。操作IDを確認するには、 |
|
|
162.6.32 REMOVE_QUEUEプロシージャ
このプロシージャは、指定されたANYDATA
キューを削除します。
具体的には、このプロシージャは次の操作を実行します。
-
現行のエンキュー・トランザクションとデキュー・トランザクションがすべてコミットされるのを待ちます。
-
キューを停止します。キューを停止すると、それ以降、キューに対するエンキュー操作とキューからのデキュー操作が禁止されます。
-
キューを削除します。
-
drop_unused_queue_table
パラメータがTRUE
に設定されている場合、キュー表が空で、他のキューによって使用されていなければ、キュー表を削除します。 -
cascade
パラメータがTRUE
に設定されている場合は、キューを使用しているすべてのOracle Streamsクライアントを削除します。ノート:
必ず
ANYDATA
キューを指定してください。
構文
DBMS_STREAMS_ADM.REMOVE_QUEUE( queue_name IN VARCHAR2, cascade IN BOOLEAN DEFAULT FALSE, drop_unused_queue_table IN BOOLEAN DEFAULT TRUE);
パラメータ
表162-32 REMOVE_QUEUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するキューの名前で、 |
|
|
|
キューのキュー表が空の場合に
|
162.6.33 REMOVE_RULEプロシージャ
このプロシージャは、特定のルールまたはすべてのルールを、指定の取得プロセス、同期取得、適用プロセス、伝播またはメッセージ・クライアントに関連付けられたルール・セットから削除します。
このプロシージャを実行した結果、メッセージ・クライアントのポジティブ・ルール・セットが空になる場合は、そのメッセージ・クライアントは自動的に削除されます。
ノート:
自動的に作成されたルールを削除する場合は、DBMS_RULE_ADM.DROP_RULE
プロシージャではなく、このプロシージャを使用してルールを削除してください。DBMS_RULE_ADM.DROP_RULE
プロシージャを使用すると、ルールに関するメタデータの一部が残存する可能性があります。
構文
DBMS_STREAMS_ADM.REMOVE_RULE( rule_name IN VARCHAR2, streams_type IN VARCHAR2, streams_name IN VARCHAR2, drop_unused_rule IN BOOLEAN DEFAULT TRUE, inclusion_rule IN BOOLEAN DEFAULT TRUE);
パラメータ
表162-33 REMOVE_RULEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するルールの名前で、 たとえば、 |
|
Oracle Streamsクライアントのタイプを次のように指定します。
|
|
Oracle Streamsクライアント(取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアント)の名前。所有者を指定しないでください。 指定されたOracle Streamsクライアントは存在しないが、そのクライアントのルールに関連するメタデータがデータ・ディクショナリに残っている場合は、そのメタデータが削除されます。 指定されたOracle Streamsクライアントが存在せず、そのクライアントのルールに関連するメタデータもデータ・ディクショナリに残っていない場合は、エラーが発生します。 |
|
ルールがルール・セットに属していない場合に ルールがいずれかのルール・セットに属している場合に
|
|
|
162.6.34 REMOVE_STREAMS_CONFIGURATIONプロシージャ
このプロシージャは、ローカル・データベースからOracle Streams構成を削除します。
構文
DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION;
使用上のノート
このプロシージャは、ローカル・データベース上で次の処理を実行します。
-
すべての取得プロセスを削除します。
-
インスタンス化のために表が準備されている場合は、
DBMS_CAPTURE_ADM
パッケージのABORT_TABLE_INSTANTIATION
プロシージャを使用すると、表のインスタンス化の準備が中断されます。 -
インスタンス化のためにスキーマが準備されている場合は、
DBMS_CAPTURE_ADM
パッケージのABORT_SCHEMA_INSTANTIATION
プロシージャを使用すると、スキーマのインスタンス化の準備が中断されます。 -
インスタンス化のためにデータベースが準備されている場合は、
DBMS_CAPTURE_ADM
パッケージのABORT_GLOBAL_INSTANTIATION
プロシージャを使用すると、データベースのインスタンス化の準備が中断されます。 -
DBMS_STREAMS_ADM
パッケージまたはDBMS_PROPAGATION_ADM
パッケージを使用して作成された伝播を削除します。伝播を削除する前に、伝播ジョブを無効にします。DBMS_AQADM
パッケージを使用して作成された伝播は削除しません。 -
伝播で使用されるすべての伝播ジョブを無効にします。
-
すべての適用プロセスを削除します。適用プロセスのエラー・キューに適用エラーがある場合は、すべての適用エラーを削除してから、適用プロセスを削除します。
-
適用プロセスで使用されるDDLハンドラの定義を削除します。DDLハンドラによって使用されるPL/SQLプロシージャは削除しません。
-
適用プロセスで使用されるメッセージ・ハンドラの定義を削除します。メッセージ・ハンドラによって使用されるPL/SQLプロシージャは削除しません。
-
適用プロセスで使用されるプリコミット・ハンドラの定義を削除します。プリコミット・ハンドラによって使用されるPL/SQLプロシージャは削除しません。
-
個々の適用オブジェクト用、個々のスキーマ用およびデータベース全体用の、初期化SCNと無視SCNを削除します。
-
メッセージ・クライアントを削除します。
-
DBMS_STREAMS_ADM
パッケージのSET_MESSAGE_NOTIFICATION
プロシージャを使用して設定されたメッセージ通知定義を解除します。 -
プロシージャDMLハンドラとエラー・ハンドラの定義を削除します。この削除では、これらのハンドラによって使用されるPL/SQLプロシージャは削除されません。
-
更新競合ハンドラを削除します。
-
適用表の代替キー列の定義を削除します。
-
DBMS_STREAMS_ADM
パッケージを使用して作成されたルール・セットおよびルールを削除します。 -
取得プロセス、伝播、適用プロセスおよびメッセージ・クライアントによって使用されなかったルール・セットを削除し、それぞれのルール・セット内のルールを削除します。これらのルールとルール・セットは、
DBMS_STREAMS_ADM
パッケージまたはDBMS_RULE_ADM
パッケージのどちらを使用して作成されたかに関係なく削除されます。
このプロシージャは、取得プロセスと適用プロセスを停止してから、それらのプロセスを削除します。
次の両方の条件を満たす場合は、このプロシージャはルール・セットまたはルールを削除しません。
-
ルール・セットまたはルールが
DBMS_RULE_ADM
パッケージを使用して作成された。 -
ルール・セットまたはルールが、取得プロセス、伝播、適用プロセスまたはメッセージ・クライアントによって使用されていない。
ノート:
このプロシージャの実行には危険が伴います。データベースからOracle Streams構成全体を削除するかどうかを必ず確認してから、このプロシージャを実行してください。
ノート:
-
このプロシージャを繰り返し実行しても、エラーは発生しません。プロシージャが途中で失敗した場合は再実行できます。
-
このプロシージャは複数回コミットされます。
参照:
-
「
DBMS_CAPTURE_ADM
パッケージ」の「STOP_CAPTUREプロシージャ」 -
「
DBMS_APPLY_ADM
パッケージ」の「STOP_APPLYプロシージャ」 -
「
DBMS_STREAMS_ADM
パッケージ」の「REMOVE_RULEプロシージャ」
162.6.35 RENAME_COLUMNプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内の列の名前を変更する宣言ルールベースの変換を追加または削除します。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
ノート:
-
RENAME_COLUMN
プロシージャでサポートされているデータ・タイプは、Oracle Streams取得プロセスでサポートされているデータ・タイプと同じです。 -
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
-
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。
-
Oracle Streams取得プロセスによってサポートされているデータ・タイプについては、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.RENAME_COLUMN( rule_name IN VARCHAR2, table_name IN VARCHAR2, from_column_name IN VARCHAR2, to_column_name IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*', step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-34 RENAME_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
行LCRで列の名前を変更する表の名前で、 |
|
ルールを満たす各行LCR内の名前を変更する列の名前。 |
|
ルールを満たす各行LCR内の列の新しい名前。 |
|
行LCRの新しい値の列の名前を変更する場合は、 行LCRの古い値の列の名前を変更する場合は、 行LCRの新しい値と古い値の両方の列の名前を変更する場合は、 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対する列名変更の宣言ルールベースの変換のうち、指定したパラメータ(table_name
、column_name
およびstep_number
)に一致するすべての変換が削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合の、RENAME_COLUMN
プロシージャの動作を示します。
table_name | from_column_name | to_column_name | step_number | 結果 |
---|---|---|---|---|
|
|
|
|
指定したルールに対するすべての列名変更変換が削除されます。 |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定されたcolumn_nameの値を持つすべての列名変更変換が削除されます。 |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定されている |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定された |
|
|
|
|
指定したルールに対して指定された |
162.6.36 RENAME_SCHEMAプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(LCR)内のスキーマの名前を変更する宣言ルールベースの変換を追加または削除します。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
ノート:
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.RENAME_SCHEMA( rule_name IN VARCHAR2, from_schema_name IN VARCHAR2, to_schema_name IN VARCHAR2, step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-35 RENAME_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
ルールを満たす各行LCR内の名前を変更するスキーマの名前。 |
|
ルールを満たす各行LCR内のスキーマの新しい名前。 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対するスキーマ名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_schema_name
、to_schema_name
およびstep_number
)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合の、RENAME_SCHEMA
プロシージャの動作を示します。
from_schema_name | to_schema_name | step_number | 結果 |
---|---|---|---|
|
|
|
指定したルールに対するすべてのスキーマ名変更変換が削除されます。 |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定された |
162.6.37 RENAME_TABLEプロシージャ
このプロシージャは、指定されたルールを満たす行論理変更レコード(行LCR)内の表の名前を変更する宣言ルールベースの変換を追加または削除します。
指定されたルールがTRUE
に評価されたときに実行する変換の場合、そのルールはOracle Streamsクライアントのポジティブ・ルール・セットに含まれている必要があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。
ノート:
宣言的変換では、行LCRのみを変換できます。これらの行LCRは、取得プロセスまたは同期取得で取得されたか、またはアプリケーションで作成され、エンキューされた行LCRです。したがって、このプロシージャを実行する場合は、DMLルールを指定する必要があります。DDLを指定すると、エラーが発生します。
参照:
宣言ルールベースの変換の詳細は、『Oracle Streams概要および管理』を参照してください。
構文
DBMS_STREAMS_ADM.RENAME_TABLE( rule_name IN VARCHAR2, from_table_name IN VARCHAR2, to_table_name IN VARCHAR2, step_number IN NUMBER DEFAULT 0, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表162-36 RENAME_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
たとえば、 |
|
ルールを満たす各行LCR内の名前を変更する表の名前で、 |
|
ルールを満たす各行LCR内の表の新しい名前で、 この変換では、表のみ、スキーマのみ、または両方の名前を変更できます。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。 |
|
変換の実行順序。 関連項目: 変換順序の詳細は、『Oracle Streams概要および管理』を参照してください。 |
|
変換をルールに追加する場合は、 変換をルールから削除する場合は、 |
使用上のノート
operation
パラメータに'REMOVE'
を指定すると、指定したルールに対する表名変更の宣言ルールベースの変換のうち、指定したパラメータ(from_table_name
、to_table_name
およびstep_number
)に一致する変換がすべて削除されます。これらのパラメータにNULLを指定すると、ワイルドカードとして動作します。次の表に、これらのパラメータの1つ以上がNULL
の場合の、RENAME_TABLE
プロシージャの動作を示します。
from_table_name | to_table_name | step_number | 結果 |
---|---|---|---|
|
|
|
指定したルールに対するすべての表名変更変換が削除されます。 |
|
|
|
指定したルールに対して指定された |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
|
|
|
指定したルールに対して指定されている |
162.6.38 SET_MESSAGE_NOTIFICATIONプロシージャ
このプロシージャは、指定されたOracle Streamsメッセージ・クライアントによって特定のキューからデキュー可能なメッセージに関する通知を設定します。
指定されたキューにメッセージがエンキューされ、このメッセージがルール・セットを満たすため、特定のメッセージ・クライアントによってキューからデキュー可能である場合に、通知が送信されます。
ノート:
-
現在、メッセージ・クライアントはバッファに入れたメッセージをデキューできません。
-
DBMS_AQ
パッケージは通知を構成することもできます。DBMS_AQ
パッケージでは、バッファに入れたメッセージの通知や時間による通知のグループ化など、DBMS_STREAMS_ADM
パッケージでは使用できない一部の通知機能を提供しています。
構文
DBMS_STREAMS_ADM.SET_MESSAGE_NOTIFICATION( streams_name IN VARCHAR2, notification_action IN VARCHAR2, notification_type IN VARCHAR2 DEFAULT 'PROCEDURE', notification_context IN ANYDATA DEFAULT NULL, include_notification IN BOOLEAN DEFAULT TRUE, queue_name IN VARCHAR2 DEFAULT 'streams_queue');
パラメータ
表162-37 SET_MESSAGE_NOTIFICATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
Oracle Streamsメッセージ・クライアントの名前。所有者を指定しないでください。 たとえば、ユーザー |
|
メッセージの通知を送信する方法を指定します。次のいずれかを指定します。
関連項目: メッセージ通知プロシージャの詳細は、「例」を参照してください。 |
|
通知のタイプ。次のいずれかを指定します。
通知のタイプは、 |
|
通知のコンテキスト。コンテキストは ANYDATA.ConvertRaw(HEXTORAW('FF')) 通知コンテキストはプロシージャによる通知でPL/SQLプロシージャに渡され、HTTPおよび電子メールによる通知では使用されません。 |
|
|
|
ローカル たとえば、 |
使用上のノート
次のいずれかのタイプの通知を指定できます。
-
メッセージ通知が送信される電子メール・アドレス。適切なメッセージがキューにエンキューされると、電子メールがメッセージ・プロパティとともに指定の電子メール・アドレスに送信されます。
-
メッセージを通知するために起動されるPL/SQLプロシージャ。適切なメッセージがキューにエンキューされると、指定したPL/SQLプロシージャがメッセージ・プロパティによって起動されます。このPL/SQLプロシージャによって、メッセージをデキューできます。
-
メッセージ通知が転送されるHTTP URL。適切なメッセージがキューにエンキューされると、通知がメッセージ・プロパティとともに指定のURLに転送されます。
クライアントはデータベースに接続していなくても、通知を受信できます。
電子メールによる通知を登録する場合は、DBMS_AQELM
パッケージを使用し、データベースで電子メール通知の送信に使用されるSMTPサーバーのホスト名およびポート名を設定する必要があります。必要な場合は、データベースのsent
from
フィールドを使用して、発信元の電子メール・アドレスを設定します。この機能を使用するには、Java対応のデータベースが必要です。
HTTPによる通知を登録する場合は、DBMS_AQELM
パッケージを使用し、データベースでHTTP通知の転送に使用されるプロキシ・サーバーのホスト名とポート番号、および非プロキシ・ドメインのリストを設定する必要があります。
各通知は次の構造を持つAQXmlNotification
です。
-
次の要素からなる
notification_options
。-
destination
- メッセージがデキューされる宛先キュー -
consumer_name
- メッセージをデキューしたメッセージ・クライアントの名前
-
-
message_set
- メッセージ・プロパティのセット参照:
-
電子メール通知とHTTP通知の詳細は、
DBMS_AQELM
パッケージのドキュメントを参照してください。 -
メッセージ通知およびXMLの詳細は、『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』および『Oracle XML DB開発者ガイド』を参照してください。
-
Oracle Streamsでルールを使用する方法の詳細は、『Oracle Streams概要および管理』を参照してください。
-
例
メッセージ通知プロシージャを使用する場合は、次のシグネチャを持つPL/SQLプロシージャを定義する必要があります。
PROCEDURE procedure_name( context IN ANYDATA, reginfo IN SYS.AQ$_REG_INFO, descr IN SYS.AQ$_DESCRIPTOR);
procedure_name
はプロシージャの名前を表します。このプロシージャは、メッセージ通知について起動されるユーザー定義PL/SQLプロシージャを指定するPLSQLCALLBACK
データ構造です。
次の簡単な例では、通知で送信されるメッセージ識別子とコンシューマ名に基づいて、oe.user_msg
タイプのメッセージをデキューする通知プロシージャを示します。この例を実行するには、まずタイプを作成します。
CREATE TYPE oe.user_msg AS OBJECT( object_name VARCHAR2(30), object_owner VARCHAR2(30), message VARCHAR2(50)); /
次に、プロシージャを作成します。
CREATE OR REPLACE PROCEDURE oe.notification_dequeue( context ANYDATA, reginfo SYS.AQ$_REG_INFO, descr SYS.AQ$_DESCRIPTOR) AS dequeue_options DBMS_AQ.DEQUEUE_OPTIONS_T; message_properties DBMS_AQ.MESSAGE_PROPERTIES_T; message_handle RAW(16); message ANYDATA; oe_message oe.user_msg; rc PLS_INTEGER; BEGIN -- Get the message identifier and consumer name from the descriptor dequeue_options.msgid := descr.msg_id; dequeue_options.consumer_name := descr.consumer_name; -- Dequeue the message DBMS_AQ.DEQUEUE( queue_name => descr.queue_name, dequeue_options => dequeue_options, message_properties => message_properties, payload => message, msgid => message_handle); rc := message.getobject(oe_message); COMMIT; END; /
参照:
PLSQLCALLBACK
データ構造の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
162.6.39 SET_MESSAGE_TRACKINGプロシージャ
このプロシージャは、現在のセッションで生成された論理変更レコード(LCR)の追跡ラベルを設定します。
このプロシージャの影響があるのは、現行のセッションのみです。取得されたLCRや永続LCRなど、現在のセッションで生成されたLCRが追跡されます。
ノート:
このプロシージャで設定される追跡ラベルは、非LCRメッセージを追跡しません。
構文
DBMS_STREAMS_ADM.SET_MESSAGE_TRACKING( tracking_label IN VARCHAR2 DEFAULT 'Streams_tracking', actions IN NUMBER DEFAULT DBMS_STREAMS_ADM.ACTION_MEMORY);
パラメータ
表162-38 SET_MESSAGE_TRACKINGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セッションで生成されたLCRを追跡するために使用されるラベル。 現在のセッションでメッセージ追跡を停止するには、このパラメータを ラベルのサイズ制限は、4,000バイトです。 |
|
現在、このパラメータで有効な設定は、 このパラメータに指定する値は、列挙定数です。列挙定数にはパッケージ名を接頭辞として付加する必要があります。 |
162.6.40 SET_RULE_TRANSFORM_FUNCTIONプロシージャ
このプロシージャは、カスタム・ルールベースの変換に関する変換ファンクション名を設定または削除します。
構文
DBMS_STREAMS_ADM.SET_RULE_TRANSFORM_FUNCTION( rule_name IN VARCHAR2, transform_function IN VARCHAR2);
パラメータ
表162-39 SET_RULE_TRANSFORM_FUNCTIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
設定または削除するルールベース変換ファンクションを持つルールの名前で、 たとえば、 |
|
ルールのルールベース変換で使用される変換ファンクションの名前を入力するか、 変換ファンクションの名前を指定する場合は、次のいずれかの形式で既存の変換ファンクションを指定します。
ファンクションがパッケージ内にある場合は、
|
使用上のノート
次の項では、このプロシージャの使用上のノートについて説明します。
変換ファンクションのシグネチャ
カスタム・ルールベースの変換ファンクションは、常に1つのメッセージに対して動作しますが、1つ以上のメッセージを戻すことができます。メッセージを1つ戻すカスタム・ルールベースの変換ファンクションは、1対1の変換ファンクションです。1対1の変換ファンクションには、次のシグネチャが含まれている必要があります。
FUNCTION user_function ( parameter_name IN ANYDATA) RETURN ANYDATA;
user_function
はファンクション名で、parameter_name
はファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATA
にカプセル化したもので、ファンクションではANYDATA
にカプセル化したメッセージを戻す必要があります。
複数のメッセージを戻すカスタム・ルールベースの変換ファンクションは、1対多の変換ファンクションです。1対多の変換ファンクションには、次のシグネチャが含まれている必要があります。
FUNCTION user_function ( parameter_name IN ANYDATA) RETURN STREAMS$_ANYDATA_ARRAY;
user_function
はファンクション名で、parameter_name
はファンクションに渡されるパラメータの名前です。ファンクションに渡されるパラメータはメッセージをANYDATA
にカプセル化したもので、ファンクションはカプセル化したANYDATA
メッセージを0個以上含む配列を戻す必要があります。配列に含まれるカプセル化したANYDATA
メッセージが0個の場合、元のメッセージは廃棄されます。
STREAMS$_ANYDATA_ARRAY
タイプは、オラクル社が提供するタイプで、次のように定義されています。
CREATE OR REPLACE TYPE SYS.STREAMS$_ANYDATA_ARRAY AS VARRAY(2147483647) of ANYDATA /
1対多ファンクションを使用するカスタム・ルールベースの変換には、次の制限があります。
-
1対多ファンクションに関連付けられているルールは、Oracle Streams取得プロセスのみでサポートされます。これらのルールは、他のOracle Streamsクライアント(伝播、適用プロセス、メッセージ・クライアントなど)で使用されるルール・セットに追加しないでください。
-
1対多ファンクションは、行論理変更レコード(行LCR)のみを操作できます。DDL LCRは操作できません。
-
1対多ファンクションが戻す行LCRに、ピース単位のLOB、
LONG
またはLONG
RAW
の操作を含めることはできません。 -
1対多ファンクションは、正しい順序で行LCRを戻す必要があります。行LCRは、配列(索引1から開始)内の行LCRの順序に従って、トランザクション内で実行されます。
1対多ファンクションによる変換結果である行LCRを適用プロセスでデキューする場合は、すべての行LCRに対する1対多ファンクションに渡されたLCRのインスタンス化SCNが使用されます。
ノート:
-
1対1または1対多変換ファンクションが
NULL
を戻すと、エラーが発生します。 -
1つのルールに対しては、1つのみのカスタム・ルールベースの変換を指定できます。同じルールに対して、1対1と1対多の両方の変換ファンクションを指定することはできません。
-
カスタム・ルールベースの変換によって作成され戻されるLCRでは、
source_database_name
、transaction_id
、scn
の各パラメータの値が元のLCRと一致している必要があります。これらのパラメータでは、他の値でLCRを作成しようとした場合でも、元のLCRの値が自動的に指定されます。
ルール・アクション・コンテキスト
このプロシージャは、変換を指定するため、指定されたルールのアクション・コンテキストを修正します。ルールのアクション・コンテキストは、ルールがメッセージに対してTRUE
に評価された後、ルール・エンジンのクライアントが解析するルールに関連付けられているオプションの情報です。ルール・エンジンのクライアントには、ユーザーが作成するアプリケーションや、Oracle StreamsなどのOracleの内部機能があります。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセス、メッセージ・クライアントがあります。アクション・コンテキスト内の情報はSYS.RE$NV_LIST
タイプのオブジェクトであり、名前/値ペアで構成されています。
Oracle Streamsのカスタム・ルールベースの変換は、常にアクション・コンテキスト内の次の名前/値ペアで構成されます。
-
ファンクションが1対1の変換ファンクションの場合、その名前は
STREAMS$_TRANSFORM_FUNCTION
です。ファンクションが1対多の変換ファンクションの場合、その名前はSTREAMS$_ARRAY_TRANS_FUNCTION
です。 -
値は、
VARCHAR2
として指定されたPL/SQLファンクション名を含むANYDATA
インスタンスです。このファンクションによって変換が実行されます。
変換ファンクションをコールするユーザー
変換ファンクションをコールするユーザーには、そのファンクションに対するEXECUTE
権限が必要です。次のリストに、変換ファンクションをコールするユーザーのタイプを示します。
-
取得プロセスで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、取得プロセスの取得ユーザーです。
-
同期取得で使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、同期取得の取得ユーザーです。
-
伝播で使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、伝播のソース・キューの所有者です。
-
適用プロセスで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、適用プロセスの適用ユーザーです。
-
メッセージ・クライアントで使用されるルールに対して変換を指定する場合に変換ファンクションをコールするユーザーは、メッセージ・クライアントを起動するユーザーです。
ファンクションの検証
このプロシージャでは、指定された変換ファンクションが存在するかどうかは確認されません。変換ファンクションが存在しない場合は、Oracle Streamsクライアントが変換ファンクションを起動しようとしたときにエラーが発生します。
162.6.41 SET_TAGプロシージャ
このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。
現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。
参照:
-
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構文
DBMS_STREAMS_ADM.SET_TAG( tag IN RAW DEFAULT NULL);
パラメータ
表162-40 SET_TAGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現行のセッションで継続して生成されるREDOエントリすべてに対するバイナリ・タグ。RAW値は一連のバイトで、バイトは一連のビットです。 デフォルトでは、セッションのタグは タグ値のサイズ制限は、2000バイトです。 |
使用上のノート
現行のセッションでタグを16進数値の'17'
に設定するには、次のプロシージャを実行します。
EXEC DBMS_STREAMS_ADM.SET_TAG(tag => HEXTORAW('17'));
SET_TAG
プロシージャでは、次の点に注意してください。
-
このプロシージャはトランザクション型ではありません。つまり、
SET_TAG
の結果はロールバックできません。 -
データベースでデータ・ディクショナリの構築を実行する前に、
SET_TAG
プロシージャを実行してNULL
以外のセッション・タグを設定した場合、ディクショナリの構築前に開始したトランザクションのREDOエントリに、セッションに指定したタグ値が含まれないことがあります。そのため、データ・ディクショナリの構築は、セッションでSET_TAG
プロシージャを使用する前に実行します。データ・ディクショナリは、DBMS_CAPTURE_ADM.BUILD
プロシージャを実行すると構築されます。BUILD
プロシージャは、取得プロセスの作成時に自動的に実行できます。
参照:
162.6.42 SET_UP_QUEUEプロシージャ
このプロシージャは、キュー表およびANYDATA
キューを作成します。
構文
DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table IN VARCHAR2 DEFAULT 'streams_queue_table', storage_clause IN VARCHAR2 DEFAULT NULL, queue_name IN VARCHAR2 DEFAULT 'streams_queue', queue_user IN VARCHAR2 DEFAULT NULL, comment IN VARCHAR2 DEFAULT NULL);
パラメータ
表162-41 SET_UP_QUEUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
キュー表の名前で、 キュー表の所有者を指定しない場合は、このプロシージャを実行するユーザーがキュー表の所有者として自動的に指定されます。 キュー表の名前の最大長は24バイトです。 |
|
キュー表に対すSTORAGE句。 記憶域パラメータは、キュー表の作成時に、 ここで表領域を指定しない場合は、キュー表およびそのすべての関連オブジェクトが、このプロシージャを実行しているユーザーのデフォルトのユーザー表領域に作成されます。ここで表領域を指定した場合は、キュー表およびそのすべての関連オブジェクトが、STORAGE句で指定された表領域に作成されます。
関連項目: STORAGE句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
|
スキーマを指定しない場合は、キュー表の所有者が使用されます。キュー表の所有者は、キューの所有者でもある必要があります。キューの所有者には、キューに関するすべてのキュー操作を実行するための権限が自動的に付与されます。 このパラメータにスキーマが指定されず、 キューの名前の最大長は24バイトです。 |
|
キューに対する
|
|
キューに対するコメント。 |
使用上のノート
設定には、次のアクションが含まれます。
-
指定のキュー表が存在していない場合、このプロシージャは、
DBMS_AQADM
パッケージのCREATE_QUEUE_TABLE
プロシージャを実行し、指定のSTORAGE句でキュー表を作成します。このプロシージャでキュー表が作成される場合は、保護キューでありトランザクション・キューでもある、ANYDATA
のマルチ・コンシューマ・キューが作成されます。また、データベースがOracle Database 10g リリース 2以上の場合、
CREATE_QUEUE_TABLE
のsort_list
設定はcommit_time
に設定されます。データベースがOracle Database 10g リリース2より前の場合、CREATE_QUEUE_TABLE
のsort_list
値はenq_time
に設定されます。 -
指定したキュー表が存在する場合は、そのキュー表のプロパティがキューで使用されます。
-
指定したキューの名前が存在していない場合、このプロシージャは、
DBMS_AQADM
パッケージのCREATE_QUEUE
プロシージャを実行して、キューを作成します。 -
このプロシージャは、キューを開始します。
-
キュー・ユーザーが指定されている場合、このプロシージャは、このユーザーをキューの保護キュー・ユーザーとして構成し、キューに対する
ENQUEUE
権限とDEQUEUE
権限を指定のキュー・ユーザーに付与します。キュー・ユーザーを保護キュー・ユーザーとして構成するために、このプロシージャは、ユーザー名と同名のアドバンスト・キューイング・エージェントを作成します(エージェントが存在していない場合)。この名前のエージェントが存在し、キュー・ユーザーのみに関連付けられている場合は、そのエージェントが使用されます。
SET_UP_QUEUE
プロシージャは、次に、DBMS_AQADM
パッケージのENABLE_DB_ACCESS
プロシージャを実行して、エージェントとユーザーを指定します。
ノート:
-
キューに対するメッセージのエンキューおよびデキューを実行するには、
DBMS_STREAMS_MESSAGING
パッケージまたはDBMS_AQ
パッケージに対するEXECUTE
権限がキュー・ユーザーに必要です。この権限は、SET_UP_QUEUE
プロシージャでは付与されません。 -
SET_UP_QUEUE
で作成を試みたエージェントが存在し、そのエージェントがqueue_user
で指定されているユーザー以外のユーザーに関連付けられている場合は、エラーが発生します。この場合は、既存のエージェントを変更または削除してから、SET_UP_QUEUE
を再試行してください。
参照:
保護キュー・ユーザーの詳細は、『Oracle Streams概要および管理』を参照してください。
162.6.43 SPLIT_STREAMSプロシージャ
このプロシージャは、取得プロセスからの1つのストリームをその取得プロセスからの他のすべてのストリームから分割します。
このプロシージャの対象は、複数の接続先データベースに伝播された変更を取得プロセスが取得するOracle Streamsレプリケーション環境です。伝播の接続先の1つが取得された変更の受入れを停止した場合、変更は取得プロセス・キューに残ります。キューが大きくなってメッセージのハード・ディスクへの書込みが開始されると、Oracle Streams環境のパフォーマンスが低下する可能性があります。接続先はいくつかの理由で変更の受入れを停止する場合があります。たとえば、接続先データベースが停止する場合などです。
具体的には、このプロシージャは次の操作を実行します。
-
取得プロセスを実行しているデータベースで新しいキューを作成します。新しいキューは元のストリームで使用されているキューのクローンであるため、クローニングされたキューと呼ばれます。新しいキューはクローニングされた新しい取得プロセスによって使用され、クローニングされた新しい伝播のソース・キューとなります。
-
ステップ1で作成したソース・キューから既存の宛先キューにメッセージを伝播する新しい伝播を作成します。新しい伝播は元のストリームで使用されている伝播のクローンであるため、クローニングされた伝播と呼ばれます。クローニングされた伝播は、元の伝播と同じルール・セットを使用します。
-
取得プロセスを停止します。
-
元の伝播の確認済SCNを問い合せます。確認済SCNとは、伝播によって送信された変更を適用する適用プロセスによって最後に確認されたSCNです。
-
新しい取得プロセスを作成します。新しい取得プロセスは元のストリームで使用されている取得プロセスのクローンであるため、クローニングされた取得プロセスと呼ばれます。プロシージャによって、クローニングされた取得プロセスの開始SCNが、ステップ4で問い合せた確認済SCNの値に設定されます。クローニングされた取得プロセスは、元の取得プロセスと同じルール・セットを使用します。
-
元の伝播を削除します。
-
ステップ4で問い合せた確認済SCNに設定された開始SCNで元の取得プロセスを開始します。
-
auto_merge_threshold
パラメータが正数に設定されている場合、スケジュールに従って設定された間隔でMERGE_STREAMS_JOB
プロシージャを実行するOracle Schedulerジョブを作成します。2つのストリームが指定されたマージしきい値内にある場合、MERGE_STREAMS_JOB
プロシージャはMERGE_STREAMS
を実行して、ストリームを自動的にマージします。
SPLIT_STREAMS
プロシージャの実行が終了すると、クローニングされた取得プロセスは無効化されます。接続先データベースで問題が解決され、宛先キューで変更を受け入れることができる場合は、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを使用して、クローニングされた取得プロセスを開始する必要があります。
DBA_STREAMS_SPLIT_MERGE
ビューは、各クローン・コンポーネントの名前と、分割およびマージ操作に関する情報を示します。
ノート:
元の取得プロセスがダウンストリーム取得プロセスである場合は、クローニングされた取得プロセスを開始する前に、ソース・データベースからREDOログを読み取るようにクローニングされた取得プロセスを構成する必要があります。
参照:
-
SPLIT_STREAMS
プロシージャの使用方法は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構文
DBMS_STREAMS_ADM.SPLIT_STREAMS( propagation_name IN VARCHAR2, cloned_propagation_name IN VARCHAR2 DEFAULT NULL, cloned_queue_name IN VARCHAR2 DEFAULT NULL, cloned_capture_name IN VARCHAR2 DEFAULT NULL, perform_actions IN BOOLEAN DEFAULT TRUE, script_name IN VARCHAR2 DEFAULT NULL, script_directory_object IN VARCHAR2 DEFAULT NULL, auto_merge_threshold IN NUMBER DEFAULT NULL, schedule_name IN OUT VARCHAR2, merge_job_name IN OUT VARCHAR2);
パラメータ
表162-42 SPLIT_STREAMSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
宛先キューにメッセージを送信できない伝播の名前。指定する伝播は、他のストリームから分割されるストリームの伝播です。既存の伝播名を指定する必要があります。所有者を指定しないでください。 |
|
分割されるストリームに対して、このプロシージャで作成される新しい伝播の名前。 |
|
分割されるストリームに対して、このプロシージャで作成される新しいキューの名前。 |
|
分割されるストリームに対して、このプロシージャで作成される新しい取得プロセスの名前。 |
|
このプロシージャでスクリプトを生成し、そのスクリプトを編集して実行できるようにする場合は、
|
|
このパラメータが このパラメータが このパラメータが このパラメータが |
|
作成されるスクリプトが保存されるローカル・コンピュータ・システムのディレクトリのディレクトリ・オブジェクト。
このパラメータが ノート: ディレクトリ・オブジェクトにOracle Automatic Storage Management (ASM)ディスク・グループを指定することはできません。 |
|
正数を指定した場合、分割されたストリームは、Oracle Schedulerジョブによって、取得プロセスからの他のすべてのストリームに自動的にマージされて戻されます。このジョブによって、スケジュールに従って設定された間隔で
|
|
Oracle Schedulerスケジュール名で、
このプロシージャによってスケジュールが作成された場合、スケジュールはプロシージャが完了したときに開始されます。スケジュールを変更して、マージ・ジョブの実行頻度を制御できます。 既存のスケジュール名を指定すると、エラーが発生します。 |
|
Oracle Schedulerジョブ名で、
既存のジョブ名を指定すると、エラーが発生します。 |
参照:
Oracle Schedulerの詳細は、『Oracle Database管理者ガイド』を参照してください。