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

戻る
戻る
 
次へ
次へ
 

228 論理変更レコードのタイプ

この章では、論理変更レコード(LCR)のタイプについて説明します。Oracle StreamsにおけるLCRとは、データベースに対する変更情報が格納されたメッセージ・ペイロードのことです。この変更には、データに対する変更(データ操作言語(DML)の変更)とデータベース・オブジェクトに対する変更(データ定義言語(DDL)の変更)とがあります。

Oracle Streamsを使用すると、取得プロセスによりLCRの形式で取得した変更がキューにエンキューされます。このLCRは、あるデータベースのキューから別のデータベースのキューに伝播できます。最後に、適用プロセスによりLCRを接続先データベースに適用できます。LCRは、手動で作成、エンキューおよびデキューすることもできます。


関連項目:

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

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


論理変更レコードのタイプの要約

表228-1 論理変更レコード(LCR)のタイプ

タイプ 説明

「LCR$_DDL_RECORDタイプ」


データベース・オブジェクトに対するデータ定義言語(DDL)の変更を表します。

「LCR$_ROW_RECORDタイプ」


データベース・オブジェクトに対するデータ操作言語(DML)の変更を表します。

「LCR$_ROW_LISTタイプ」


表内の行の列値リストを識別します。

「LCR$_ROW_UNITタイプ」


行内の列値を識別します。


これらの論理変更レコード(LCR)のタイプは、オラクル社が提供する次のPL/SQLパッケージで使用します。


LCR$_DDL_RECORDタイプ

このタイプは、データベース・オブジェクトに対するデータ定義言語(DDL)の変更を示します。

DDL論理変更レコード(DDL LCR)を作成または変更する場合は、ddl_textbase_table_namebase_table_ownerobject_typeobject_ownerobject_nameおよびcommand_typeの各属性との間で一貫性が保たれていることを確認してください。

この項では、DDL LCRのコンストラクタおよびこのタイプのメンバー・サブプログラムについて説明します。

LCR$_DDL_RECORDコンストラクタ

指定した情報を使用して、SYS.LCR$_DDL_RECORDオブジェクトを作成します。

STATIC FUNCTION CONSTRUCT(
   source_database_name  IN  VARCHAR2,
   command_type          IN  VARCHAR2,
   object_owner          IN  VARCHAR2,
   object_name           IN  VARCHAR2,
   object_type           IN  VARCHAR2,
   ddl_text              IN  CLOB,
   logon_user            IN  VARCHAR2,
   current_schema        IN  VARCHAR2,
   base_table_owner      IN  VARCHAR2,
   base_table_name       IN  VARCHAR2,
   tag                   IN  RAW       DEFAULT NULL,
   transaction_id        IN  VARCHAR2  DEFAULT NULL,
   scn                   IN  NUMBER    DEFAULT NULL)
RETURN SYS.LCR$_DDL_RECORD;

LCR$_DDL_RECORDコンストラクタ・ファンクションのパラメータ

表228-2 LCR$_DDL_RECORDコンストラクタ・ファンクションのパラメータ

パラメータ 説明

source_database_name

DDL文が発生したデータベース。ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが.NETの場合にDBS1を指定すると、このファンクションは自動的にDBS1.NETを指定します。このパラメータは、NULL以外の値に設定する必要があります。

command_type

DDL文で実行されるコマンドのタイプ。このパラメータは、NULL以外の値に設定する必要があります。

関連項目: コマンド・タイプの完全なリストは、『Oracle Call Interfaceプログラマーズ・ガイド』の「SQLコマンド・コード」表を参照してください。

次のコマンド・タイプは、DDL LCRではサポートされていません。

ALTER MATERIALIZED VIEW
ALTER MATERIALIZED VIEW LOG
ALTER SUMMARY
CREATE SCHEMA
CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW LOG
CREATE SUMMARY
DROP MATERIALIZED VIEW
DROP MATERIALIZED VIEW LOG
DROP SUMMARY
RENAME

マテリアライズド・ビューのコマンド・タイプのスナップショットもサポートされていません。

object_owner

DDL文が実行されたオブジェクトを所有するユーザー。

object_name

DDL文が実行されたデータベース・オブジェクト。

object_type

DDL文が実行されたオブジェクトのタイプ。

有効なオブジェクト・タイプは次のとおりです。

CLUSTER
FUNCTION
INDEX
LINK
OUTLINE
PACKAGE
PACKAGE BODY
PROCEDURE
SEQUENCE
SYNONYM
TABLE
TRIGGER
TYPE
USER
VIEW

LINKはデータベース・リンクを表します。

NULLも有効なオブジェクト・タイプです。すべてのオブジェクト・タイプをリストしない場合は、NULLを指定します。GET_OBJECT_TYPEメンバー・プロシージャは、オブジェクト・タイプがリストされていない場合、NULLを戻します。

ddl_text

DDL文のテキスト。このパラメータは、NULL以外の値に設定する必要があります。

logon_user

DDL文を実行したセッションのユーザー。

current_schema

変更済データベース・オブジェクトに対するスキーマが、ddl_textに明示的に指定されていない場合に使用されるスキーマ。 current_schemaと異なるスキーマがcurrent_schemaに指定されている場合、このファンクションはcurrent_schemaに指定されているスキーマを使用します。

このパラメータは、NULL以外の値に設定する必要があります。

base_table_owner

DDL文が表に関連するDDLの場合(CREATE TABLEALTER TABLEなど)、またはDDL文に表が含まれる場合(表にトリガーを作成する場合など)、base_table_ownerに、含まれる表の所有者を指定します。 それ以外の場合、base_table_ownerNULLになります。

base_table_name

DDL文が表に関連するDDLの場合(CREATE TABLEALTER TABLEなど)、またはDDL文に表が含まれる場合(表にトリガーを作成する場合など)、base_table_nameに、含まれる表の名前を指定します。 それ以外の場合、base_table_nameNULLになります。

tag

LCRの追跡を有効にするバイナリ・タグ。たとえば、適用による転送を使用する場合は、DDL文の元のソース・データベースを判断するためにこのタグを使用できます。

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

transaction_id

トランザクションの識別子。

scn

取得したLCRの変更レコードがREDOログに書き込まれた時点のSCN。このSCNの値は、ユーザー作成のLCRに対しては無効です。


LCR$_DDL_RECORDサブプログラムの要約

表228-3 LCR$_DDL_RECORDタイプのサブプログラム

サブプログラム 説明

「EXECUTEメンバー・プロシージャ」


現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。

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


元表(依存表)名を戻します。

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


元表(依存表)の所有者を戻します。

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


デフォルトのスキーマ(ユーザー)名を戻します。

「GET_DDL_TEXTメンバー・プロシージャ」


CLOBのDDLテキストを取得します。

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


ログオン・ユーザー名を戻します。

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


DDLに含まれるオブジェクトのタイプを戻します。

「SET_BASE_TABLE_NAMEメンバー・プロシージャ」


元表(依存表)名を設定します。

「SET_BASE_TABLE_OWNERメンバー・プロシージャ」


元表(依存表)の所有者を設定します。

「SET_CURRENT_SCHEMAメンバー・プロシージャ」


デフォルトのスキーマ(ユーザー)名を設定します。

「SET_DDL_TEXTメンバー・プロシージャ」


DDLテキストを設定します。

「SET_LOGON_USERメンバー・プロシージャ」


ログオン・ユーザー名を設定します。

「SET_OBJECT_TYPEメンバー・プロシージャ」


オブジェクト・タイプを設定します。

共通のサブプログラム

SYS.LCR$_ROW_RECORDタイプとSYS.LCR$_DDL_RECORDタイプに共通するサブプログラムのリストは、「LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム」を参照してください。


EXECUTEメンバー・プロシージャ

現行ユーザーのセキュリティ・ドメイン下でDDL LCRを実行します。このプロシージャを使用してLCRが適用された場合、LCRに対して実行される適用プロセスのハンドラは実行されません。


注意:

EXECUTEメンバー・プロシージャを起動できるのは、適用プロセスの適用ハンドラ内のみです。

構文

MEMBER PROCEDURE EXECUTE();

GET_BASE_TABLE_NAMEメンバー・ファンクション

元表(依存表)名を戻します。

構文

MEMBER FUNCTION GET_BASE_TABLE_NAME()
RETURN VARCHAR2;

GET_BASE_TABLE_OWNERメンバー・ファンクション

元表(依存表)の所有者を戻します。

構文

MEMBER FUNCTION GET_BASE_TABLE_OWNER()
RETURN VARCHAR2;

GET_CURRENT_SCHEMAメンバー・ファンクション

現行のスキーマ名を戻します。

構文

MEMBER FUNCTION GET_CURRENT_SCHEMA()
RETURN VARCHAR2;

GET_DDL_TEXTメンバー・プロシージャ

CLOBのDDLテキストを取得します。

次に、このプロシージャを使用してDDL LCRのDDLテキストを取得するPL/SQLプロシージャの例を示します。

CREATE OR REPLACE PROCEDURE ddl_in_lcr (ddl_lcr in SYS.LCR$_DDL_RECORD)
IS
  ddl_text   CLOB;
BEGIN
  DBMS_OUTPUT.PUT_LINE( '  -----------------------------------------' );
  DBMS_OUTPUT.PUT_LINE( '  Displaying DDL text in a DDL LCR: ' );
  DBMS_OUTPUT.PUT_LINE( '  -----------------------------------------' );
  DBMS_LOB.CREATETEMPORARY(ddl_text, true);
  ddl_lcr.GET_DDL_TEXT(ddl_text);
  DBMS_OUTPUT.PUT_LINE('DDL text:' || ddl_text);
  DBMS_LOB.FREETEMPORARY(ddl_text);
END;
/

注意:

GET_DDL_TEXTは、CLOBで使用する領域の管理を容易にするためのメンバー・プロシージャであり、メンバー・ファンクションではありません。前述の例では、CLOBの一時領域が作成され、不要になると解放されることに注意してください。

構文

MEMBER FUNCTION GET_DDL_TEXT
  ddl_text  IN/OUT  CLOB);

パラメータ

表228-4 GET_DDL_TEXTプロシージャのパラメータ

パラメータ 説明

ddl_text

DDL LCRのDDLテキスト。


GET_LOGON_USERメンバー・ファンクション

ログオン・ユーザー名を戻します。

構文

MEMBER FUNCTION GET_LOGON_USER()
RETURN VARCHAR2;

GET_OBJECT_TYPEメンバー・ファンクション

DDLに含まれるオブジェクトのタイプを戻します。

構文

MEMBER FUNCTION GET_OBJECT_TYPE()
RETURN VARCHAR2;

SET_BASE_TABLE_NAMEメンバー・プロシージャ

元表(依存表)名を設定します。

構文

MEMBER PROCEDURE SET_BASE_TABLE_NAME(
   base_table_name  IN  VARCHAR2);

パラメータ

表228-5 SET_BASE_TABLE_NAMEプロシージャのパラメータ

パラメータ 説明

base_table_name

元表の名前。


SET_BASE_TABLE_OWNERメンバー・プロシージャ

元表(依存表)の所有者を設定します。

構文

MEMBER PROCEDURE SET_BASE_TABLE_OWNER(
   base_table_owner  IN  VARCHAR2);

パラメータ

表228-6 SET_BASE_TABLE_OWNERプロシージャのパラメータ

パラメータ 説明

base_table_owner

元表の所有者の名前。


SET_CURRENT_SCHEMAメンバー・プロシージャ

デフォルトのスキーマ(ユーザー)名を設定します。

構文

MEMBER PROCEDURE SET_CURRENT_SCHEMA(
   current_schema  IN  VARCHAR2);

パラメータ

表228-7 SET_CURRENT_SCHEMAプロシージャのパラメータ

パラメータ 説明

current_schema

現行スキーマとして設定するスキーマの名前。このパラメータは、NULL以外の値に設定する必要があります。


SET_DDL_TEXTメンバー・プロシージャ

DDLテキストを設定します。

構文

MEMBER PROCEDURE SET_DDL_TEXT(
   ddl_text  IN  CLOB);

パラメータ

表228-8 SET_DDL_TEXTプロシージャのパラメータ

パラメータ 説明

ddl_text

DDLテキスト。このパラメータは、NULL以外の値に設定する必要があります。


SET_LOGON_USERメンバー・プロシージャ

ログオン・ユーザー名を設定します。

構文

MEMBER PROCEDURE SET_LOGON_USER(
   logon_user  IN  VARCHAR2);

パラメータ

表228-9 SET_LOGON_USERプロシージャのパラメータ

パラメータ 説明

logon_user

ログオン・ユーザーとして設定するスキーマの名前。


SET_OBJECT_TYPEメンバー・プロシージャ

オブジェクト・タイプを設定します。

構文

MEMBER PROCEDURE SET_OBJECT_TYPE(
   object_type  IN  VARCHAR2);

パラメータ

表228-10 SET_OBJECT_TYPEプロシージャのパラメータ

パラメータ 説明

object_type

オブジェクト・タイプ。

有効なオブジェクト・タイプは次のとおりです。

CLUSTER
FUNCTION
INDEX
LINK
OUTLINE
PACKAGE
PACKAGE BODY
PROCEDURE
SEQUENCE
SYNONYM
TABLE
TRIGGER
TYPE
USER
VIEW

LINKはデータベース・リンクを表します。

NULLも有効なオブジェクト・タイプです。すべてのオブジェクト・タイプをリストしない場合は、NULLを指定します。GET_OBJECT_TYPEメンバー・プロシージャは、オブジェクト・タイプがリストされていない場合、NULLを戻します。



LCR$_ROW_RECORDタイプ

このタイプは、表内の行に対するデータ操作言語(DML)の変更を表します。 このタイプでは、LCR$_ROW_LISTタイプを使用します。

行論理変更レコード(行LCR)を作成または変更する場合は、command_type属性に、古い列値の有無と新しい列値の有無について一貫性があることを確認してください。

この項では、行LCRのコンストラクタおよびこのタイプのメンバー・サブプログラムについて説明します。

LCR$_ROW_RECORDコンストラクタ

指定した情報を使用して、SYS.LCR$_ROW_RECORDオブジェクトを作成します。

STATIC FUNCTION CONSTRUCT(
   source_database_name  IN  VARCHAR2,
   command_type          IN  VARCHAR2,
   object_owner          IN  VARCHAR2,
   object_name           IN  VARCHAR2,
   tag                   IN  RAW                DEFAULT NULL,
   transaction_id        IN  VARCHAR2           DEFAULT NULL,
   scn                   IN  NUMBER             DEFAULT NULL,
   old_values            IN  SYS.LCR$_ROW_LIST  DEFAULT NULL,
   new_values            IN  SYS.LCR$_ROW_LIST  DEFAULT NULL)
RETURN SYS.LCR$_ROW_RECORD;

LCR$_ROW_RECORDコンストラクタ・ファンクションのパラメータ

表228-11 LCR$_ROW_RECORDコンストラクタ・ファンクションのパラメータ

パラメータ 説明

source_database_name

行の変更が発生したデータベース。ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが.NETの場合にDBS1を指定すると、このファンクションは自動的にDBS1.NETを指定します。このパラメータは、NULL以外の値に設定する必要があります。

command_type

DML文で実行されるコマンドのタイプ。このパラメータは、NULL以外の値に設定する必要があります。

有効な値は次のとおりです。

INSERT
UPDATE
DELETE
LOB ERASE
LOB WRITE
LOB TRIM

INSERTの場合、LCRには、空でないnew_valuesコレクション、および空またはNULLold_valuesコレクションが必要です。

UPDATEの場合、LCRには、空でないnew_valuesコレクション、および空でないold_valuesコレクションが必要です。

DELETEの場合、LCRには、NULLまたは空のnew_valuesコレクション、および空でないold_valuesコレクションが必要です。

LOB ERASELOB WRITEまたはLOB TRIMの場合、LCRには、空でないnew_valuesコレクション、および空またはNULLold_valuesコレクションが必要です。

object_owner

行の変更が発生した表を所有するユーザー。このパラメータは、NULL以外の値に設定する必要があります。

object_name

DML文が実行された表。このパラメータは、NULL以外の値に設定する必要があります。

tag

LCRの追跡を有効にするバイナリ・タグ。たとえば、適用による転送を使用する場合は、DML変更の元のソース・データベースを判断するためにこのタグを使用できます。

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

transaction_id

トランザクションの識別子。

scn

変更レコードがREDOログに書き込まれた時点のSCN。このSCNの値は、ユーザー作成のLCRに対しては無効です。

old_values

DML変更前の行の列値。DML文がUPDATE文またはDELETE文の場合は、DML文の前にある行の列値がこのパラメータに含まれます。DML文がINSERT文の場合は、変更前の値はありません。

new_values

DML変更後の行の列値。DML文がUPDATE文またはINSERT文の場合は、DML文の後にある行の列値がこのパラメータに含まれます。DML文がDELETE文の場合は、新しい値はありません。

LCRによってLOB操作が反映される場合は、補足的にログされた列および関連するLOB情報がこのパラメータに含まれます。


LCR$_ROW_RECORDサブプログラムの要約

表228-12 LCR$_ROW_RECORDタイプのサブプログラム

サブプログラム 説明

「ADD_COLUMNメンバー・プロシージャ」


指定した値タイプに応じて、古い値または新しい値として値を列に追加します。

「CONVERT_LONG_TO_LOB_CHUNKメンバー・プロシージャ」


行LCRのLONGデータを固定幅のCLOBに変換するか、行LCRのLONG RAWデータをBLOBに変換します。

「DELETE_COLUMNメンバー・プロシージャ」


指定した値タイプに応じて、古い値または新しい値(あるいはその両方)を指定の列から削除します。

「EXECUTEメンバー・プロシージャ」


現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。

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


列のLOB情報を取得します。

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


指定した列のLOBオフセットを戻します。

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


LOB列の操作サイズを取得します。

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


列のLONG情報を取得します。

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


指定した値タイプに応じて、指定の列の古い値または新しい値を戻します。

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


指定した値タイプに応じて、古い値または新しい値のリストを戻します。

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


指定した列のXML情報を戻します。

「RENAME_COLUMNメンバー・プロシージャ」


LCRの列名を変更します。

「SET_LOB_INFORMATIONメンバー・プロシージャ」


列のLOB情報を設定します。

「SET_LOB_OFFSETメンバー・プロシージャ」


指定した列のLOBオフセットを設定します。

「SET_LOB_OPERATION_SIZEメンバー・プロシージャ」


LOB列の操作サイズを設定します。

「SET_VALUEメンバー・プロシージャ」


指定した列の値を上書きします。

「SET_VALUESメンバー・プロシージャ」


指定した値タイプに応じて、LCRの既存の古い値または新しい値を置換します。

「SET_XML_INFORMATIONメンバー・プロシージャ」


列のXML情報を設定します。

共通のサブプログラム

SYS.LCR$_ROW_RECORDタイプとSYS.LCR$_DDL_RECORDタイプに共通するサブプログラムのリストは、「LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム」を参照してください。


ADD_COLUMNメンバー・プロシージャ

指定した値タイプに応じて、古い値または新しい値として値を列に追加します。列に同じタイプの値がすでに存在する場合は、エラーが発生します。


注意:

すでに存在する列値を設定するには、SET_VALUEを実行します。

LOB列に関する注意事項

DMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobsパラメータがTRUEに設定されている)場合は、ハンドラ・プロシージャのこのメンバー・プロシージャを使用して、LOB列を行LCRに追加します。 ハンドラのassemble_lobsFALSEに設定されている場合は、このメンバー・プロシージャを使用してLOB列を行LCRに追加することはできません。

DMLハンドラまたはエラー・ハンドラを使用してLOB列を追加するには、メンバー・プロシージャでcolumn_valueパラメータのLOBロケータを指定します。 ADD_COLUMNメンバー・プロシージャは、ANYDATAでカプセル化されたLOBロケータが、LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、LOBが元の(アセンブルされていない)行LCRで表示されます。


注意:

  • LOBアセンブリを使用するには、データベース互換性が10.2.0以上である必要があります。

  • ルールベースの変換で行LCRを処理する場合は、このメンバー・プロシージャを使用してLOB列を追加することはできません。

  • ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用してLONGまたはLONG RAW列を追加することはできません。


構文

MEMBER PROCEDURE ADD_COLUMN(
   value_type    IN  VARCHAR2,
   column_name   IN  VARCHAR2,
   column_value  IN  ANYDATA);

パラメータ

表228-13 ADD_COLUMNプロシージャのパラメータ

パラメータ 説明

value_type

列に追加する値のタイプ。列に古い値を追加するには、oldを指定します。列に新しい値を追加するには、newを指定します。

column_name

列名。この名前は検証されません。指定した名前が無効な場合は、LCRのアプリケーション中にエラーが発生する可能性があります。

column_value

列値。NULLの場合はエラーが発生します。

LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOBロケータを指定できます。

NULL値をANYDATAラッパーにカプセル化すると、列値にNULLを指定できます。


CONVERT_LONG_TO_LOB_CHUNKメンバー・プロシージャ

行LCRのLONGデータをCLOBに変換するか、または行LCRのLONG RAWデータをBLOBに変換します。

このプロシージャは、行LCRの操作コードをLONG WRITEからLOB WRITEに変更できます。

このメンバー・プロシージャは、ルールベースの変換で使用できます。

このメンバー・プロシージャには、次の制限事項が適用されます。


関連項目:

『Oracle Streamsレプリケーション管理者ガイド』

構文

MEMBER PROCEDURE CONVERT_LONG_TO_LOB_CHUNK();

DELETE_COLUMNメンバー・プロシージャ

指定した値タイプに応じて、古い値または新しい値(あるいはその両方)を指定の列から削除します。

構文

MEMBER PROCEDURE DELETE_COLUMN(
   column_name  IN  VARCHAR2,
   value_type   IN  VARCHAR2  DEFAULT '*');

パラメータ

表228-14 DELETE_COLUMNプロシージャのパラメータ

パラメータ 説明

column_name

列名。LCRに列が存在しない場合は、エラーが発生します。

value_type

列から削除する値のタイプ。列の古い値を削除するには、oldを指定します。列の新しい値を削除するには、newを指定します。 *を指定すると、このプロシージャは古い値と新しい値の両方を削除します。


EXECUTEメンバー・プロシージャ

現行ユーザーのセキュリティ・ドメイン下で行LCRを実行します。このプロシージャを使用してLCRが適用された場合、LCRに対して実行される適用プロセスのハンドラは実行されません。

このメンバー・プロシージャは、次のいずれかの状況で行LCRに対して実行できます。


注意:

カスタム・ルールベースの変換では、行LCRに対してメンバー・プロシージャを実行しないでください。実行すると、行LCRがトランザクション・コンテキスト外で実行される場合があります。

LOB列に関する注意事項

DMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobsパラメータがTRUEに設定されている)場合、このメンバー・プロシージャはアセンブルされた行LCRを実行します。アセンブルされた行LCRは、LOB値をLOBロケータまたはNULLで表します。

ハンドラのassemble_lobsFALSEに設定されている場合、このメンバー・プロシージャはアセンブルされていない行LCRを実行します。アセンブルされていない行LCRは、LOB値をVARCHAR2データ型およびRAWデータ型で表します。これらのアセンブルされていない行LCRは、ハンドラによって変更されている可能性があります。

次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、LOBが元の(アセンブルされていない)行LCRで表示されます。

構文

MEMBER PROCEDURE EXECUTE(
   conflict_resolution  IN  BOOLEAN);

パラメータ

表228-15 EXECUTEプロシージャのパラメータ

パラメータ 説明

conflict_resolution

TRUEの場合は、DBMS_APPLY_ADMパッケージのSET_UPDATE_CONFLICT_HANDLERプロシージャを使用して表に定義した競合解消が、LCR実行の結果として生じた競合の解消に使用されます。

FALSEの場合、競合解消は使用されません。

このパラメータが指定されていない場合またはNULLに設定されている場合は、エラーが発生します。


GET_LOB_INFORMATIONメンバー・ファンクション

列のLOB情報を取得します。

戻り値は次のいずれかになります。

DBMS_LCR.NOT_A_LOB        CONSTANT NUMBER := 1;
DBMS_LCR.NULL_LOB         CONSTANT NUMBER := 2;
DBMS_LCR.INLINE_LOB       CONSTANT NUMBER := 3;
DBMS_LCR.EMPTY_LOB        CONSTANT NUMBER := 4;
DBMS_LCR.LOB_CHUNK        CONSTANT NUMBER := 5;
DBMS_LCR.LAST_LOB_CHUNK   CONSTANT NUMBER := 6;

指定した列が存在しない場合は、NULLを戻します。

行LCRのコマンド・タイプがUPDATEの場合は、use_oldパラメータに'Y'を指定すると、列値を簡単に取得できます。

構文

MEMBER FUNCTION GET_LOB_INFORMATION(
  value_type   IN  VARCHAR2,
  column_name  IN  VARCHAR2,
  use_old      IN  VARCHAR2  DEFAULT 'Y')
RETURN NUMBER;

パラメータ

表228-16 GET_LOB_INFORMATIONファンクションのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。oldまたはnewのいずれかです。

column_name

列の名前。

use_old

Yおよびvalue_typenewで、新しい値が存在しない場合、このファンクションは対応する古い値を戻します。Nおよびvalue_typenewで、新しい値が存在しない場合、このファンクションは古い値を戻しません。

value_typeoldであるか、行LCRのcommand_typeUPDATE以外の場合、このファンクションはuse_oldパラメータの値を無視します。

use_oldパラメータにはNULLを指定できません。


GET_LOB_OFFSETメンバー・ファンクション

指定した列のLOBオフセットを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で取得します。次のすべての条件を満たす場合のみ、NULL以外の値を戻します。

これらの条件を満たさない場合は、NULLを戻します。

構文

GET_LOB_OFFSET(
   value_type   IN  VARCHAR2,
   column_name  IN  VARCHAR2)
RETURN NUMBER;

パラメータ

表228-17 GET_LOB_OFFSETプロシージャのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。現在は、newのみ指定できます。

column_name

LOB列の名前。


GET_LOB_OPERATION_SIZEメンバー・ファンクション

LOB列の操作サイズを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で取得します。次のすべての条件を満たす場合のみ、NULL以外の値を戻します。

これらの条件を満たさない場合は、NULLを戻します。

構文

MEMBER FUNCTION GET_LOB_OPERATION_SIZE(
  value_type   IN  VARCHAR2,
  column_name  IN  VARCHAR2)
RETURN NUMBER,

パラメータ

表228-18 GET_LOB_OPERATION_SIZEファンクションのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。現在は、newのみ指定できます。

column_name

LOB列の名前。


GET_LONG_INFORMATIONメンバー・ファンクション

列のLONG情報を取得します。

戻り値は次のいずれかになります。

DBMS_LCR.NOT_A_LONG        CONSTANT NUMBER := 1;
DBMS_LCR.NULL_LONG         CONSTANT NUMBER := 2;
DBMS_LCR.INLINE_LONG       CONSTANT NUMBER := 3;
DBMS_LCR.LONG_CHUNK        CONSTANT NUMBER := 4;
DBMS_LCR.LAST_LONG_CHUNK   CONSTANT NUMBER := 5;

指定した列が存在しない場合は、NULLを戻します。

行LCRのコマンド・タイプがUPDATEの場合は、use_oldパラメータに'Y'を指定すると、列値を簡単に取得できます。

構文

MEMBER FUNCTION GET_LONG_INFORMATION(
  value_type   IN  VARCHAR2,
  column_name  IN  VARCHAR2,
  use_old      IN  VARCHAR2  DEFAULT 'Y')
RETURN NUMBER;

パラメータ

表228-19 GET_LONG_INFORMATIONファンクションのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。oldまたはnewのいずれかです。

column_name

列の名前。

use_old

Yおよびvalue_typenewで、新しい値が存在しない場合、このファンクションは対応する古い値を戻します。Nおよびvalue_typenewで、新しい値が存在しない場合、このファンクションは古い値を戻しません。

value_typeoldであるか、行LCRのcommand_typeUPDATE以外の場合、このファンクションはuse_oldパラメータの値を無視します。

use_oldパラメータにはNULLを指定できません。


GET_VALUEメンバー・ファンクション

指定した値タイプに応じて、指定の列の古い値または新しい値を戻します。

行LCRのコマンド・タイプがUPDATEの場合は、use_oldパラメータに'Y'を指定すると、列値を簡単に取得できます。

構文

MEMBER FUNCTION GET_VALUE(
   value_type   IN  VARCHAR2,
   column_name  IN  VARCHAR2,
   use_old      IN  VARCHAR2  DEFAULT 'Y')
RETURN ANYDATA;

パラメータ

表228-20 GET_VALUEファンクションのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。列の古い値を取得するには、oldを指定します。列の新しい値を取得するには、newを指定します。

column_name

列名。列が存在し、その値がNULLの場合、このファンクションはNULL値をカプセル化したANYDATAインスタンスを戻します。列値が存在しない場合、このファンクションはNULLを戻します。

use_old

Yおよびvalue_typenewで、新しい値が存在しない場合、このファンクションは対応する古い値を戻します。

Nおよびvalue_typenewで、新しい値が存在しない場合、このファンクションはNULLを戻します。

value_typeoldであるか、行LCRのcommand_typeUPDATE以外の場合、このファンクションはuse_oldパラメータの値を無視します。

use_oldパラメータにはNULLを指定できません。


GET_VALUESメンバー・ファンクション

指定した値タイプに応じて、古い値または新しい値のリストを戻します。

行LCRのコマンド・タイプがUPDATEの場合は、use_oldパラメータに'Y'を指定すると、全列の値を簡単に取得できます。

構文

MEMBER FUNCTION GET_VALUES(
   value_type  IN  VARCHAR2,
   use_old     IN  VARCHAR2  DEFAULT 'Y')
RETURN SYS.LCR$_ROW_LIST;

パラメータ

表228-21 GET_VALUESファンクションのパラメータ

パラメータ 説明

value_type

戻す値のタイプ。古い値のリストを戻す場合は、oldを指定します。新しい値のリストを戻す場合は、newを指定します。

use_old

Yおよびvalue_typenewの場合、このファンクションはLCR内のすべての新しい値のリストを戻します。リストに新しい値が存在しない場合、このファンクションは対応する古い値を戻します。つまり、戻されるリストには既存の新しい値すべてと、存在しない新しい値に対応する古い値が表示されます。

Nおよびvalue_typenewの場合、このファンクションはLCR内のすべての新しい値のリストを戻しますが、このリストに古い値は表示されません。

value_typeoldであるか、行LCRのcommand_typeUPDATE以外の場合、このファンクションはuse_oldパラメータの値を無視します。

use_oldパラメータにはNULLを指定できません。


GET_XML_INFORMATIONメンバー・ファンクション

指定した列のXML情報を戻します。

戻り値は次のいずれかになります。

DBMS_LCR.NOT_XML   CONSTANT NUMBER := 1;
DBMS_LCR.XML_DOC   CONSTANT NUMBER := 2;
DBMS_LCR.XML_DIFF  CONSTANT NUMBER := 3;

DBMS_LCR.NOT_XMLは、列がXMLType列ではないことを示します。DBMS_LCR.XML_DOCは、列にXML文書が含まれることを示します。 DBMS_LCR.XML_DIFFは、更新操作の元のXML文書と新しいXML文書間の違いが列に含まれることを示します。

指定した列が存在しない場合は、NULLを戻します。

構文

MEMBER FUNCTION GET_XML_INFORMATION(
   column_name  IN  VARCHAR2)
RETURN NUMBER,

パラメータ

表228-22 GET_XML_INFORMATIONファンクションのパラメータ

パラメータ 説明

column_name

列名。


RENAME_COLUMNメンバー・プロシージャ

LCRの列名を変更します。

構文

MEMBER PROCEDURE RENAME_COLUMN(
   from_column_name  IN  VARCHAR2,
   to_column_name    IN  VARCHAR2,
   value_type        IN  VARCHAR2  DEFAULT '*');

パラメータ

表228-23 RENAME_COLUMNプロシージャのパラメータ

パラメータ 説明

from_column_name

既存の列名。

to_column_name

新しい列名。指定した名前の列がすでに存在する場合は、エラーが発生します。

value_type

列名を変更する値のタイプ。

古い値の列名を変更するには、oldを指定します。LCRに古い値が存在しない場合は、エラーが発生します。

新しい値の列名を変更するには、newを指定します。LCRに新しい値が存在しない場合は、エラーが発生します。

*を指定すると、このプロシージャは古い値と新しい値の両方の列名を変更します。LCRに古い値と新しい値のどちらかが存在しない場合は、エラーが発生します。


SET_LOB_INFORMATIONメンバー・プロシージャ

列にLOB情報を設定します。


注意:

ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用できません。

構文

MEMBER PROCEDURE SET_LOB_INFORMATION(
  value_type       IN  VARCHAR2,
  column_name      IN  VARCHAR2,
  lob_information  IN  NUMBER);

パラメータ

表228-24 SET_LOB_INFORMATIONプロシージャのパラメータ

パラメータ 説明

value_type

列に設定する値のタイプ。oldまたはnewのいずれかです。 oldは、lob_informationDBMS_LCR.NOT_A_LOBに設定されている場合のみ指定します。

column_name

列の名前。列値が存在しない場合は、例外が発生します。このパラメータは、LOB以外の列に対して設定する必要があります。

lob_information

次のいずれかの値を指定します。

  DBMS_LCR.NOT_A_LOB        CONSTANT NUMBER := 1;
  DBMS_LCR.NULL_LOB         CONSTANT NUMBER := 2;
  DBMS_LCR.INLINE_LOB       CONSTANT NUMBER := 3;
  DBMS_LCR.EMPTY_LOB        CONSTANT NUMBER := 4;
  DBMS_LCR.LOB_CHUNK        CONSTANT NUMBER := 5;
  DBMS_LCR.LAST_LOB_CHUNK   CONSTANT NUMBER := 6;

SET_LOB_OFFSETメンバー・プロシージャ

指定した列のLOBオフセットを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で設定します。


注意:

ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用できません。

構文

MEMBER PROCEDURE SET_LOB_OFFSET(
   value_type   IN  VARCHAR2,
   column_name  IN  VARCHAR2,
   lob_offset   IN  NUMBER);

パラメータ

表228-25 SET_LOB_OFFSETプロシージャのパラメータ

パラメータ 説明

value_type

列に設定する値のタイプ。現在は、newのみ指定できます。

column_name

列名。LCRに列値が存在しない場合は、エラーが発生します。

lob_offset

LOBオフセット番号。有効な値は、NULL、またはDBMS_LOB.LOBMAXSIZE以下の正の整数です。


SET_LOB_OPERATION_SIZEメンバー・プロシージャ

LOB列の操作サイズを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で設定します。


注意:

ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用できません。

構文

MEMBER PROCEDURE SET_LOB_OPERATION_SIZE(
  value_type          IN  VARCHAR2,
  column_name         IN  VARCHAR2,
  lob_operation_size  IN  NUMBER);

パラメータ

表228-26 SET_LOB_OPERATION_SIZEプロシージャのパラメータ

パラメータ 説明

value_type

列に設定する値のタイプ。現在は、newのみ指定できます。

column_name

LOB列の名前。LCRに列値が存在しない場合は、例外が発生します。

lob_operation_size

LOBに関するlob_informationDBMS_LCR.LAST_LOB_CHUNKの場合は、このパラメータを有効なLOB ERASE値または有効なLOB TRIM値のいずれかに設定できます。LOB ERASE 値は、DBMS_LOB.LOBMAXSIZE以下の正の整数である必要があります。LOB TRIM値は、DBMS_LOB.LOBMAXSIZE以下の負でない整数である必要があります。

それ以外の場合は、NULLに設定します。


SET_VALUEメンバー・プロシージャ

指定した列の古い値または新しい値を上書きします。

列の古い値を上書きする理由の1つは、競合によって発生したエラーを解決するためです。


注意:

行LCRに列を追加するには、ADD_COLUMNを実行します。

LOB列に関する注意事項

DMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobsパラメータがTRUEに設定されている)場合は、行LCR内のLOB列に対して、ハンドラ・プロシージャのこのメンバー・プロシージャを使用できます。 ハンドラのassemble_lobsFALSEに設定されている場合は、LOB列に対してこのメンバー・プロシージャを使用することはできません。

DMLハンドラまたはエラー・ハンドラを使用してLOB列の値を設定するには、メンバー・プロシージャでcolumn_valueパラメータのLOBロケータを指定します。 SET_VALUEメンバー・プロシージャは、ANYDATAでカプセル化されたLOBロケータが、LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、LOBが元の(アセンブルされていない)行LCRで表示されます。


注意:

  • LOBアセンブリを使用するには、データベース互換性が10.2.0以上である必要があります。

  • ルールベースの変換で行LCRを処理する場合は、LOB列に対してこのメンバー・プロシージャを使用することはできません。

  • ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、LONGまたはLONG RAW列に対してこのメンバー・プロシージャを使用することはできません。


XMLType列に関する注意事項

DMLハンドラまたはエラー・ハンドラでXMLType列を含む行LCRを処理する場合、LCRに含まれるすべてのXMLType列およびLOB列は常にLOBアセンブリを使用してアセンブルされます。ハンドラ・プロシージャのこのメンバー・プロシージャは、1つ以上のXMLType列を含む行LCRに対して使用できます。

DMLハンドラまたはエラー・ハンドラを使用してXMLType列の値を設定するには、column_valueパラメータにXMLTypeを指定します。 SET_VALUEメンバー・プロシージャは、ANYDATAでカプセル化されたXMLTypeがDMLハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、XMLType列が元の(アセンブルされていない)行LCRで表示されます。


注意:

  • XMLType列を含む行LCRを処理するには、データベース互換性が11.1.0以上である必要があります。

  • ルールベースの変換で行LCRを処理する場合は、XMLType列に対してこのメンバー・プロシージャを使用することはできません。


構文

MEMBER PROCEDURE SET_VALUE(
   value_type    IN  VARCHAR2,
   column_name   IN  VARCHAR2,
   column_value  IN  ANYDATA);

パラメータ

表228-27 SET_VALUEプロシージャのパラメータ

パラメータ 説明

value_type

設定する値のタイプ。列の古い値を設定するには、oldを指定します。列の新しい値を設定するには、newを指定します。

column_name

列名。 指定したcolumn_valueについて、指定したcolumn_typeがLCRに存在しない場合は、エラーが発生します。

column_value

列の新しい値。NULLを指定すると、エラーが発生します。値にNULLを設定するには、NULLANYDATAインスタンスにカプセル化します。

LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOB列にLOBロケータを指定します。


SET_VALUESメンバー・プロシージャ

指定した値タイプに応じて、LCRの古い値または新しい値をすべて置換します。

LOB列に関する注意事項

DMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobsパラメータがTRUEに設定されている)場合は、1つ以上のLOB列を含む行LCRに対して、ハンドラ・プロシージャのこのメンバー・プロシージャを使用できます。 ハンドラのassemble_lobsFALSEに設定されている場合は、行LCRに対してこのメンバー・プロシージャを使用することはできません。

DMLハンドラまたはエラー・ハンドラを使用して行LCRの1つ以上のLOB列の値を設定するには、value_listパラメータに各LOB列のLOBロケータを指定します。 SET_VALUESメンバー・プロシージャは、ANYDATAでカプセル化されたLOBロケータが、LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、LOBが元の(アセンブルされていない)行LCRで表示されます。


注意:

  • LOBアセンブリを使用するには、データベース互換性が10.2.0以上である必要があります。

  • ルールベースの変換で行LCRを処理する場合は、LOB列に対してこのメンバー・プロシージャを使用することはできません。

  • ルールベースの変換、DMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、LONGまたはLONG RAW列に対してこのメンバー・プロシージャを使用することはできません。


XMLType列に関する注意事項

DMLハンドラまたはエラー・ハンドラでXMLType列を含む行LCRを処理する場合、LCRに含まれるすべてのXMLType列およびLOB列は常にLOBアセンブリを使用してアセンブルされます。ハンドラ・プロシージャのこのメンバー・プロシージャは、1つ以上のXMLType列を含む行LCRに対して使用できます。

DMLハンドラまたはエラー・ハンドラを使用して行LCRの1つ以上のXMLType列の値を設定するには、value_listパラメータに各XMLType列のXMLTypeを指定します。 SET_VALUESメンバー・プロシージャは、ANYDATAでカプセル化されたXMLTypeがDMLハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

これらのいずれかの状況によってエラーが発生した場合は、行LCRを含むトランザクションがエラー・キューに移動し、XMLType列が元の(アセンブルされていない)行LCRで表示されます。


注意:

  • XMLType列を含む行LCRを処理するには、データベース互換性が11.1.0以上である必要があります。

  • ルールベースの変換で行LCRを処理する場合は、XMLType列に対してこのメンバー・プロシージャを使用することはできません。


構文

MEMBER PROCEDURE SET_VALUES(
   value_type  IN  VARCHAR2,
   value_list  IN  SYS.LCR$_ROW_LIST);

パラメータ

表228-28 SET_VALUESプロシージャのパラメータ

パラメータ 説明

value_type

置換する値のタイプ。古い値を置換するには、oldを指定します。新しい値を置換するには、newを指定します。

value_list

既存のリストを置換するLOV。すべての値を削除するには、NULLまたは空のリストを使用します。

LOBアセンブリを使用するDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOB列に1つ以上のLOBロケータを指定します。


SET_XML_INFORMATIONメンバー・プロシージャ

列のXML情報を設定します。

構文

MEMBER PROCEDURE SET_XML_INFORMATION(
   column_name      IN  VARCHAR2,
   xml_information  IN  NUMBER);

パラメータ

表228-29 SET_XML_INFORMATIONプロシージャのパラメータ

パラメータ 説明

column_name

列の名前。LCRに列値が存在しない場合は、例外が発生します。

xml_information

次のいずれかの値を指定します。

  DBMS_LCR.NOT_XML   CONSTANT NUMBER := 1;
  DBMS_LCR.XML_DOC   CONSTANT NUMBER := 2;
  DBMS_LCR.XML_DIFF  CONSTANT NUMBER := 3;

DBMS_LCR.NOT_XMLは、列がXMLType列ではないことを示します。DBMS_LCR.XML_DOCは、列にXML文書が含まれることを示します。 DBMS_LCR.XML_DIFFは、更新操作の元のXML文書と新しいXML文書間の違いが列に含まれることを示します。



LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム

次に、LCR$_DDL_RECORDタイプとLCR$_ROW_RECORDタイプに共通するファンクションとプロシージャを示します。


関連項目:

各タイプ固有のサブプログラムについては、次の項を参照してください。

表228-30 DDL LCRタイプと行LCRタイプに共通するサブプログラムの要約

サブプログラム 説明

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


論理変更レコード(LCR)のコマンド・タイプを戻します。

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


現在LCRが属するトランザクションのコミットSCN(システム変更番号)を戻します。

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


LCRのサポートに最小限必要なデータベース互換性を戻します。

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


LCRに指定された追加属性の値を戻します。

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


LCRによって変更されるオブジェクトの名前を戻します。

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


LCRによって変更されるオブジェクトの所有者を戻します。

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


LCRのシステム変更番号(SCN)を戻します。

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


ソース・データベース名を戻します。

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


取得プロセスで取得されたLCRの変更がソース・データベースのREDOログで生成された時刻、または永続LCRが作成された時刻を戻します。

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


LCRのタグを戻します。

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


LCRのトランザクション識別子を戻します。

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


LCRのタグがNULLの場合はYを戻し、LCRのタグがNULLでない場合はNを戻します。

「SET_COMMAND_TYPEメンバー・プロシージャ」


LCRのコマンド・タイプを設定します。

「SET_EXTRA_ATTRIBUTEメンバー・プロシージャ」


LCRに指定された追加属性に値を設定します。

「SET_OBJECT_NAMEメンバー・プロシージャ」


LCRによって変更されるオブジェクトの名前を設定します。

「SET_OBJECT_OWNERメンバー・プロシージャ」


LCRによって変更されるオブジェクトの所有者を設定します。

「SET_SOURCE_DATABASE_NAMEメンバー・プロシージャ」


LCRによって変更されるオブジェクトのソース・データベース名を設定します。

「SET_TAGメンバー・プロシージャ」


LCRにタグを設定します。


GET_COMMAND_TYPEメンバー・ファンクション

LCRのコマンド・タイプを戻します。


関連項目:

コマンド・タイプの完全なリストは、『Oracle Call Interfaceプログラマーズ・ガイド』の「SQLコマンド・コード」表を参照してください。

構文

MEMBER FUNCTION GET_COMMAND_TYPE()
RETURN VARCHAR2;

GET_COMMIT_SCNメンバー・ファンクション

現在LCRが属するトランザクションのコミットSCN(システム変更番号)を戻します。

トランザクションのコミットSCNは、適用中またはエラー・トランザクションの実行中にのみ使用できます。このファンクションは、DMLハンドラ、DDLハンドラまたはエラー・ハンドラでのみ使用できます。これらのハンドラでは、このファンクションによって取得したSCNを使用して、LCRの属するトランザクションのコミット時間へフラッシュバックできます。このとき、フラッシュバックはLCRのソース・データベースで行う必要があります。

コミットSCNは、不完全なトランザクションに属するLCRについては使用できません。たとえば、永続LCRにはコミットSCNが設定されない可能性があります。LCRでコミットSCNを使用できない場合、このファンクションはNULLを戻します。

構文

MEMBER FUNCTION GET_COMMIT_SCN()
RETURN NUMBER;

GET_COMPATIBLEメンバー・ファンクション

LCRのサポートに最小限必要なデータベース互換性を戻します。Oracle Databaseの互換性は、COMPATIBLE初期化パラメータを使用して制御します。

このファンクションの戻り値は次のいずれかになります。

戻り値 COMPATIBLE初期化パラメータと同等のもの
DBMS_STREAMS.COMPATIBLE_9_2 9.2.0
DBMS_STREAMS.COMPATIBLE_10_1 10.1.0
DBMS_STREAMS.COMPATIBLE_10_2 10.2.0
DBMS_STREAMS.COMPATIBLE_11_1 11.1.0

DDL LCRは、常にDBMS_STREAMS.COMPATIBLE_9_2を戻します。

次のファンクションを使用して、互換性に関する定数の戻り値を取得できます。

これらのファンクションは、ルール条件と適用ハンドラを使用して、LCRのGET_COMPATIBLEメンバー・ファンクションとともに使用できます。


注意:

DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せることにより、データベース内のOracle Streamsでサポートされていないデータベース・オブジェクトを確認できます。


関連項目:

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

  • 第129章「DBMS_STREAMS」および第130章「DBMS_STREAMS_ADM」

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


構文

MEMBER FUNCTION GET_COMPATIBLE()
RETURN NUMBER;

GET_EXTRA_ATTRIBUTEメンバー・ファンクション

LCRに指定された追加属性の値を戻します。戻された追加属性は、ANYDATAインスタンスに格納されます。DBMS_CAPTURE_ADMパッケージのINCLUDE_EXTRA_ATTRIBUTEプロシージャを使用して取得プロセスを実行すると、1つ以上の追加属性を取得できます。

構文

MEMBER FUNCTION GET_EXTRA_ATTRIBUTE(
   attribute_name  IN  VARCHAR2)
RETURN ANYDATA;

パラメータ

表228-31 GET_EXTRA_ATTRIBUTEファンクションのパラメータ

パラメータ 説明

attribute_name

戻す追加属性の名前。有効な名前は次のとおりです。

  • row_id

    行のLCRで変更された行のROWID。この属性は、索引構成表のDDL LCRにも行LCRにも含まれません。データ型はUROWIDです。

  • serial#

    LCRに取得された変更を実行したセッションのシリアル番号。データ型はNUMBERです。

  • session#

    LCRに取得された変更を実行したセッションの識別子。データ型はNUMBERです。

  • thread#

    LCRに取得された変更が実行されたインスタンスのスレッド番号。通常、スレッド番号はOracle Real Application Clusters(Oracle RAC)環境のみで使用されます。データ型はNUMBERです。

  • tx_name

    LCRの属するトランザクションの名前。データ型はVARCHAR2です。

  • username

    LCRに取得された変更を実行した現行のユーザーの名前。データ型はVARCHAR2です。

指定されたattribute_nameが有効でない場合はエラーが発生します。

指定された追加属性に値が存在しない場合、このファンクションはNULLを戻します。

関連項目: 現行のユーザーの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。


GET_OBJECT_NAMEメンバー・ファンクション

LCRによって変更されるオブジェクトの名前を戻します。

構文

MEMBER FUNCTION GET_OBJECT_NAME()
RETURN VARCHAR2;

GET_OBJECT_OWNERメンバー・ファンクション

LCRによって変更されるオブジェクトの所有者を戻します。

構文

MEMBER FUNCTION GET_OBJECT_OWNER()
RETURN VARCHAR2;

GET_SCNメンバー・ファンクション

LCRのシステム変更番号(SCN)を戻します。

構文

MEMBER FUNCTION GET_SCN()
RETURN NUMBER;

GET_SOURCE_DATABASE_NAMEメンバー・ファンクション

ソース・データベース名のグローバル名を戻します。ソース・データベースとは、変更が発生したデータベースです。

構文

MEMBER FUNCTION GET_SOURCE_DATABASE_NAME()
RETURN VARCHAR2;

GET_SOURCE_TIMEメンバー・ファンクション

取得プロセスで取得されたLCRの変更がソース・データベースのREDOログで生成された時刻、または永続LCRが作成された時刻を戻します。

構文

MEMBER FUNCTION GET_SOURCE_TIME()
RETURN DATE;

GET_TAGメンバー・ファンクション

LCRのタグを戻します。LCRのタグとは、LCRの追跡を有効にするバイナリ・タグです。たとえば、適用による転送を使用する場合は、DML変更またはDDL変更の元のソース・データベースを判断するためにこのタグを使用できます。


関連項目:

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

構文

MEMBER FUNCTION GET_TAG()
RETURN RAW;

GET_TRANSACTION_IDメンバー・ファンクション

LCRのトランザクション識別子を戻します。

構文

MEMBER FUNCTION GET_TRANSACTION_ID()
RETURN VARCHAR2;

IS_NULL_TAGメンバー・ファンクション

LCRのタグがNULLの場合はYを、NULLでない場合はNを戻します。


関連項目:

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

構文

MEMBER FUNCTION IS_NULL_TAG()
RETURN VARCHAR2;

SET_COMMAND_TYPEメンバー・プロシージャ

LCRのコマンド・タイプを設定します。指定したコマンド・タイプを解釈できない場合は、エラーが発生します。たとえば、INSERTGRANTに変更すると、エラーが発生します。


関連項目:


構文

MEMBER PROCEDURE SET_COMMAND_TYPE(
   command_type  IN  VARCHAR2);

パラメータ

表228-32 SET_COMMAND_TYPEプロシージャのパラメータ

パラメータ 説明

command_type

コマンド・タイプ。このパラメータは、NULL以外の値に設定する必要があります。


SET_EXTRA_ATTRIBUTEメンバー・プロシージャ

LCRに指定された追加属性に値を設定します。DBMS_CAPTURE_ADMパッケージのINCLUDE_EXTRA_ATTRIBUTEプロシージャを使用して取得プロセスを実行すると、1つ以上の追加属性を取得できます。

構文

MEMBER PROCEDURE SET_EXTRA_ATTRIBUTE(
   attribute_name   IN  VARCHAR2,
   attribute_value  IN  ANYDATA);

パラメータ

表228-33 SET_EXTRA_ATTRIBUTEプロシージャのパラメータ

パラメータ 説明

attribute_name

設定する追加属性の名前。有効な名前は次のとおりです。

  • row_id

    行のLCRで変更された行のROWID。この属性は、索引構成表のDDL LCRにも行LCRにも含まれません。データ型はVARCHAR2です。

  • serial#

    LCRに取得された変更を実行したセッションのシリアル番号。データ型はNUMBERです。

  • session#

    LCRに取得された変更を実行したセッションの識別子。データ型はNUMBERです。

  • thread#

    LCRに取得された変更が実行されたインスタンスのスレッド番号。通常、スレッド番号はOracle Real Application Clusters(Oracle RAC)環境のみで使用されます。データ型はNUMBERです。

  • tx_name

    LCRの属するトランザクションの名前。データ型はVARCHAR2です。

  • username

    LCRに取得された変更を実行した現行のユーザーの名前。データ型はVARCHAR2です。

指定されたattribute_nameが有効でない場合はエラーが発生します。

関連項目: 現行のユーザーの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

attribute_value

指定された追加属性に設定する値。NULLに設定すると、このプロシージャは指定した追加属性をLCRから削除します。NULLに設定するには、NULLANYDATAインスタンスにカプセル化します。


SET_OBJECT_NAMEメンバー・プロシージャ

LCRによって変更されるオブジェクトの名前を設定します。

構文

MEMBER PROCEDURE SET_OBJECT_NAME(
   object_name  IN  VARCHAR2);

パラメータ

表228-34 SET_OBJECT_NAMEプロシージャのパラメータ

パラメータ 説明

object_name

オブジェクトの名前。


SET_OBJECT_OWNERメンバー・プロシージャ

LCRによって変更されるオブジェクトの所有者を設定します。

構文

MEMBER PROCEDURE SET_OBJECT_OWNER(
   object_owner  IN  VARCHAR2);

パラメータ

表228-35 SET_OBJECT_OWNERプロシージャのパラメータ

パラメータ 説明

object_owner

オブジェクトを含むスキーマ。


SET_SOURCE_DATABASE_NAMEメンバー・プロシージャ

LCRによって変更されるオブジェクトのソース・データベース名を設定します。

構文

MEMBER PROCEDURE SET_SOURCE_DATABASE_NAME(
   source_database_name  IN  VARCHAR2);

パラメータ

表228-36 SET_SOURCE_DATABASE_NAMEプロシージャのパラメータ

パラメータ 説明

source_database_name

変更対象のソース・データベース。ドメイン名を指定しない場合、このプロシージャはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが.NETの場合にDBS1を指定すると、このプロシージャは自動的にDBS1.NETを指定します。このパラメータは、NULL以外の値に設定する必要があります。


SET_TAGメンバー・プロシージャ

LCRにタグを設定します。LCRのタグとは、LCRの追跡を有効にするバイナリ・タグです。たとえば、適用による転送を使用する場合は、変更の元のソース・データベースを判断するためにこのタグを使用できます。


関連項目:

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

構文

MEMBER PROCEDURE SET_TAG(
   tag  IN  RAW);

パラメータ

表228-37 SET_TAGプロシージャのパラメータ

パラメータ 説明

tag

LCRのバイナリ・タグ。タグ値の最大サイズは2KBです。



LCR$_ROW_LISTタイプ

表内の行の列値リストを識別します。

このタイプは、LCR$_ROW_UNITタイプを使用し、LCR$_ROW_RECORDタイプで使用されます。

構文

CREATE TYPE SYS.LCR$_ROW_LIST AS TABLE OF SYS.LCR$_ROW_UNIT
/

LCR$_ROW_UNITタイプ

行内の列値を識別します。

このタイプは、LCR$_ROW_LISTタイプで使用されます。

構文

CREATE TYPE LCR$_ROW_UNIT AS OBJECT (
  column_name         VARCHAR2(4000),
  data                ANYDATA,
  lob_information     NUMBER,
  lob_offset          NUMBER,
  lob_operation_size  NUMBER
  long_information    NUMBER);
/

属性

表228-38 LCR$_ROW_UNITの属性

属性 説明

column_name

列の名前。

data

列に含まれるデータ。

lob_information

列のLOB情報として、次のいずれかの値が含まれます。

  DBMS_LCR.NOT_A_LOB        CONSTANT NUMBER := 1;
  DBMS_LCR.NULL_LOB         CONSTANT NUMBER := 2;
  DBMS_LCR.INLINE_LOB       CONSTANT NUMBER := 3;
  DBMS_LCR.EMPTY_LOB        CONSTANT NUMBER := 4;
  DBMS_LCR.LOB_CHUNK        CONSTANT NUMBER := 5;
  DBMS_LCR.LAST_LOB_CHUNK   CONSTANT NUMBER := 6;

lob_offset

文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で指定したLOBオフセット。有効な値は、NULL、またはDBMS_LOB.LOBMAXSIZE以下の正の整数です。

lob_operation_size

LOBに関するlob_informationDBMS_LCR.LAST_LOB_CHUNKの場合は、このパラメータを有効なLOB ERASE値または有効なLOB TRIM値のいずれかに設定できます。LOB ERASE 値は、DBMS_LOB.LOBMAXSIZE以下の正の整数である必要があります。LOB TRIM値は、DBMS_LOB.LOBMAXSIZE以下の負でない整数である必要があります。

lob_informationDBMS_LCR.LAST_LOB_CHUNKでない場合は、その他のすべての操作についてNULLが設定されます。

long_information

列のLONG情報として、次のいずれかの値が含まれます。

DBMS_LCR.not_a_long CONSTANT NUMBER := 1;

DBMS_LCR.null_long CONSTANT NUMBER := 2;

DBMS_LCR.inline_long CONSTANT NUMBER := 3;

DBMS_LCR.long_chunk CONSTANT NUMBER := 4;

DBMS_LCR.last_long_chunk CONSTANT NUMBER := 5;