次の各項では、Oracle Streamsを使用するためのデータベースまたは分散データベース環境の準備、およびOracle Streamsレプリケーションまたはメッセージ環境の構成について説明します。
Oracle Streams環境を管理するには、適切な権限を持つ新規ユーザーを作成するか、これらの権限を既存のユーザーに付与します。SYSまたはSYSTEMユーザーをOracle Streams管理者として使用しないでください。また、Oracle Streams管理者は、デフォルト表領域としてSYSTEM表領域を使用しないでください。
次の手順を実行して、Oracle Streamsを使用する環境内の各データベースでOracle Streams管理者を構成します。
SQL*Plusで、ユーザーの作成、権限の付与および表領域の作成を行うことができる管理ユーザーとして接続します。これ以降のすべての手順は、この管理ユーザーとして接続したままで実行します。
SQL*Plusでデータベースに接続する方法については、Oracle Database管理者ガイドを参照してください。
Oracle Streams管理者用の表領域を作成するか、既存の表領域を使用します。たとえば、次の文ではOracle Streams管理者用の新規表領域が作成されます。
CREATE TABLESPACE streams_tbs DATAFILE '/usr/oracle/dbs/streams_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
Oracle Streams管理者の役割を果たす新規ユーザーを作成するか、既存のユーザーを使用します。たとえば、新規ユーザーstrmadminを作成して、このユーザーがstreams_tbs表領域を使用するように指定するには、次の文を実行します。
CREATE USER strmadmin IDENTIFIED BY password
DEFAULT TABLESPACE streams_tbs
QUOTA UNLIMITED ON streams_tbs;
|
注意: 管理ユーザーの適切なパスワードを入力してください。 |
|
関連項目: パスワードの選択手順については、Oracle Databaseセキュリティ・ガイドを参照 |
Oracle Streams管理者にDBAロールを付与します。
GRANT DBA TO strmadmin;
|
注意: ユーザーが取得プロセス、同期取得および適用プロセスを作成または変更するには、DBAロールが必要です。これらのタスクを実行する必要がないユーザーの場合は、DBAロールをそのユーザーから取り消すことができます。 |
DBMS_STREAMS_AUTHパッケージのGRANT_ADMIN_PRIVILEGEプロシージャを実行します。
ユーザー作成サブプログラム内のパッケージのサブプログラムを実行する場合、ユーザーには、パッケージに対する明示的なEXECUTE権限が必要です。また、ユーザー作成サブプログラム内のビューを問い合せる場合は、そのデータ・ディクショナリ・ビューに対する明示的なSELECT権限が必要です。これらの権限は、ロールでは付与できません。これらの権限をOracle Streams管理者に付与するには、GRANT_ADMIN_PRIVILEGEプロシージャを実行するか、または直接付与します。
GRANT_ADMIN_PRIVILEGEプロシージャのパラメータ設定に応じて、Oracle Streams管理者として作業を行うために必要な権限が直接付与されるか、またはこれらの権限を付与するために編集および実行が可能なスクリプトが生成されます。
|
関連項目: このプロシージャの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照 |
GRANT_ADMIN_PRIVILEGEプロシージャを使用した権限の直接付与:
BEGIN
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'strmadmin',
grant_privileges => TRUE);
END;
/
GRANT_ADMIN_PRIVILEGEプロシージャを使用したスクリプトの生成:
SQL文CREATE DIRECTORYを使用して、スクリプトを生成して配置するディレクトリのディレクトリ・オブジェクトを作成します。ディレクトリ・オブジェクトは、ディレクトリの別名と類似しています。たとえば、コンピュータ・システム上の/usr/adminディレクトリのディレクトリ・オブジェクトadmin_dirを作成するには、次のプロシージャを実行します。
CREATE DIRECTORY admin_dir AS '/usr/admin';
GRANT_ADMIN_PRIVILEGEプロシージャを実行して、grant_strms_privs.sqlというスクリプトを生成し、このスクリプトをコンピュータ・システム上の/usr/adminディレクトリに配置します。
BEGIN
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'strmadmin',
grant_privileges => FALSE,
file_name => 'grant_strms_privs.sql',
directory_name => 'admin_dir');
END;
/
プロシージャによって権限が直接付与されないように、grant_privilegesパラメータがFALSEに設定されていることに注意してください。また、directory_nameパラメータに、手順aで作成したディレクトリ・オブジェクトが指定されていることにも注意してください。
必要に応じて、生成されたスクリプトを編集し、変更内容を保存します。
SQL*Plusで次のスクリプトを実行します。
SET ECHO ON SPOOL grant_strms_privs.out @/usr/admin/grant_strms_privs.sql SPOOL OFF
スプール・ファイルをチェックして、すべての権限が正常に実行されたことを確認します。エラーが発生した場合、スクリプトを編集してエラーを修正した後で、スクリプトを再実行します。
必要に応じて、次の権限を追加で付与します。
リモートのOracle Streams管理者がローカル・データベースで操作を実行する権限を付与します。これらの権限はDBMS_STREAMS_AUTHパッケージのGRANT_REMOTE_ADMIN_ACCESSプロシージャを使用して付与します。リモートのOracle Streams管理者がローカルのOracle Streams管理者に接続するデータベース・リンクを使用して管理操作を実行する場合は、この権限を付与します。具体的には、次のいずれかの状況に該当する場合に、この権限を付与します。
リモートのダウンストリーム・データベースで、ローカル・ソース・データベースで発生した変更を取得するダウンストリーム取得プロセスを構成する予定があり、このダウンストリーム取得プロセスでは、ソース・データベースで管理操作を実行するデータベース・リンクが使用される。
ローカル・データベースで適用プロセスを構成する予定があり、リモートのOracle Streams管理者を使用して、ローカル・データベースでレプリケートされているデータベース・オブジェクトのインスタンス化SCNの値を設定する。
適用プロセスの適用ユーザーが指定されていない場合は、別のユーザーが所有する適用オブジェクトに対してDML変更とDDL変更を実行するために必要な権限をOracle Streams管理者に付与します。適用ユーザーが指定されている場合は、この適用ユーザーにこれらの権限が必要です。
適用プロセスの適用ユーザーが指定されていない場合は、Oracle Streams適用プロセスによって実行される、別のユーザーが所有するPL/SQLプロシージャのEXECUTE権限をOracle Streams管理者に付与します。これらのプロシージャは、適用ハンドラまたはエラー・ハンドラで使用できます。適用ユーザーが指定されている場合は、この適用ユーザーにこれらの権限が必要です。
Oracle Streamsの取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアントで使用されるルールのカスタム・ルールベースの変換で指定されている、別のユーザーが所有するPL/SQLファンクションのEXECUTE権限をOracle Streams管理者に付与します。取得プロセスまたは同期取得の取得ユーザーが指定されている場合、その取得ユーザーにはこれらの権限が必要です。適用プロセスの適用ユーザーが指定されている場合は、この適用ユーザーにこれらの権限が必要です。
必要に応じて、データベース・オブジェクトを変更するための権限をOracle Streams管理者に付与します。たとえば、Oracle Streams管理者が別のスキーマ内の表のサプリメンタル・ログ・グループを作成する必要がある場合は、表を変更するために必要な権限を持っている必要があります。
Oracle Streams管理者がOracle Streams取得プロセス、同期取得、伝播、適用プロセスまたはメッセージ・クライアントで使用されるキューを所有しておらず、キューの作成時にそのキューのキュー・ユーザーとして指定されていない場合、Oracle Streams管理者がキューのメッセージをエンキューまたはデキューできるようにするには、Oracle Streams管理者をキューの保護キュー・ユーザーとして構成する必要があります。また、Oracle Streams管理者には、キューのENQUEUE権限またはDEQUEUE権限、あるいはその両方が必要になる場合があります。手順については、「保護キューでのユーザー操作の有効化」を参照してください。
Oracle Streams管理者がアクセスする必要があるすべてのオブジェクト型のEXECUTE権限をOracle Streams管理者に付与します。
Oracle Database Vaultがインストールされている場合は、次の操作を実行するユーザーにBECOMEUSERシステム権限を付与する必要があります。
取得プロセスの作成
適用プロセスの作成
取得ユーザーの変更
適用ユーザーの変更
Oracle Database Vaultがインストールされていない場合は、これらの操作を実行するユーザーにBECOME USERシステム権限を付与する必要はありません。BECOME USERシステム権限は、これらの操作のいずれかを実行した後、必要に応じて、ユーザーから取り消すことができます。
前述のすべての手順を、Oracle Streamsを使用する環境内のデータベースごとに繰り返します。
一部の初期化パラメータは、Oracle Streams環境の操作、信頼性およびパフォーマンスにとって重要です。これらのパラメータをOracle Streams環境に合わせて適切に設定します。
表9-1に、Oracle Streamsに関連する初期化パラメータを示します。この表では、各パラメータが変更可能であるかどうかを示しています。変更可能な初期化パラメータは、インスタンスの実行中にALTER SYSTEM文を使用して変更できます。一部の変更可能なパラメータは、ALTER SESSION文を使用し、単一のセッションに対して変更することもできます。
表9-1 Oracle Streamsに関連する初期化パラメータ
| パラメータ | 値 | 説明 |
|---|---|---|
|
デフォルト: 範囲: 変更: 不可能 |
このパラメータは、Oracleサーバーが互換性を維持する必要のあるリリースを指定します。互換レベルの異なるOracleサーバーを相互運用できます。 Oracle Database 11gリリース1で導入されたOracle Streamsの新機能を使用するには、このパラメータを |
|
|
デフォルト: 範囲: 変更: 可能 |
データベース・リンクが宛先データベースと同じ名前を使用する必要があるかどうかを指定します。 Oracle Streamsを使用してデータベース間で情報を共有するには、Oracle Streams環境の各データベースでこのパラメータを |
|
|
デフォルト: 範囲: 次の値
変更: 可能 |
REDOログのリモート宛先への送信とリモートREDOログの受信を有効または無効にし、Data Guard構成の各データベースに一意のデータベース名( ダウンストリーム取得を使用する場合や、REDO転送サービスを使用してREDOデータをダウンストリーム・データベースにコピーする場合は、 |
|
|
デフォルト: なし 範囲: なし 変更: 可能 |
最大10のログ・アーカイブの宛先を定義します( ダウンストリーム取得を使用する場合や、REDO転送サービスを使用してREDOデータをダウンストリーム・データベースへコピーする場合は、ダウンストリーム取得プロセスを実行しているサイトに、ログ・アーカイブの宛先が少なくとも1つ必要です。 |
|
|
デフォルト: 範囲: 次のいずれか
変更: 可能 |
対応する宛先の使用状態を指定します。パラメータ接尾辞( ダウンストリーム取得を使用する場合や、REDO転送サービスを使用してREDOデータをダウンストリーム・データベースにコピーする場合は、ダウンストリーム・データベースの |
|
|
デフォルト: 範囲: オペレーティング・システム依存 変更: 不可能 |
REDOログ・ファイルにREDOエントリをバッファする際に使用するメモリー容量(バイト単位)を指定します。REDOログ・エントリには、データベース・ブロック・バッファへの変更レコードが格納されます。 データベース上で取得プロセスを実行する場合は、取得プロセスがハード・ディスクではなくREDOログ・バッファからREDOログ・レコードを読み取るように、このパラメータを適切に設定します。 |
|
|
デフォルト: 範囲: 変更: 不可能 |
Oracle Databaseのシステム全体での最大使用可能メモリーを指定します。
関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト: 範囲: 変更: 可能 |
Oracle Databaseのシステム全体での使用可能メモリーを指定します。
関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト: 範囲: 変更: 不可能 |
1セッションでのリモート・データベースへの同時オープン接続の最大数を指定します。これらの接続には、データベース・リンク、外部プロシージャおよび外部カートリッジが含まれ、それぞれが別個のプロセスを使用します。 Oracle Streams環境では、このパラメータがデフォルト値の |
|
|
デフォルト: 範囲: 変更: 不可能 |
Oracleに同時に接続できるオペレーティング・システムのユーザー・プロセスの最大数を指定します。 このパラメータの値が、ロック、スレーブ・プロセスなど、すべてのバックグラウンド・プロセスを許可することを確認します。Oracle Streamsでは、取得プロセスと適用プロセスはバックグラウンド・プロセスを使用し、伝播ジョブはOracle Schedulerスレーブ・プロセスを使用します。 |
|
|
デフォルト: 次から導出
範囲: 変更: 不可能 |
システム内に作成できるセッションの最大数を指定します。 1つのデータベース上で1つ以上の取得プロセスまたは適用プロセスを実行するには、このパラメータの値を増やすことが必要になる場合があります。データベースの各バックグラウンド・プロセスでは1つのセッションが必要です。 |
|
|
デフォルト: 起動時のSGAの初期サイズ 範囲: 変更: 不可能 |
データベース・インスタンスの存続期間中におけるシステム・グローバル領域(SGA)の最大サイズを指定します。
関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト: 範囲: 変更: 可能 |
すべてのシステム・グローバル領域(SGA)コンポーネントの合計サイズを指定します。
このパラメータを0以外の値に設定すると、Oracle Streamsプールのサイズが自動共有メモリー管理によって管理されます。 関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト:
範囲: グラニュル・サイズからオペレーティング・システム依存の上限まで 変更: 可能 |
共有プールのサイズ(バイト単位)を指定します。共有プールには、共有カーソル、ストアド・プロシージャ、制御構造およびその他の構造が格納されます。
関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト: 範囲: 変更: 可能 |
Oracle Streamsプールのサイズ(バイト単位)を指定します。Oracle Streamsプールにはバッファ・キュー・メッセージが格納されます。また、Oracle Streamsプールは、パラレル取得およびパラレル適用で内部通信のために使用されます。
このパラメータは変更可能です。インスタンスの実行中にこのパラメータを0に減らすと、Oracle Streamsのプロセスとジョブは実行されません。 次のようにOracle Streamsの要件を満たす十分なメモリーを設定します。
たとえば、取得プロセスの並列性が3に設定されている場合、取得プロセスのために少なくとも30MBが必要です。データベースに2つのバッファ・キューがある場合、バッファ・キューのために少なくとも20MBが必要です。適用プロセスの並列性が5に設定されている場合、適用プロセスのために少なくとも5MBが必要です。
関連項目: 「Oracle Streamsプールの構成」 |
|
|
デフォルト:
範囲: 変更: 可能 |
時間に関連する統計を収集するかどうかを指定します。 Oracle Streamsに関連する動的パフォーマンス・ビューで経過時間の統計を収集するには、このパラメータを |
|
|
デフォルト: 範囲: 変更: 可能 |
データベースにコミット済UNDO情報を保持する期間を秒単位で指定します。 1つ以上の取得プロセスを実行するデータベースでは、このパラメータを設定して、適切なUNDO保持期間を指定するようにしてください。 1つ以上の取得プロセスを実行しているが、適切な設定が不明な場合は、このパラメータを少なくとも |
|
関連項目:
|
Oracle Streamsプールは、Oracle Streamsで使用されるシステム・グローバル領域(SGA)のメモリーの一部です。Oracle Streamsプールは、バッファ・キューのメッセージをメモリー内に格納し、取得プロセスおよび適用プロセスにメモリーを提供します。Oracle Streamsプールは、取得プロセスで取得されたLCRを常に格納し、アプリケーションによってバッファ・キューにエンキューされたLCRとメッセージを格納します。
Oracle Streamsプールは、データベース内で次のいずれかのアクションが発生した場合に初めて初期化されます。
メッセージはバッファ・キューにエンキューされます。データ・ポンプのエクスポートおよびインポート操作ではバッファ・キューが使用されるため、Oracle Streamsプールが初期化されます。
取得プロセスの起動時。
伝播の作成時。
適用プロセスの起動時。
Oracle Streamsプールのサイズは次のいずれかの方法で決定されます。
|
注意: Oracle Streamsプールを初期化できない場合はORA-00832エラーが返されます。これが発生した場合は、最初に、Oracle StreamsプールのSGAに十分な領域があることを確認してください。必要であれば、SGAサイズを増やすようにSGA_MAX_SIZE初期化パラメータをリセットします。次に、MEMORY_TARGET、MEMORY_MAX_TARGET、SGA_TARGETおよびSTREAMS_POOL_SIZE初期化パラメータの1つ以上を設定します。 |
MEMORY_TARGETまたはMEMORY_MAX_TARGET初期化パラメータが0以外の値に設定されると、自動メモリー管理の機能によってOracle Streamsプールのサイズが管理されます。自動メモリー管理を使用していても、次の初期化パラメータを設定できます。
SGA_TARGET初期化パラメータが0以外の値に設定されている場合、自動メモリー管理はこの値をシステム・グローバル領域(SGA)の最小値として使用します。
STREAMS_POOL_SIZE初期化パラメータが0以外の値に設定されている場合、自動メモリー管理はこの値をOracle Streamsプールの最小値として使用します。
自動メモリー管理によってOracle Streamsプールに現在割り当てられているメモリーを表示するには、V$MEMORY_DYNAMIC_COMPONENTSビューを問い合せます。
|
注意: 現在、MEMORY_TARGETおよびMEMORY_MAX_TARGET初期化パラメータは一部のプラットフォームではサポートされていません。 |
|
関連項目:
|
次の条件が満たされる場合、自動共有メモリー管理機能によってOracle Streamsプールのサイズが管理されます。
MEMORY_TARGETおよびMEMORY_MAX_TARGET初期化パラメータが両方とも0に設定されている場合。
SGA_TARGET初期化パラメータが0以外の値に設定されている場合。
自動共有メモリー管理を使用しているときに、STREAMS_POOL_SIZE初期化パラメータが0以外の値に設定されていると、自動共有メモリー管理はその値をOracle Streamsプールの最小値として使用します。Oracle Streamsプールで正常に機能する最小容量のメモリーが環境に必要な場合は、ユーザーが最小サイズを設定できます。自動共有メモリー管理によってOracle Streamsプールに現在割り当てられているメモリーを表示するには、V$SGA_DYNAMIC_COMPONENTSビューを問い合せます。
|
関連項目:
|
次の条件が満たされる場合、Oracle Streamsプール・サイズはSTREAMS_POOL_SIZEパラメータによって指定される値(バイト単位)になります。
MEMORY_TARGET、MEMORY_MAX_TARGETおよびSGA_TARGET初期化パラメータがすべて0に設定されている場合。
STREAMS_POOL_SIZE初期化パラメータが0以外の値に設定されている場合。
Oracle Streamsプール・サイズを手動で設定する予定がある場合は、V$STREAMS_POOL_ADVICE動的パフォーマンス・ビューを使用してSTREAMS_POOL_SIZE初期化パラメータの適切な設定を判別できます。
MEMORY_TARGET、MEMORY_MAX_TARGET、SGA_TARGETおよびSTREAMS_POOL_SIZEパラメータがすべて0に設定されている場合、Oracle Streamsプール・サイズはデフォルト設定になります。Oracle Streamsプール・サイズがデフォルトに設定されていると、データベースでOracle Streamsを最初に使用したときに、共有プールの10%に相当する容量がバッファ・キャッシュからOracle Streamsプールに転送されます。バッファ・キャッシュはDB_CACHE_SIZE初期化パラメータ、共有プール・サイズはSHARED_POOL_SIZE初期化パラメータによって設定されます。
たとえば、Oracle Streamsが最初に使用される前に、データベースが次のように構成されているとします。
DB_CACHE_SIZE: 100MB
SHARED_POOL_SIZE: 80MB
MEMORY_TARGET、MEMORY_MAX_TARGET、SGA_TARGET、STREAMS_POOL_SIZE: 0
このように構成されている場合、Oracle Streamsが最初に使用された後に割り当てられるメモリー容量は次のようになります。
バッファ・キャッシュ: 92MB
共有プール: 80MB
Oracle Streamsプール: 8MB
Oracle Streamsを使用してデータベース間で情報を共有する場合は、これらのデータベース間のネットワーク接続性とデータベース・リンクを構成します。
Oracle Databaseの場合は、データベースが相互に通信できるようにネットワークとOracle Netを構成します。
Oracle以外のデータベースの場合は、Oracle DatabaseとOracle以外のデータベース間での通信用にOracle Database Gatewayを構成します。
あるデータベースのソース・キューから別のデータベースの宛先キューにメッセージを伝播する予定の場合は、ソース・キューを含むデータベースと宛先キューを含むデータベースの間にプライベート・データベース・リンクを作成します。各データベース・リンクでは、データベース間でユーザーがメッセージを伝播できるようにCONNECT TO句を使用する必要があります。
たとえば、Oracle Streams管理者strmadminとして接続するデータベースdbs2.example.comへのデータベース・リンクを作成するには、次の文を実行します。
CREATE DATABASE LINK dbs2.example.com CONNECT TO strmadmin
IDENTIFIED BY password
USING 'dbs2.example.com';
|
関連項目:
|
Oracle Enterprise Managerで使用できるOracle Streamsの構成オプションは次のとおりです。
Oracle Streamsのグローバル、スキーマ、表およびサブセット・レプリケーション・ウィザードでは、ソース・データベース全体、ソース・データベースの特定のスキーマ、ソース・データベースの特定の表またはソース・データベースの表のサブセットに変更をレプリケートするレプリケーション環境を構成できます。取得プロセスは、ソース・データベースのレプリケートされたデータベース・オブジェクトの変更を取得します。
Oracle Streamsの表領域レプリケーション・ウィザードでは、1つ以上の自己完結型の表領域に変更をレプリケートするレプリケーション環境を構成できます。取得プロセスは、各ソース・データベースのレプリケートされたデータベース・オブジェクトの変更を取得します。このウィザードでは単方向または双方向レプリケーション環境を構成できます。
「メッセージ機能」オプションからメッセージ機能サブページが開きます。このサブページを使用して、メッセージ環境のキュー、キュー表および伝播を構成できます。ユーザーおよびアプリケーションは、メッセージをエンキューしたり、サブスクライバ・キューにメッセージを伝播したり、メッセージのコンシュームの準備ができたことをユーザー・アプリケーションに通知したり、宛先でメッセージをデキューしたりできます。
これらのオプションでは要件を満たせない場合は、SQL*Plusやオラクル社が提供するパッケージを使用してOracle Streams環境を構成できます。DBMS_STREAMS_ADMパッケージには、Oracle Streamsレプリケーション環境を1つのプロシージャ・コールで構成するプロシージャが含まれています。これらの構成プロシージャは、要件を満たすレプリケーション環境を構成するための最も簡単な方法です。
現在、Enterprise Managerのこれらのプロシージャおよび構成ウィザードでは、取得プロセスを使用するOracle Streamsレプリケーション環境のみを構成します。または、取得プロセスではなく同期取得を使用する場合もあります。比較的少数の表の変更を取得する場合は、同期取得が適している場合があります。
Oracle Streamsの構成方法およびOracle Streams環境の様々な構成例については、次のマニュアルを参照してください。
Oracle Streamsのメッセージ環境およびレプリケーション環境の構成例は、Oracle Database 2日でデータ・レプリケーションおよび統合ガイドを参照
Oracle Streamsレプリケーションの詳細およびOracle Streamsレプリケーション環境の構成例は、Oracle Streamsレプリケーション管理者ガイドを参照
Oracle Streamsのメッセージ環境の構成の詳細は、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドを参照
プロシージャの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照
|
注意: 取得プロセスによって取得されるREDOデータを生成するソース・データベースは、ARCHIVELOGモードで実行する必要があります。 |