この章はXStream用OCIインタフェースの概要です。
Oracle Call Interface (OCI)にはXStream用のインタフェースが含まれています。この章はXStream用OCIインタフェースの概要です。
この章は、次の項目で構成されています。
関連項目:
XStream Outの構成の詳細は、Oracle Database XStreamガイドを参照してください
OCI XStream関数の詳細は、「OCI XStream関数」を参照してください
Oracle Database 11gリリース2以降、XStream OutおよびXStream Inと呼ばれるAPIを利用できるようになりました。
このテクノロジにより、Oracle DatabaseとOracle以外のデータベース、非RDBMS Oracle製品、ファイル・システム、サード・パーティのソフトウェア・アプリケーションなどとの間で高パフォーマンスで、ほぼリアルタイムの情報共有インフラストラクチャを実現できます。XStreamはOracle Streamsで使用されるインフラストラクチャ上に構築されます。
関連項目:
「OCI XStream関数」のOCI XStream関数
XStream Outは、リモート・クライアントのアウトバウンド・サーバーへの連結、および論理変更レコード(LCR)形式での行変更の抽出を可能にします。
XStream Outを使用するには、取得プロセスおよびアウトバウンド・サーバーを作成する必要があります。LOB、LONG
およびXMLType
など、Oracle Streamsでサポートされるすべてのデータ型がXStreamsでサポートされます。取得プロセスおよびアウトバウンド・サーバーは、同一のデータベース・インスタンス上にある必要はありません。取得プロセスおよびアウトバウンド・サーバーの開始後、行変更が取得され、アウトバウンド・サーバーに送信されます。外部クライアント・アプリケーションは、OCIを使用してこのアウトバウンド・サーバーに接続できます。接続の確立後は、アウトバウンド・サーバーからのLCRの待機中、クライアント・アプリケーションをループさせることができます。クライアント・アプリケーションでは、クライアント側のコールバックがLCRが受信されるたびに起動されるように登録できます。必要に応じていつでもクライアント・アプリケーションをアウトバウンド・サーバーから連結解除できます。再起動時には、アウトバウンド・サーバーはREDOストリームのどの位置でクライアント・アプリケーションへのLCRのストリームを開始するか認識しています。
関連項目:
XStream Outの概要は、Oracle Database XStreamガイドを参照してください
LCRの基本は、『Oracle Streams概要および管理』を参照してください
非OracleデータをOracle Databaseにレプリケートするには、XStream Inを使用します。
このテクノロジにより、リモート・クライアント・アプリケーションのインバウンド・サーバーへの連結、およびLCR形式での行およびDDL変更の送信が可能になります。
外部クライアント・アプリケーションは、OCIを使用してこのインバウンド・サーバーに接続されます。接続の確立後、クライアント・アプリケーションは、LCRをストリームすることによりインバウンド・サーバーの取得エージェントとして機能します。クライアント・アプリケーションは、データベース接続ごとに1つのインバウンド・サーバーにのみ連結でき、各インバウンド・サーバーには1つのクライアント・アプリケーションのみを連結できます。
関連項目:
Oracle Database XStreamガイドのXStream Inの概念
各LCRには位置属性があります。
LCRの位置により、トランザクション内のLCRのストリームにおける配置が識別されます。
関連項目:
Oracle Database XStreamガイドのLCRにおける位置順序
XStream Outでは、LCRの文字データがアウトバウンド・サーバー・データベースのキャラクタ・セットからクライアント・アプリケーションのキャラクタ・セットに暗黙的に変換されます。XStream Inでは、LCRの文字データがクライアント・アプリケーションのキャラクタ・セットからインバウンド・サーバー・データベースのキャラクタ・セットに暗黙的に変換されます。
パフォーマンス向上のために、次のタスクを実行します。
ソースから宛先へのLCRデータ・フローを分析します。
OCIクライアント・アプリケーションのクライアントのキャラクタ・セットを、文字変換が最小限となり、データ損失がなく、XStreamまたは宛先での暗黙的な変換を利用する形式に設定します。
XStream Outの場合は、一般的にクライアント・アプリケーションのキャラクタ・セットをアウトバウンド・サーバー・データベースのキャラクタ・セットに設定することがベスト・プラクティスです。
この章では、OCIのハンドルおよび記述子の属性について説明します。この属性はOCIAttrGet()
関数で読み取り、OCIAttrSet()
関数で変更することができます。
次のサーバー・ハンドル属性を使用できます。
READ/WRITE
XStream Outの場合、ACK間隔はアウトバウンド・サーバーがクライアント・アプリケーションから処理済最低位置を受信する最小間隔(秒)です。各ACK間隔後、アウトバウンド・サーバーですべての実行中のOCIXStreamOutLCRReceive()
またはOCIXStreamOutLCRCallbackReceive()
コールが終了されるため、クライアント・アプリケーションでキャッシュされた処理済最低位置をアウトバウンド・サーバーに送信できます。
XStream Inの場合、ACK間隔はインバウンド・サーバーがクライアント・アプリケーションに処理済最低位置を送信する最小間隔(秒)です。各ACK間隔後、インバウンド・サーバーでクライアント・アプリケーションに新しい処理済最低位置が送信されるように、すべての実行中のOCIXStreamInLCRSend()
またはOCIXStreamInLCRCallbackSend()
コールが終了されます。
OCI_ATTR_XSTREAM_ACK_INTERVAL
のデフォルト値は30秒です。この属性は、OCIXStreamOutAttach()
またはOCIXStreamInAttach()
のコール時にのみチェックされます。このため、APIを呼び出す前に設定する必要があります。設定しない場合は、デフォルト値が使用されます。
ub4 *
/ub4
READ/WRITE
アイドル・タイムアウトは、アウトバウンド・サーバーがOCIXStreamOutLCRReceive()
またはOCIXStreamOutLCRCallbackReceive()
コールを終了する前にLCRを待機する間アイドル状態となる秒数です。
OCI_ATTR_XSTREAM_IDLE_TIMEOUT
のデフォルト値は1秒です。この属性は、OCIXStreamOutAttach()
またはOCIXStreamInAttach()
のコール時にのみチェックされます。このため、APIを呼び出す前に設定する必要があります。設定しない場合は、デフォルト値が使用されます。
ub4 *
/ub4