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

この章では、論理変更レコード(LCR)のタイプについて説明します。

この章には次のトピックが含まれます:

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

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

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

参照:

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

286.2 論理変更レコードのタイプのセキュリティ・モデル

PUBLICには、この章で説明するタイプのEXECUTE権限が付与されます。

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

この表は、論理変更レコードのタイプを示し、簡単に説明しています。

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

タイプ 説明

LCR$_DDL_RECORDタイプ

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

LCR$_ROW_RECORDタイプ

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

LCR$_ROW_LISTタイプ

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

LCR$_ROW_UNITタイプ

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

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

  • DBMS_APPLY_ADM

  • DBMS_AQ

  • DBMS_AQADM

  • DBMS_CAPTURE_ADM

  • DBMS_PROPAGATION_ADM

  • DBMS_RULE

  • DBMS_RULE_ADM

  • DBMS_STREAMS

  • DBMS_STREAMS_ADM

  • DBMS_TRANSFORM

286.3.1 LCR$_DDL_RECORDタイプ

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

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

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

注意:

  • データベース・オブジェクトの名前をパラメータとしてLCRコンストラクタに渡すとき、その名前を二重引用符で囲むと、大文字と小文字の両方、または小文字のみを使用した名前も処理できます。たとえば、名前に小文字が含まれる場合は、その名前を二重引用符で囲む必要があります。

  • トランザクション識別子やSCNは適用プロセスで生成されてメモリーに格納されるため、これらの値をLCRの作成時にアプリケーションで指定する必要はありません。LCRでトランザクション識別子またはSCNを指定しても、適用プロセスでは無視され、新規の値が割り当てられます。

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,
   position              IN  RAW       DEFAULT NULL,
   edition_name          IN  VARCHAR2  DEFAULT NULL,
   root_name             IN  VARCHAR2  DEFAULT NULL)
RETURN SYS.LCR$_DDL_RECORD;

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

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

パラメータ 説明

source_database_name

DDL文が発生したデータベース。

LCRがマルチテナント・コンテナ・データベース(CDB)で発生した場合、DDL変更が発生したコンテナのグローバル名がこのフィールドによって指定されます。

ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインがEXAMPLE.COMの場合にDBS1を指定すると、このファンクションは自動的にDBS1.EXAMPLE.COMを指定します。このパラメータは、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に対しては無効です。

position

LCRの位置。

LCR位置は、XStream構成で一般的に使用されます。XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。

関連項目: Oracle DatabaseのXStreamガイド

edition_name

DDL文が実行されたエディションの名前。

root_name

LCRがCDBと関連付けられている場合、このフィールドでは、CDBのルートのグローバル名が指定されます。

LCRがCDB以外と関連付けられている場合、このフィールドはNULLになります。

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

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

サブプログラム 説明

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

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

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

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

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

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

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

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

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

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

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

DDL文が実行されたエディションの名前を取得します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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が適用された場合、適用ハンドラは実行されません。

注意:

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

構文

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テキストを取得します。

たとえば、次のPL/SQLコードでは、このプロシージャを使用してDDL LCRのDDLテキストを取得します。

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);

パラメータ

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

パラメータ 説明

ddl_text

DDL LCRのDDLテキスト。

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

DDL文が実行されたエディションの名前を取得します。

構文

MEMBER FUNCTION GET_EDITION_NAME() 
RETURN VARCHAR2;

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);

パラメータ

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

パラメータ 説明

base_table_name

元表の名前。

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

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

構文

MEMBER PROCEDURE SET_BASE_TABLE_OWNER(
   base_table_owner  IN  VARCHAR2);

パラメータ

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

パラメータ 説明

base_table_owner

ベース表の所有者の名前

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

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

構文

MEMBER PROCEDURE SET_CURRENT_SCHEMA(
   current_schema  IN  VARCHAR2);

パラメータ

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

パラメータ 説明

current_schema

現行スキーマとして設定するスキーマの名前。

このパラメータは、NULL以外の値に設定してください。

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

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

構文

MEMBER PROCEDURE SET_DDL_TEXT(
   ddl_text  IN  CLOB);

パラメータ

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

パラメータ 説明

ddl_text

DDLテキスト。

このパラメータは、NULL以外の値に設定してください。

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

DDL文が実行されたエディションの名前を設定します。

構文

MEMBER PROCEDURE SET_EDITION_NAME(
   edition_name  IN  VARCHAR2);

パラメータ

表286-9 SET_EDITION_NAMEプロシージャのパラメータ

パラメータ 説明

edition_name

エディションの名前。

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

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

構文

MEMBER PROCEDURE SET_LOGON_USER(
   logon_user  IN  VARCHAR2);

パラメータ

表286-10 SET_LOGON_USERプロシージャのパラメータ

パラメータ 説明

logon_user

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

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

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

構文

MEMBER PROCEDURE SET_OBJECT_TYPE(
   object_type  IN  VARCHAR2);

パラメータ

表286-11 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を戻します。

286.3.2 LCR$_ROW_RECORDタイプ

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

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

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

注意:

  • データベース・オブジェクトの名前をパラメータとしてLCRコンストラクタに渡すとき、その名前を二重引用符で囲むと、大文字と小文字の両方、または小文字のみを使用した名前も処理できます。たとえば、名前に小文字が含まれる場合は、その名前を二重引用符で囲む必要があります。

  • トランザクション識別子やSCNは適用プロセスで生成されてメモリーに格納されるため、これらの値をLCRの作成時にアプリケーションで指定する必要はありません。LCRでトランザクション識別子またはSCNを指定しても、適用プロセスでは無視され、新規の値が割り当てられます。

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,
   position              IN  RAW                DEFAULT NULL,
   statement             IN  VARCHAR2           DEFAULT NULL,
   bind_variables        IN  SYS.LCR$_ROW_LIST  DEFAULT NULL,
   bind_by_position      IN  VARCHAR2           DEFAULT 'N',
   root_name             IN  VARCHAR2           DEFAULT NULL)
RETURN SYS.LCR$_ROW_RECORD;

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

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

パラメータ 説明

source_database_name

行の変更が発生したデータベース。

LCRがCDBで発生した場合、このフィールドでは、行変更が発生したコンテナのグローバル名が指定されます。

ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインがEXAMPLE.COMの場合にDBS1を指定すると、このファンクションは自動的にDBS1.EXAMPLE.COMを指定します。このパラメータは、NULL以外の値に設定してください。

command_type

DML文で実行されるコマンドのタイプ。

このパラメータは、NULL以外の値に設定してください。

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

INSERT
UPDATE
DELETE
LOB ERASE
LOB WRITE
LOB TRIM

INSERTの場合は、LCRのnew_valuesコレクションが空ではなく、old_valuesコレクションが空またはNULLであることを確認してください。

UPDATEの場合は、LCRのnew_valuesコレクションが空ではなく、old_valuesコレクションも空ではないことを確認してください。

DELETEの場合は、LCRのnew_valuesコレクションがNULLまたは空で、old_valuesコレクションが空ではないことを確認してください。

LOB ERASELOB WRITEまたはLOB TRIMの場合は、LCRのnew_valuesコレクションが空ではなく、old_valuesコレクションが空またはNULLであることを確認してください。

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情報がこのパラメータに含まれます。

position

LCRの位置。

LCR位置は、XStream構成で一般的に使用されます。XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。

関連項目: Oracle DatabaseのXStreamガイド

statement

このパラメータは内部使用専用として予約されています。

bind_variables

このパラメータは内部使用専用として予約されています。

bind_by_position

このパラメータは内部使用専用として予約されています。

root_name

LCRがCDBと関連付けられている場合、このフィールドでは、CDBのルートのグローバル名が指定されます。

LCRがCDB以外と関連付けられている場合、このフィールドはNULLになります。

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

表286-13 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_ROW_TEXTメンバー・プロシージャ

LCRにカプセル化されている変更に対するSQL文を取得します。

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

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

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

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

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

行LCRにカプセル化されている変更に対するWHERE句を取得します。

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

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

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

内部使用専用として予約されています。

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

列のリストを行LCRに保持します。

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

LCRの列名を変更します。

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

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

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

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

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

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

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

内部使用専用として予約されています。

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ハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

  • ハンドラで、ANYDATAでカプセル化されたLOBロケータを使用して行LCRのエンキューを試行した場合。

  • 正しく設定されていないLOB列を追加しようとした場合。

これらのいずれかの状況によってエラーが発生した場合は、行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);

パラメータ

表286-14 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に変更できます。

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

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

  • このメンバー・プロシージャは、適用ハンドラでは使用できません。

  • LONGデータは、操作コードのINSERTUPDATEまたはLONG_WRITEのいずれかによって、行LCRの一部として送信できます。LONGデータは複数回に分けて送信される場合があるため、このプロシージャは必ず、何もデータがない場合か、元のLONGデータ全体に対して実行するよう確認してください。

  • LOBからLONGへの変換はサポートされていません。

  • このプロシージャを行LCRで実行する場合、その行LCRが取得プロセスで作成されている必要があります。つまり、このプロシージャでは永続的な行LCRはサポートされていません。 

構文

MEMBER PROCEDURE CONVERT_LONG_TO_LOB_CHUNK;

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

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

構文

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

パラメータ

表286-15 DELETE_COLUMNプロシージャのパラメータ

パラメータ 説明

column_name

列名。

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

value_type

列から削除する値のタイプ。

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

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

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

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

  • LCRが適用ハンドラで処理される場合。

  • LCRがキュー内にあり、Oracle Streams取得プロセス以外のメカニズム(Oracle Streams適用プロセスやアプリケーションなど)によって最後にエンキューされる場合。

  • LCRが、LCR$_ROW_RECORDコンストラクタ・ファンクションを使用して構成されていて、エンキューされていない場合。

  • LCRがエラー・キュー内にある場合。

注意:

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

LOB列に関する注意事項

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

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

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

  • FALSEに設定されているassemble_lobsで構成されたDMLハンドラまたはエラー・ハンドラで、LOBロケータを含む行LCRを実行しようとした場合。

  • TRUEに設定されているassemble_lobsで構成されたDMLハンドラまたはエラー・ハンドラで、VARCHAR2データ・タイプまたはRAWデータ・タイプで表された1つ以上のLOB値を含む行LCRを実行しようとした場合。

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

構文

MEMBER PROCEDURE EXECUTE(
   conflict_resolution  IN  BOOLEAN);

パラメータ

表286-16 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;

パラメータ

表286-17 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以外の値を戻します。

  • 列値が存在する場合。

  • 列値が表外のLOBの場合。つまり、情報がDBMS_LCR.LAST_LOB_CHUNKまたはDBMS_LCR.LOB_CHUNKの場合。

  • コマンド・タイプがLOB ERASEまたはLOB WRITEの場合。

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

構文

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

パラメータ

表286-18 GET_LOB_OFFSETファンクションのパラメータ

パラメータ 説明

value_type

列に戻す値のタイプ。

現在は、newのみ指定できます。

column_name

LOB列の名前。

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

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

  • 列値が存在する場合。

  • 列値が表外のLOBの場合。

  • コマンド・タイプがLOB ERASEまたはLOB TRIMの場合。

  • 情報がDBMS_LCR.LAST_LOB_CHUNKの場合。

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

構文

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

パラメータ

表286-19 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;

パラメータ

表286-20 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_ROW_TEXTメンバー・プロシージャ

行LCRにカプセル化されている変更に対するSQL文を取得します。このメソッドは、PL/SQLでSQLを生成します。

このメソッドはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

次のプロシージャは、SQL文をCLOBデータ・タイプで戻します。

MEMBER PROCEDURE GET_ROW_TEXT(
   row_text  IN/OUT  CLOB);

次のプロシージャは、バインド変数を持つSQL文をCLOBデータ・タイプで戻します。

MEMBER PROCEDURE GET_ROW_TEXT(
   row_text         IN/OUT  CLOB,
   variable_list    IN/OUT  LCR$_ROW_LIST,
   bind_var_syntax  IN      VARCHAR2  DEFAULT ':');

パラメータ

表286-21 GET_ROW_TEXTプロシージャのパラメータ

パラメータ 説明

row_text

LCRにカプセル化されている変更に対するSQL文。

variable_list

バインド変数の順序でのバインド変数の値。

bind_var_syntax

バインド変数の構文。

有効な値は次のいずれかです。

  • バインド変数を:1:2などの形式にするには、:を指定します(デフォルト)。

  • バインド変数を?の形式にするには、?を指定します。

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;

パラメータ

表286-22 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;

パラメータ

表286-23 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_WHERE_CLAUSEメンバー・プロシージャ

行LCRにカプセル化されている変更に対するWHERE句を取得します。

ROWIDはANSI互換ではないため、ROWIDのかわりに、GET_WHERE_CLAUSEから戻されるWHERE句を使用します。生成されたWHERE句は、元のDML操作のWHERE句と一致しない場合があります。

INSERT文のROWIDは、INSERTで作成された新しい行のROWIDです。INSERT操作に対して生成されるWHERE句は、新しい行を識別します。そのため、生成されたWHERE句には挿入された新しい値がすべて含まれます。

たとえば、hr.departments表に次のように挿入するとします。

INSERT INTO hr.departments (
   department_id, department_name, manager_id, location_id) 
   VALUES (10, 'HR', 20, 40);

生成されたWHERE句は、値10'HR'20および40を含む行を表します。生成されたWHERE句は次のとおりです。

WHERE "DEPARTMENT_ID" = 10 AND "DEPARTMENT_NAME" = 'HR' AND
      "MANAGER_ID" = 20 AND "LOCATION_ID" = 40

UPDATE文のROWIDは、更新された行のROWIDです。UPDATE操作に対して生成されるWHERE句は、UPDATE実行後の行を識別します。生成されたWHERE句は、UPDATEの新旧の値に基づいています。

たとえば、hr.departments表に対する次の更新の場合を考えます。

UPDATE hr.departments SET department_name='Management'
 WHERE department_name='Administration' AND location_id = 20 AND
       manager_id = 30 AND department_id = 10;

UPDATE後の行の値は、10'Management'30および20です。生成されたWHERE句は、次のように行を識別しています。

WHERE "DEPARTMENT_ID" = 10 AND "DEPARTMENT_NAME" = 'MANAGEMENT' AND
      "MANAGER_ID" = 30 AND "LOCATION_ID" = 20

新しい値は、"DEPARTMENT_NAME"に使用されることに注意してください。新しい値は、UPDATEの後の列の値であるためです。残りの列については、古い値が使用されます。

DELETE操作のROWIDは、削除される前に存在した行です。生成されたWHERE句は、DELETE操作に存在するすべての古い列の値で構成されています。

LOB列は、生成されたWHERE句には存在しません。生成されるWHERE句は、LCR内のLOB列の存在による影響を受けません。

このメソッドはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。

構文

次のプロシージャは、SQL文のWHERE句をCLOBデータ・タイプで戻します。

MEMBER PROCEDURE GET_WHERE_CLAUSE(
   where_clause  IN/OUT  CLOB);

次のプロシージャは、SQL文のWHERE句をバインド変数とともにCLOBデータ・タイプで戻します。

MEMBER PROCEDURE GET_WHERE_CLAUSE(
   where_clause     IN/OUT  CLOB,
   variable_list    IN/OUT  LCR$_ROW_LIST,
   bind_var_syntax  IN      VARCHAR2  DEFAULT ':');

パラメータ

表286-24 GET_WHERE_CLAUSEプロシージャのパラメータ

パラメータ 説明

where_clause

LCRにカプセル化されている変更に対するSQL文のWHERE句。

variable_list

バインド変数の順序でのバインド変数の値。

bind_var_syntax

バインド変数の構文。

有効な値は次のいずれかです。

  • バインド変数を:1:2などの形式にするには、:を指定します(デフォルト)。

  • バインド変数を?の形式にするには、?を指定します。

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.XML_DIFF  CONSTANT NUMBER := 3;

DBMS_LCR.NOT_XMLは、列がXMLType列ではないことを示します。

DBMS_LCR.XML_DOCは、列にXML文書が含まれることを示します。

DBMS_LCR.XML_DIFFは、更新操作によって加えられた変更を記述するXMLドキュメントが列に含まれていることを示しています。このXMLドキュメントは、列のXMLドキュメントの差分を記述しています。XMLドキュメント全体が置換されることはありません。

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

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

構文

MEMBER FUNCTION GET_XML_INFORMATION(
   column_name  IN  VARCHAR2)
RETURN NUMBER;

パラメータ

表286-25 GET_XML_INFORMATIONファンクションのパラメータ

パラメータ 説明

column_name

列名。

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

このファンクションは内部使用専用として予約されています。

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

このプロシージャは、列のリストを行LCRに保持します。リストに含まれていない列は、行LCRから削除されます。

構文

MEMBER PROCEDURE KEEP_COLUMNS(
   column_list  IN  VARCHAR2,
   value_type   IN  VARCHAR2  DEFAULT '*');

パラメータ

表286-26 KEEP_COLUMNSプロシージャのパラメータ

パラメータ 説明

column_list

行LCRで保持される列の名前。

VARCHAR2タイプのカンマ区切りリストを指定します。リストに含まれていない列は、現在の行LCRから削除されます。

value_type

列を保持する値のタイプ。

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

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

*を指定すると、このプロシージャは古い値と新しい列の両方を保持します。

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

行LCRの列名を変更します。

構文

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

パラメータ

表286-27 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);

パラメータ

表286-28 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);

パラメータ

表286-29 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);

パラメータ

表286-30 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_ROW_TEXTメンバー・プロシージャ

このプロシージャは内部使用専用として予約されています。

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ハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

  • ハンドラで、ANYDATAでカプセル化されたLOBロケータを使用して行LCRのエンキューを試行した場合。

  • LOB列を誤って設定しようとした場合。

これらのいずれかの状況によってエラーが発生した場合は、行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ハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

  • ハンドラで、ANYDATAでカプセル化されたXMLTypeを使用して行LCRのエンキューを試行した場合。

  • XMLType列を誤って設定しようとした場合。

これらのいずれかの状況によってエラーが発生した場合は、行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);

パラメータ

表286-31 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に設定されている)場合は、ハンドラ・プロシージャのこのメンバー・プロシージャを使用できます。ハンドラのassemble_lobsFALSEに設定されている場合は、行LCRに対してこのメンバー・プロシージャを使用することはできません。

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

  • ハンドラで、ANYDATAでカプセル化されたLOBロケータを使用して行LCRのエンキューを試行した場合。

  • LOB列を誤って設定しようとした場合。

これらのいずれかの状況によってエラーが発生した場合は、行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ハンドラまたはエラー・ハンドラで処理されていることを検証します。次の状況では、エラーが発生します。

  • ハンドラで、ANYDATAでカプセル化されたXMLTypeを使用して行LCRのエンキューを試行した場合。

  • XMLTypeを誤って設定しようとした場合。

これらのいずれかの状況によってエラーが発生した場合は、行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);

パラメータ

表286-32 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);

パラメータ

表286-33 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.XML_DIFF  CONSTANT NUMBER := 3;

DBMS_LCR.NOT_XMLは、列がXMLType列ではないことを示します。

DBMS_LCR.XML_DOCは、列にXML文書が含まれることを示します。

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

DBMS_LCR.XML_DIFFは、更新操作によって加えられた変更を記述するXMLドキュメントが列に含まれていることを示しています。このXMLドキュメントは、列のXMLドキュメントの差分を記述しています。XMLドキュメント全体が置換されることはありません。

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

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

参照:

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

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

サブプログラム 説明

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

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

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

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

GET_COMMIT_SCN_FROM_POSITION静的ファンクション

XStreamアウトバウンド・サーバーによって生成される入力位置からトランザクションのコミットSCNを取得します。

GET_COMMIT_TIME

現在のLCRが属するトランザクションのコミット・タイムを取得します。

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

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

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

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

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

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

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

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

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

現在のLCRの位置を取得します。

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

CDBのルートのグローバル名を取得します。

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

LCRのSCNを取得します。

GET_SCN_FROM_POSITION静的ファンクション

XStreamアウトバウンド・サーバーによって生成される入力位置からSCNを取得します。

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

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

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

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

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

LCRのタグを取得します。

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

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_ROOT_NAMEメンバー・ファンクション

CDBのルートのグローバル名を設定します。

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でコミットSCNを使用できない場合、このファンクションはNULLを戻します。

構文

MEMBER FUNCTION GET_COMMIT_SCN() 
RETURN NUMBER;

GET_COMMIT_SCN_FROM_POSITION静的ファンクション

XStreamアウトバウンド・サーバーによって生成される入力位置からトランザクションのコミットSCN(システム変更番号)を取得します。

構文

STATIC FUNCTION GET_COMMIT_SCN_FROM_POSITION(
   position  IN  RAW) 
RETURN NUMBER;

パラメータ

表286-35 GET_COMMIT_SCN_FROM_POSITIONファンクションのパラメータ

パラメータ 説明

position

位置。

位置を取得するには、GET_POSITIONメンバー・ファンクションを使用するか、DBA_XSTREAM_OUTBOUND_PROGRESSデータ・ディクショナリ・ビューを問い合せます。

注意:

XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

GET_COMMIT_TIME

現在のLCRが属するトランザクションのコミット・タイムを取得します。

トランザクションのコミット・タイムは、適用中またはエラー・トランザクションの実行中にのみ使用できます。このファンクションは、プロシージャDMLハンドラ、DDLハンドラまたはエラー・ハンドラでのみ使用できます。

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

構文

MEMBER FUNCTION GET_COMMIT_TIME() 
RETURN DATE;

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

DBMS_STREAMS.COMPATIBLE_11_2

11.2.0

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

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

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

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

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

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

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

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

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

注意:

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

参照:

構文

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;

パラメータ

表286-36 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_POSITIONメンバー・ファンクション

現在のLCRの位置を取得します。位置によって、各LCRが一意に識別されます。位置は、各トランザクション内および複数のトランザクション全体で厳密に増加します。

LCR位置は、XStream構成で一般的に使用されます。

構文

MEMBER FUNCTION GET_POSITION() 
RETURN RAW;

注意:

XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

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

LCRのルート名であるCDB内のルートのグローバル名を取得します。

構文

MEMBER FUNCTION GET_ROOT_NAME() 
RETURN VARCHAR2;

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

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

構文

MEMBER FUNCTION GET_SCN() 
RETURN NUMBER;

GET_SCN_FROM_POSITION静的ファンクション

XStreamアウトバウンド・サーバーによって生成される入力位置からシステム変更番号(SCN)を取得します。

構文

STATIC FUNCTION GET_SCN_FROM_POSITION(
   position  IN  RAW) 
RETURN NUMBER;

パラメータ

表286-37 GET_SCN_FROM_POSITIONファンクションのパラメータ

パラメータ 説明

position

位置。

位置を取得するには、GET_POSITIONメンバー・ファンクションを使用するか、DBA_XSTREAM_OUTBOUND_PROGRESSデータ・ディクショナリ・ビューを問い合せます。

注意:

XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。Oracle DatabaseのXStreamガイドを参照してください。

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_THREAD_NUMBERメンバー・ファンクション

LCRにカプセル化されている変更を行ったデータベース・インスタンスのスレッド番号を取得します。通常、スレッド番号はOracle Real Application Clusters構成で使用されます。

構文

MEMBER FUNCTION GET_THREAD_NUMBER()
RETURN NUMBER;

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);

パラメータ

表286-38 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);

パラメータ

表286-39 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);

パラメータ

表286-40 SET_OBJECT_NAMEプロシージャのパラメータ

パラメータ 説明

object_name

オブジェクトの名前。

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

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

構文

MEMBER PROCEDURE SET_OBJECT_OWNER(
   object_owner  IN  VARCHAR2);

パラメータ

表286-41 SET_OBJECT_OWNERプロシージャのパラメータ

パラメータ 説明

object_owner

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

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

CDBのルートのグローバル名を設定します。この設定値はLCRのルート名です。

構文

MEMBER PROCEDURE SET_ROOT_NAME(
   root_name  IN  VARCHAR2);

パラメータ

表286-42 SET_ROOT_NAMEプロシージャのパラメータ

パラメータ 説明

root_name

ルートのグローバル名。

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

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

構文

MEMBER PROCEDURE SET_SOURCE_DATABASE_NAME(
   source_database_name  IN  VARCHAR2);

パラメータ

表286-43 SET_SOURCE_DATABASE_NAMEプロシージャのパラメータ

パラメータ 説明

source_database_name

変更対象のソース・データベース。

ドメイン名を指定しない場合、このプロシージャはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインがEXAMPLE.COMの場合にDBS1を指定すると、このプロシージャは自動的にDBS1.EXAMPLE.COMを指定します。このパラメータは、NULL以外の値に設定してください。

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

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

参照:

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

構文

MEMBER PROCEDURE SET_TAG(
   tag  IN  RAW);

パラメータ

表286-44 SET_TAGプロシージャのパラメータ

パラメータ 説明

tag

LCRのバイナリ・タグ。

タグ値の最大サイズは2KBです。

286.3.4 LCR$_ROW_LISTタイプ

このタイプは、表内の行の列値リストを識別します。

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

構文

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

286.3.5 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);
/

属性

表286-45 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;