ここでは、Oracle Database 11gのOracle Streamsの新機能を説明し、それらの詳細の参照先を示します。
この項の内容は次のとおりです。
Oracle Database 11g リリース2(11.2)のOracle Streamsには、次の新機能があります。
XStreamには、Oracle Database間およびOracle Databaseと他のシステム間での情報共有を可能にするアプリケーション・プログラミング・インタフェース(API)が備えられています。他のシステムには、Oracle Times TenなどのOracleシステム、Oracle以外のデータベース、RDBMS以外のOracle製品、ファイル・システム、サード・パーティ・ソフトウェア・アプリケーションなどが含まれます。
関連項目: 『Oracle Database XStreamガイド』 |
文DMLハンドラと呼ばれる新しいタイプの適用ハンドラでは、SQL文のコレクションを使用し、カスタマイズした方法で行LCRを処理できます。PL/SQLの処理を必要としないので、文DMLハンドラは通常、プロシージャDMLハンドラよりもよいパフォーマンスで動作します。
DBMS_STREAMS_ADM
パッケージの新しいMAINTAIN_CHANGE_TABLE
プロシージャを使用すると、表に対して行われた変更を記録するOracle Streams環境を簡単に構成できます。
SQL生成とは、行論理変更レコード(行LCR)にカプセル化された変更を実行する際に必要となるSQL文を生成する機能です。
関連項目:
|
以前のリリースのOracle Databaseでは、Oracle Streamsは、圧縮表に対する変更の取得をサポートしていませんでした。Oracle Database 11g リリース2(11.2)以上のOracle Streamsの取得プロセスおよび同期取得は、基本表圧縮またはOLTP表圧縮のいずれかにより圧縮された表に対する変更を取得できます。また、適用プロセスでは、圧縮表に変更を適用できます。
注意: 取得プロセスが圧縮表に対する変更を取得できるのは、ソース・データベースで互換性レベルが11.2.0以上に設定されている場合のみです。ダウンストリーム取得構成では、取得プロセスを実行しているデータベースでも互換性レベルが11.2.0以上に設定されている必要があります。同期取得で圧縮表に対する変更を取得できるのは、データベースで互換性レベルが11.2.0以上に設定されている場合のみです。 |
関連項目:
|
以前のリリースのOracle Databaseでは、Oracle Streamsは、SecureFiles LOBをサポートしていませんでした。Oracle Database 11gリリース2 (11.2)以上のOracle Streamsの取得プロセスでは、SecureFiles CLOB
、NCLOB
およびBLOB
列に対して行われた変更を取得でき、Oracle Streamsの適用プロセスでは、SecureFiles CLOB
、NCLOB
およびBLOB
列に変更を適用できます。
列を保持する宣言ルールベースの変換では、指定したルールを満たす行論理変更レコード(LCR)に列のリストが保持されます。変換によって、リストにない列が行LCRから削除されます。列を保持する宣言ルールベースの変換を指定するには、DBMS_STREAMS_ADM
パッケージのKEEP_COLUMNS
プロシージャを使用します。
関連項目: 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 |
split_threshold
およびmerge_theshold
という2つの新しい取得プロセス・パラメータを使用すると、自動分割とマージが可能になります。これらのパラメータが自動分割とマージを指定するように設定されていると、Oracle Schedulerジョブにより取得プロセスから送られるストリームが監視されます。Oracle Schedulerジョブにより、ストリームに問題があることがわかった場合、ジョブは新しいOracle Schedulerジョブを発行して、取得プロセスから送られるその他のストリームから、問題のストリームを切り離します。その他のOracle Schedulerジョブはストリームの監視を続行し、問題が修正されると、Oracle Schedulerジョブがそのストリームをその他のストリームにマージします。
関連項目:
|
適用プロセスは、特定のトランザクションについて、トランザクションのメッセージがtxn_age_spill_threshold
パラメータで指定した秒数を超えてメモリー内に存在すると、メッセージをメモリーからハード・ディスクにオーバーフローさせます。
関連項目: 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 |
Oracle Database 11g リリース1(11.1)のOracle Streamsには、次の新機能があります。
Oracle Streamsのトポロジでは、メッセージの個々のストリームと、各ストリームで構成されたOracle Streamsコンポーネントが識別されます。通常、Oracle Streams環境には複数のデータベースがあり、Oracle Streamsのトポロジによって、Oracle Streams環境全体の包括的なビューが提供されます。
Oracle Streamsパフォーマンス・アドバイザによって、Oracle Streamsのトポロジのパフォーマンス測定(スループット測定、待機時間測定など)が提供されます。また、Oracle Streamsパフォーマンス・アドバイザでは、Oracle Streamsのトポロジにおけるボトルネックが特定されるため、それらのボトルネックを修正できます。さらに、Oracle Streamsのトポロジ内のOracle Streamsコンポーネントが調査され、それらのパフォーマンスを向上させるための推奨方法が示されます。
DBMS_CAPTURE_ADM.SET_PARAMETER
プロシージャのパラメータの値にNULL
を指定すると、取得プロセス・パラメータにそのデフォルト値を設定できます。同様に、DBMS_APPLY_ADM.SET_PARAMETER
プロシージャのパラメータの値にNULL
を指定すると、適用プロセス・パラメータ値にそのデフォルト値を設定できます。
関連項目: 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 |
以前のリリースのOracle Databaseでは、Oracle Streamsは、フラッシュバック・データ・アーカイブ内の表に対する変更のレプリケーションをサポートしていませんでした。Oracle Database 11g リリース1(11.1)以上では、Oracle Streamsは、フラッシュバック・データ・アーカイブ内の表をサポートします。
以前のリリースのOracle Databaseでは、Oracle Streamsは、仮想列を持つ表に対する変更のレプリケーションをサポートしていませんでした。Oracle Database 11g リリース1(11.1)以上では、Oracle Streamsは、仮想列を持つ表をサポートします。
新しい取得プロセス・パラメータskip_autofiltered_table_ddl
を使用すると、データ操作言語(DML)の変更が自動的にフィルタ処理されるデータベース・オブジェクトに対するデータ定義言語(DDL)の変更を取得できます。
関連項目:
|
新しい適用プロセス・パラメータrtrim_on_implicit_conversion
は、データ型の自動変換時に適用プロセスがキャラクタ・データをトリミングするかどうかを決定します。
関連項目:
|
XMLType
はOracleが提供する型であり、データベースにXMLデータを格納したり、データベース内のXMLデータを問い合せるために使用できます。Oracle Streamsでは、XMLType
データへの変更の取得、伝播および適用が可能です。
取得プロセスでは、CLOB
列として格納されているXMLType
列に対する変更を取得できますが、オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType
列に対する変更は取得できません。適用プロセスでは、CLOB
列、オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType
列に対して変更を適用できます。
Oracle Streamsは、透過的データ暗号化を使用して暗号化された列への変更の取得、伝播および適用をサポートします。また、列レベルで暗号化された列や、表領域の暗号化を介して暗号化された列をサポートします。表領域の暗号化を使用すると、表領域全体を暗号化できます。暗号化された表領域で作成されたすべてのオブジェクトは、その表領域内のデータベース・オブジェクト内のすべての列も含め、自動的に暗号化されます。列が暗号化されると、その暗号化が列の暗号化によるものか、表領域の暗号化によるものかに関係なく、Oracle Streamsコンポーネントでは同じ方法で列データが処理されます。
Streamsレプリケーション構成から使用できないレプリカを簡単に分割できます。ストリームを分割すると、再び使用可能になったレプリカを最新の状態にするのに必要な時間を短縮できます。最新の状態になったレプリカは、元の構成に再びマージできます。この機能では、DBMS_STREAMS_ADM
パッケージ内の3つの新しいプロシージャ(SPLIT_STREAMS
、MERGE_STREAMS_JOB
およびMERGE_STREAMS
)が使用されます。
関連項目: 『Oracle Streamsレプリケーション管理者ガイド』 |
DBMS_STREAMS_ADM
パッケージ内の新しいSET_MESSAGE_TRACKING
プロシージャを使用すると、データベース・セッションによって生成された論理変更レコード(LCR)に追跡ラベルを指定できます。新しいV$STREAMS_MESSAGE_TRACKING
ビューを問い合せると、ストリームを介してLCRを追跡し、それらが各Oracle Streamsクライアントでどのように処理されたかを確認できます。
LCRの追跡は、1つ以上の適用プロセスでLCRが期待どおりに適用されない場合に役立ちます。この場合、LCRの追跡を使用することで、LCRが停止しているストリーム内の場所を特定し、その場所での問題に対処することができます。
また、新しいmessage_tracking_frequency
取得プロセス・パラメータを使用すると、LCRを自動的に追跡できます。
関連項目:
|
Oracleが提供するDBMS_COMPARISON
と呼ばれる新しいパッケージを使用すると、2つの異なるデータベースで、表などの共有データベース・オブジェクト内の行を比較できます。データベース・オブジェクトに相違点が見つかると、このパッケージによってデータベース・オブジェクトが収束され、一貫性が確保されます。
関連項目:
|
Oracle Streamsクライアントが無効になったり、Oracle Streamsに関連するユーザー定義のしきい値を超えると、Enterprise Managerによって自動的にアラートが通知されます。
以前のリリースでは、Oracle StreamsはDBMS_JOB
パッケージで作成されたジョブを使用して、伝播、イベント通知などのジョブを実行し、JOB_QUEUE_PROCESSES
初期化パラメータが、作成されるスレーブ・プロセスの数を制御していました。
Oracle Database 11g リリース1(11.1)以上のOracle Streamsでは、Oracle Schedulerを使用してこれらのジョブを実行します。Oracle Schedulerは、コンピュータ・システムの負荷に基づいて、これらのジョブのスレーブ・プロセスの数を自動的に調整します。JOB_QUEUE_PROCESSES
初期化パラメータは、スレーブ・プロセスの最大数を指定するためだけに使用されます。したがって、作成可能なスレーブの数を制限する場合を除き、JOB_QUEUE_PROCESSES
初期化パラメータを設定する必要はありません。
今回のリリースでは、通知機能について次のような改善が行われました。
時間ごとの通知の分類
大量の通知の同時送信を可能にする拡張
登録統計を使用した通知の診断機能の向上
関連項目: 『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』 |
Oracle Database 11g リリース1(11.1)では、次の適用エラー・メッセージが新しく追加されました。
更新または削除する行が対象の表に存在しない場合、ORA-26787エラーが発生します。
対象の表には行が存在するが、一部の列の値が、行の論理変更レコード(行LCR)の値と一致していない場合、ORA-26786エラーが発生します。
以前のリリースでは、このような場合にORA-01403エラーが戻されていました。これらの新しいエラー・メッセージによって、DMLハンドラおよびエラー・ハンドラでの適用エラーの処理が簡単になりました。既存のプロシージャ・ハンドラおよびエラー・ハンドラが存在する場合は、現行のリリースに対応するように修正する必要がある場合があります。