161 DBMS_STREAMS

DBMS_STREAMSパッケージ(Oracle Streamsパッケージのセットの1つ)は、ANYDATAオブジェクトを論理変更レコード(LCR)に変換し、Oracle Streams属性およびOracle Streamsクライアントに関する情報を戻し、セッションで生成されたREDOエントリにバイナリ・タグで注釈を付けるためのサブプログラムを提供します。

このタグは、REDOエントリまたはLCRのバイナリ・タグに対する仕様を含んだルールを持つ、取得プロセス、伝播または適用プロセスの動作に影響を与えます。 

この章のトピックは、次のとおりです:

161.1 DBMS_STREAMSの概要

このパッケージは、ANYDATAオブジェクトを論理変更レコード(LCR)に変換し、Oracle Streams属性およびOracle Streamsクライアントに関する情報を戻し、セッションで生成されたREDOエントリにバイナリ・タグで注釈を付けるためのサブプログラムを提供します。

このタグは、REDOエントリまたはLCRのバイナリ・タグに対する仕様を含んだルールを持つ、取得プロセス、伝播または適用プロセスの動作に影響を与えます。 

参照:

このパッケージおよびOracle Streamsの詳細は、『Oracle Streams概要および管理』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

161.2 DBMS_STREAMSのセキュリティ・モデル

PUBLICには、このパッケージのEXECUTE権限が付与されます。

参照:

ユーザー・グループPUBLICの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

161.3 DBMS_STREAMSサブプログラムの要約

この表は、DBMS_STREAMSサブプログラムを示し、簡単に説明しています。

表161-1 DBMS_STREAMSパッケージのサブプログラム

サブプログラム 説明

COMPATIBLE_12_2ファンクション

DBMS_STREAMS.COMPATIBLE_12_2定数を戻します。

COMPATIBLE_12_1ファンクション

DBMS_STREAMS.COMPATIBLE_12_1定数を戻します。

COMPATIBLE_11_2ファンクション

DBMS_STREAMS.COMPATIBLE_11_2定数を戻します。

COMPATIBLE_11_1ファンクション

DBMS_STREAMS.COMPATIBLE_11_1定数を戻します。

COMPATIBLE_10_2ファンクション

DBMS_STREAMS.COMPATIBLE_10_2定数を戻します。

COMPATIBLE_10_1ファンクション

DBMS_STREAMS.COMPATIBLE_10_1定数を戻します。

COMPATIBLE_9_2ファンクション

DBMS_STREAMS.COMPATIBLE_9_2定数を戻します。

CONVERT_ANYDATA_TO_LCR_DDLファンクション

ANYDATAオブジェクトをSYS.LCR$_DDL_RECORDオブジェクトに変換します。

CONVERT_ANYDATA_TO_LCR_ROWファンクション

ANYDATAオブジェクトをSYS.LCR$_ROW_RECORDオブジェクトに変換します。

CONVERT_LCR_TO_XMLファンクション

ANYDATAオブジェクト内でカプセル化された論理変更レコード(LCR)を、LCR用のXMLスキーマに準拠するXMLオブジェクトに変換します。

CONVERT_XML_TO_LCRファンクション

論理変更レコード(LCR)用のXMLスキーマに準拠するXMLオブジェクトを、ANYDATAオブジェクト内でカプセル化されたLCRに変換します。

GET_INFORMATIONファンクション

様々なOracle Streams属性に関する情報を戻します。

GET_STREAMS_NAMEファンクション

実行者の名前を戻します。

GET_STREAMS_TYPEファンクション

実行者のタイプを戻します。

GET_TAGファンクション

現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

MAX_COMPATIBLEファンクション

Oracle Databaseの現行リリースに対して可能な最大互換性定数よりも大きい整数を戻します。

SET_TAGプロシージャ

現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。

注意:

このパッケージのサブプログラムはコミットしません。

161.3.1 COMPATIBLE_12_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_12_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_12_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの12.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.2 COMPATIBLE_12_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_12_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_12_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの12.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.3 COMPATIBLE_11_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_11_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_11_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの11.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.4 COMPATIBLE_11_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_11_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_11_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの11.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.5 COMPATIBLE_10_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_10_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_10_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの10.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.6 COMPATIBLE_10_1ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_10_1定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_10_1
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの10.1.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.7 COMPATIBLE_9_2ファンクション

このファンクションは、DBMS_STREAMS.COMPATIBLE_9_2定数を戻します。

構文

DBMS_STREAMS.COMPATIBLE_9_2
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

このファンクションによって戻される定数値は、データベースの9.2.0の互換性に対応します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

参照:

161.3.8 CONVERT_ANYDATA_TO_LCR_DDLファンクション

このファンクションは、ANYDATAオブジェクトをSYS.LCR$_DDL_RECORDオブジェクトに変換します。

構文

DBMS_STREAMS.CONVERT_ANYDATA_TO_LCR_DDL(
   source  IN  ANYDATA) 
RETURN SYS.LCR$_DDL_RECORD;

パラメータ

表161-2 CONVERT_ANYDATA_TO_LCR_DDLファンクションのパラメータ

パラメータ 説明

source

変換するANYDATAオブジェクト。このオブジェクトがDDL論理変更レコード(DDL LCR)でない場合は、例外が発生します。

使用上の注意

DBMS_TRANSFORMパッケージのCREATE_TRANSFORMATIONプロシージャで作成される変換で、このファンクションを使用することもできます。ANYDATAキューからSYS.LCR$_DDL_RECORDタイプのキューにDDLのLCRを伝播するサブスクライバを追加するときに作成する変換を使用してください。

161.3.9 CONVERT_ANYDATA_TO_LCR_ROWファンクション

このファンクションは、ANYDATAオブジェクトをSYS.LCR$_ROW_RECORDオブジェクトに変換します。

構文

DBMS_STREAMS.CONVERT_ANYDATA_TO_LCR_ROW(
   source  IN  ANYDATA) 
RETURN SYS.LCR$_ROW_RECORD;

パラメータ

表161-3 CONVERT_ANYDATA_TO_LCR_ROWファンクションのパラメータ

パラメータ 説明

source

変換するANYDATAオブジェクト。このオブジェクトが行論理変更レコード(行LCR)でない場合は、例外が発生します。

使用上の注意

DBMS_TRANSFORMパッケージのCREATE_TRANSFORMATIONプロシージャで作成される変換で、このファンクションを使用することもできます。ANYDATAキューからSYS.LCR$_ROW_RECORDタイプのキューに行LCRを伝播するサブスクライバを追加するときに作成する変換を使用してください。

161.3.10 CONVERT_LCR_TO_XMLファンクション

このファンクションは、ANYDATAオブジェクト内でカプセル化された論理変更レコード(LCR)を、LCR用のXMLスキーマに準拠するXMLオブジェクトに変換します。LCRには、行LCRまたはDDL LCRを指定できます。

参照:

LCR用のXMLスキーマの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS.CONVERT_LCR_TO_XML(
   anylcr  IN  ANYDATA) 
RETURN SYS.XMLTYPE;

パラメータ

表161-4 CONVERT_LCR_TO_XMLファンクションのパラメータ

パラメータ 説明

anylcr

ANYDATAにカプセル化された変換するLCR。このオブジェクトがANYDATAにカプセル化されたLCRでない場合は、例外が発生します。

161.3.11 CONVERT_XML_TO_LCRファンクション

このファンクションは、論理変更レコード(LCR)用のXMLスキーマに準拠するXMLオブジェクトを、ANYDATAオブジェクト内でカプセル化されたLCRに変換します。LCRには、行またはDDL LCRを指定できます。

参照:

LCR用のXMLスキーマの詳細は、『Oracle Streams概要および管理』を参照してください。

構文

DBMS_STREAMS.CONVERT_XML_TO_LCR(
   xmldat  IN  SYS.XMLTYPE) 
RETURN ANYDATA;

パラメータ

表161-5 CONVERT_XML_TO_LCRファンクションのパラメータ

パラメータ 説明

xmldat

変換するXML LCRオブジェクト。このオブジェクトがLCR用のXMLスキーマに準拠しない場合は、例外が発生します。

161.3.12 GET_INFORMATIONファンクション

このファンクションは、様々なOracle Streams属性に関する情報を戻します。

構文

DBMS_STREAMS.GET_INFORMATION(
   name  IN  VARCHAR2) 
RETURN ANYDATA;

パラメータ

表161-6 GET_INFORMATIONファンクションのパラメータ

パラメータ 説明

name

取得する情報のタイプ。現在、次の指定が可能です。

  • SENDER: 現行の論理変更レコード(LCR)の送信者名を戻します(そのAQメッセージのプロパティから)。このファンクションは、プロシージャDMLハンドラ、DDLハンドラ、エラー・ハンドラまたはメッセージ・ハンドラの内部でコールされます。適用ハンドラの外部からコールされた場合は、NULLが戻ります。戻り値は、VARCHAR2として解析されます。

  • CONSTRAINT_NAME: エラーが発生したLCRについて、違反した制約名を戻します。このファンクションは、適用プロセスのプロシージャDMLハンドラまたはエラー・ハンドラの内部でコールされます。プロシージャDMLハンドラまたはエラー・ハンドラの外部からコールされた場合は、NULLが戻ります。戻り値は、VARCHAR2として解析されます。

161.3.13 GET_STREAMS_NAMEファンクション

実行者がOracle StreamsタイプのCAPTUREAPPLYまたはERROR_EXECUTIONのいずれかである場合、このファンクションは実行者のOracle Streams名を取得します。

実行者がこれらのタイプに該当しない場合、このファンクションはNULLを返します。

構文

DBMS_STREAMS.GET_STREAMS_NAME
RETURN VARCHAR2;

使用上の注意

ルール条件、ルール・ベースの変換、適用ハンドラおよびエラー・ハンドラにおいて、このファンクションを使用できます。たとえば、複数の適用プロセスに1つのエラー・ハンドラを使用する場合、GET_STREAMS_NAMEファンクションを使用して、エラーを発生する適用プロセスの名前を指定できます。

161.3.14 GET_STREAMS_TYPEファンクション

このファンクションは実行者のOracle Streamsタイプを取得し、CAPTUREAPPLYまたはERROR_EXECUTIONのタイプのいずれかを返します。

実行者がこれらのタイプに該当しない場合、このファンクションはNULLを返します。

構文

DBMS_STREAMS.GET_STREAMS_TYPE
RETURN VARCHAR2;

使用上の注意

ルール条件、ルール・ベースの変換、適用ハンドラおよびエラー・ハンドラにおいて、このファンクションを使用できます。たとえば、適用プロセスのキュー(APPLYタイプ)ではなく、エラー・キュー(ERROR_EXECUTIONタイプ)のメッセージを処理している場合、GET_STREAMS_TYPEファンクションを使用して、プロシージャDMLハンドラの操作内容を変更できます。

161.3.15 GET_TAGファンクション

このファンクションは、現行のセッションで生成されるREDOエントリすべてに対してバイナリ・タグを取得します。

注意:

  • このファンクションを実行するには、DBMS_STREAMS_ADMパッケージに対するEXECUTE_CATALOG_ROLEまたはEXECUTE権限をユーザーに付与する必要があります。

  • DBMS_STREAMS.GET_TAGファンクションを使用するかわりに、DBMS_STREAMS_ADM.GET_TAGファンクションを使用することをお薦めします。GET_TAGファンクションを参照してください。

参照:

タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS.GET_TAG
RETURN RAW;

次の例は、現行の論理変更レコード(LCR)タグを出力として表示する方法を示しています。

SET SERVEROUTPUT ON
DECLARE
   raw_tag RAW(2000);
BEGIN
   raw_tag := DBMS_STREAMS.GET_TAG();
   DBMS_OUTPUT.PUT_LINE('Tag Value = ' || RAWTOHEX(raw_tag));
END;
/

DUALビューを問い合せて値を表示することもできます。

SELECT DBMS_STREAMS.GET_TAG FROM DUAL; 

161.3.16 MAX_COMPATIBLEファンクション

このファンクションは、Oracle Databaseの現行リリースに対して可能な最大互換性定数よりも大きい整数を戻します。

構文

DBMS_STREAMS.MAX_COMPATIBLE
RETURN INTEGER;

使用上の注意

このファンクションを論理変更レコード(LCR)のGET_COMPATIBLEメンバー・ファンクションとともに使用して、互換性に基づく動作を指定できます。

MAX_COMPATIBLEファンクションは常に、このファンクションが実行されるOracle Databaseのリリースに対する最大互換性を戻します。そのため、ルール条件でこのファンクションを使用する場合は、Oracle Databaseの最新リリースにアップグレードする際にルール条件を変更する必要がありません。

参照:

161.3.17 SET_TAGプロシージャ

このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。

現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。

注意:

  • このプロシージャを実行するには、DBMS_STREAMS_ADMパッケージに対するEXECUTE_CATALOG_ROLEまたはEXECUTE権限をユーザーに付与する必要があります。

  • DBMS_STREAMS.SET_TAGプロシージャを使用するかわりに、DBMS_STREAMS_ADM.SET_TAGプロシージャを使用することをお薦めします。SET_TAGプロシージャを参照してください。

参照:

タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_STREAMS.SET_TAG(
   tag  IN  RAW  DEFAULT NULL);

パラメータ

表161-7 SET_TAGプロシージャのパラメータ

パラメータ 説明

tag

現行のセッションで継続して生成されるREDOエントリすべてに対するバイナリ・タグ。RAW値は一連のバイトで、バイトは一連のビットです。

デフォルトでは、セッションのタグはNULLです。

タグ値のサイズ制限は、2000バイトです。

使用上の注意

現行のセッションでタグを16進数値の'17'に設定するには、次のプロシージャを実行します。

EXEC DBMS_STREAMS.SET_TAG(tag => HEXTORAW('17'));

SET_TAGプロシージャでは、次の点に注意してください。

  • このプロシージャはトランザクション型ではありません。つまり、SET_TAGの結果はロールバックできません。

  • データベースでデータ・ディクショナリの構築を実行する前に、SET_TAGプロシージャを実行してNULL以外のセッション・タグを設定した場合、ディクショナリの構築前に開始したトランザクションのREDOエントリに、セッションに指定したタグ値が含まれないことがあります。そのため、データ・ディクショナリの構築は、セッションでSET_TAGプロシージャを使用する前に実行します。データ・ディクショナリは、DBMS_CAPTURE_ADM.BUILDプロシージャを実行すると構築されます。BUILDプロシージャは、取得プロセスの作成時に自動的に実行できます。