ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

105 DBMS_STREAMS

DBMS_STREAMSパッケージ(Streamsパッケージのセットの1つ)は、ANYDATAオブジェクトを論理変更レコード(LCR)に変換し、Streams属性に関する情報を戻し、セッションで生成されたREDOエントリにバイナリ・タグで注釈を付けるためのサブプログラムを提供します。このタグは、REDOエントリまたはLCRのバイナリ・タグに対する仕様を含んだルールを持つ、取得プロセス、伝播または適用プロセスの動作に影響を与えます。 


関連項目:

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

この章では、次の項目について説明します。


DBMS_STREAMSの使用方法

この項では、DBMS_STREAMSパッケージの使用に関連する項目について説明します。


セキュリティ・モデル

ユーザー・グループPUBLICには、このパッケージのEXECUTE権限が付与されます。


関連項目:

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


DBMS_STREAMSサブプログラムの要約

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

サブプログラム 説明

COMPATIBLE_10_2ファンクション


DBMS_STREAMS.COMPATIBLE_10_2定数を戻します。

COMPATIBLE_10_1ファンクション


DBMS_STREAMS.COMPATIBLE_10_1定数を戻します。

COMPATIBLE_9_2ファンクション


DBMS_STREAMS.COMPATIBLE_9_2定数を戻します。

COMPATIBLE_10_1ファンクション


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ファンクション


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

GET_STREAMS_NAMEファンクション


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

GET_STREAMS_TYPEファンクション


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

GET_TAGファンクション


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

SET_TAGプロシージャ


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



注意:

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


COMPATIBLE_10_2ファンクション

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

構文

DBMS_STREAMS.COMPATIBLE_10_2
 RETURN INTEGER;

使用上の注意

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

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


関連項目:

  • 「GET_COMPATIBLEメンバー・ファンクション」

  • Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

  • COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。



COMPATIBLE_10_1ファンクション

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

構文

DBMS_STREAMS.COMPATIBLE_10_1
 RETURN INTEGER;

使用上の注意

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

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


関連項目:

  • 「GET_COMPATIBLEメンバー・ファンクション」

  • Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

  • COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。



COMPATIBLE_9_2ファンクション

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

構文

DBMS_STREAMS.COMPATIBLE_9_2
 RETURN INTEGER;

使用上の注意

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

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


関連項目:

  • 「GET_COMPATIBLEメンバー・ファンクション」

  • Streamsでサポートされていない変更を破棄するルールの作成方法の詳細は、『Oracle Streams概要および管理』を参照してください。

  • COMPATIBLE初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseアップグレード・ガイド』を参照してください。



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;

パラメータ

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

パラメータ 説明

source

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


使用上の注意

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


関連項目:

このファンクションの詳細は、『Oracle Streams概要および管理』を参照してください。


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;

パラメータ

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

パラメータ 説明

source

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


使用上の注意

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


関連項目:

このファンクションの詳細は、『Oracle Streams概要および管理』を参照してください。


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;

パラメータ

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

パラメータ 説明

anylcr

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



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;

パラメータ

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

パラメータ 説明

xmldat

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



GET_INFORMATIONファンクション

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

構文

DBMS_STREAMS.GET_INFORMATION(
   name  IN  VARCHAR2)
 RETURN ANYDATA;

パラメータ

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

パラメータ 説明

name

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

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

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



GET_STREAMS_NAMEファンクション

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

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

構文

DBMS_STREAMS.GET_STREAMS_NAME
 RETURN VARCHAR2;

使用上の注意

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


GET_STREAMS_TYPEファンクション

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

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

構文

DBMS_STREAMS.GET_STREAMS_TYPE
 RETURN VARCHAR2;

使用上の注意

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


GET_TAGファンクション

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


関連項目:

タグの詳細は、『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;

SET_TAGプロシージャ

このプロシージャは、現行のセッションで継続して生成されるREDOエントリすべてに対してバイナリ・タグを設定します。現行セッションのDML文またはDDL文によって生成される各REDOエントリには、このタグが含まれます。このプロシージャの影響があるのは、現行のセッションのみです。


注意:

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


関連項目:

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

構文

DBMS_STREAMS.SET_TAG(
   tag  IN RAW  DEFAULT NULL);

パラメータ

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

パラメータ 説明

tag

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

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

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


使用上の注意

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

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