301 論理変更レコードのタイプ
この章では、論理変更レコード(LCR)のタイプについて説明します。
この章には次のトピックが含まれます:
301.1 論理変更レコードのタイプの概要
Replication (Oracle GoldenGateおよびXStream)では、論理変更レコード(LCR)が、データベースに対する変更に関する情報を格納するメッセージ・ペイロードになります。この変更には、データに対する変更(データ操作言語(DML)の変更)とデータベース・オブジェクトに対する変更(データ定義言語(DDL)の変更)とがあります。
Replication (Oracle GoldenGateおよびXStream)の使用時には、取得プロセスがLCRの形式で変更を取得して、キューにエンキューします。最後に、適用プロセスによりLCRを接続先データベースに適用できます。LCRは、手動で作成、エンキューおよびデキューすることもできます。
301.3 論理変更レコードのタイプの要約
この表は、論理変更レコードのタイプを示し、簡単に説明しています。
表301-1 論理変更レコード(LCR)のタイプ
タイプ | 説明 |
---|---|
データベース・オブジェクトに対するデータ定義言語(DDL)の変更を表します。 |
|
データベース・オブジェクトに対するデータ操作言語(DML)の変更を表します。 |
|
表内の行の列値リストを識別します。 |
|
行内の列値を識別します。 |
これらの論理変更レコード(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
301.3.1 LCR$_DDL_RECORDタイプ
このタイプは、データベース・オブジェクトに対するデータ定義言語(DDL)の変更を示します。
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
DDL論理変更レコード(DDL LCR)を作成または変更する場合は、ddl_text
とbase_table_name
、base_table_owner
、object_type
、object_owner
、object_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コンストラクタ・ファンクションのパラメータ
表301-2 LCR$_DDL_RECORDコンストラクタ・ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
DDL文が発生したデータベース。 LCRがマルチテナント・コンテナ・データベース(CDB)で発生した場合、DDL変更が発生したコンテナのグローバル名がこのフィールドによって指定されます。 ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが |
|
DDL文で実行されるコマンドのタイプ。 このパラメータは、 関連項目: コマンド・タイプの完全なリストは、『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 マテリアライズド・ビューのコマンド・タイプのスナップショットもサポートされていません。 |
|
DDL文が実行されたオブジェクトを所有するユーザー。 |
|
DDL文が実行されたデータベース・オブジェクト。 |
|
DDL文が実行されたオブジェクトのタイプ。 次に示すオブジェクト型が有効です。 CLUSTER FUNCTION INDEX LINK OUTLINE PACKAGE PACKAGE BODY PROCEDURE SEQUENCE SYNONYM TABLE TRIGGER TYPE USER VIEW
|
|
DDL文のテキスト。 このパラメータは、 |
|
DDL文を実行したセッションのユーザー。 |
|
変更済データベース・オブジェクトに対するスキーマが、
このパラメータは、 |
|
DDL文が表に関連するDDLの場合( |
|
DDL文が表に関連するDDLの場合( |
|
LCRの追跡を有効にするバイナリ・タグ。 たとえば、適用による転送を使用する場合は、DDL文の元のソース・データベースを判断するためにこのタグを使用できます。 |
|
トランザクションの識別子。 |
|
取得したLCRの変更レコードがREDOログに書き込まれた時点のSCN。 このSCNの値は、ユーザー作成のLCRに対しては無効です。 |
|
LCRの位置。 LCR位置は、XStream構成で一般的に使用されます。XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。 |
|
DDL文が実行されたエディションの名前。 |
|
LCRがCDBと関連付けられている場合、このフィールドでは、CDBのルートのグローバル名が指定されます。 LCRがCDB以外と関連付けられている場合、このフィールドは |
LCR$_DDL_RECORDサブプログラムの要約
表301-3 LCR$_DDL_RECORDタイプのサブプログラム
サブプログラム | 説明 |
---|---|
現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。 |
|
元表(依存表)名を取得します。 |
|
元表(依存表)の所有者を取得します。 |
|
デフォルトのスキーマ(ユーザー)名を取得します。 |
|
|
|
DDL文が実行されたエディションの名前を取得します。 |
|
ログオン・ユーザー名を取得します。 |
|
DDLに含まれるオブジェクトのタイプを取得します。 |
|
元表(依存表)名を設定します。 |
|
元表(依存表)の所有者を設定します。 |
|
デフォルトのスキーマ(ユーザー)名を設定します。 |
|
DDLテキストを設定します。 |
|
DDL文が実行されたエディションの名前を設定します。 |
|
ログオン・ユーザー名を設定します。 |
|
オブジェクト・タイプを設定します。 |
|
共通のサブプログラム |
|
EXECUTEメンバー・プロシージャ
現行ユーザーのセキュリティ・ドメイン下でDDL LCRを実行します。このプロシージャを使用してLCRが適用された場合、適用ハンドラは実行されません。
構文
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);
パラメータ
表301-4 GET_DDL_TEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
DDL LCRの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);
パラメータ
表301-5 SET_BASE_TABLE_NAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
元表の名前。 |
SET_BASE_TABLE_OWNERメンバー・プロシージャ
元表(依存表)の所有者を設定します。
構文
MEMBER PROCEDURE SET_BASE_TABLE_OWNER( base_table_owner IN VARCHAR2);
パラメータ
表301-6 SET_BASE_TABLE_OWNERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ベース表の所有者の名前 |
SET_CURRENT_SCHEMAメンバー・プロシージャ
デフォルトのスキーマ(ユーザー)名を設定します。
構文
MEMBER PROCEDURE SET_CURRENT_SCHEMA( current_schema IN VARCHAR2);
パラメータ
表301-7 SET_CURRENT_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
現行スキーマとして設定するスキーマの名前。 このパラメータは、 |
SET_DDL_TEXTメンバー・プロシージャ
DDLテキストを設定します。
構文
MEMBER PROCEDURE SET_DDL_TEXT( ddl_text IN CLOB);
パラメータ
表301-8 SET_DDL_TEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
DDLテキスト。 このパラメータは、 |
構文
MEMBER PROCEDURE SET_EDITION_NAME( edition_name IN VARCHAR2);
パラメータ
表301-9 SET_EDITION_NAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
エディションの名前。 |
SET_LOGON_USERメンバー・プロシージャ
ログオン・ユーザー名を設定します。
構文
MEMBER PROCEDURE SET_LOGON_USER( logon_user IN VARCHAR2);
パラメータ
表301-10 SET_LOGON_USERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ログオン・ユーザーとして設定するスキーマの名前。 |
SET_OBJECT_TYPEメンバー・プロシージャ
オブジェクト・タイプを設定します。
構文
MEMBER PROCEDURE SET_OBJECT_TYPE( object_type IN VARCHAR2);
パラメータ
表301-11 SET_OBJECT_TYPEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクト・タイプ。 次に示すオブジェクト型が有効です。 CLUSTER FUNCTION INDEX LINK OUTLINE PACKAGE PACKAGE BODY PROCEDURE SEQUENCE SYNONYM TABLE TRIGGER TYPE USER VIEW
|
301.3.2 LCR$_ROW_RECORDタイプ
このタイプは、表内の行に対するデータ操作言語(DML)の変更を表します。このタイプでは、LCR$_ROW_LIST
タイプを使用します。
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、"データベース"と"非CDB"は、文脈に応じてCDBまたはPDBを指しています。アップグレードなどでは、"非CDB"が以前のリリースの非CDBを指している場合もあります。
行論理変更レコード(行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コンストラクタ・ファンクションのパラメータ
表301-12 LCR$_ROW_RECORDコンストラクタ・ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
行の変更が発生したデータベース。 LCRがCDBで発生した場合、このフィールドでは、行変更が発生したコンテナのグローバル名が指定されます。 ドメイン名を指定しない場合、このファンクションはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが |
|
DML文で実行されるコマンドのタイプ。 このパラメータは、 有効な値は次のとおりです。 INSERT UPDATE DELETE LOB ERASE LOB WRITE LOB TRIM
|
|
行の変更が発生した表を所有するユーザー。 このパラメータは、 |
|
DML文が実行された表。 このパラメータは、 |
|
LCRの追跡を有効にするバイナリ・タグ。 たとえば、適用による転送を使用する場合は、DML変更の元のソース・データベースを判断するためにこのタグを使用できます。 |
|
トランザクションの識別子。 |
|
変更レコードがREDOログに書き込まれた時点のSCN。 このSCNの値は、ユーザー作成のLCRに対しては無効です。 |
|
DML変更前の行の列値。 DML文が |
|
DML変更後の行の列値。 DML文が LCRによってLOB操作が反映される場合は、補足的にログされた列および関連するLOB情報がこのパラメータに含まれます。 |
|
LCRの位置。 LCR位置は、XStream構成で一般的に使用されます。XStreamを使用するには、Oracle GoldenGate製品のライセンスを購入する必要があります。 |
|
このパラメータは内部使用専用として予約されています。 |
|
このパラメータは内部使用専用として予約されています。 |
|
このパラメータは内部使用専用として予約されています。 |
|
LCRがCDBと関連付けられている場合、このフィールドでは、CDBのルートのグローバル名が指定されます。 LCRがCDB以外と関連付けられている場合、このフィールドは |
LCR$_ROW_RECORDサブプログラムの要約
表301-13 LCR$_ROW_RECORDタイプのサブプログラム
サブプログラム | 説明 |
---|---|
指定した値タイプに応じて、古い値または新しい値として値を列に追加します。 |
|
行LCRの |
|
指定した値タイプに応じて、古い値または新しい値(あるいはその両方)を指定の列から削除します。 |
|
現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。 |
|
JSON情報を取得します。 | |
列のLOB情報を取得します。 |
|
指定した列のLOBオフセットを取得します。 |
|
|
|
列の |
|
LCRにカプセル化されている変更に対するSQL文を取得します。 |
|
指定した値タイプに応じて、指定の列の古い値または新しい値を取得します。 |
|
指定した値タイプに応じて、古い値または新しい値のリストを取得します。 |
|
行LCRにカプセル化されている変更に対する |
|
指定した列のXML情報を取得します。 |
|
内部使用専用として予約されています。 |
|
列のリストを行LCRに保持します。 |
|
LCRの列名を変更します。 |
|
列のJSON情報を設定します。 | |
列のLOB情報を設定します。 |
|
指定した列のLOBオフセットを設定します。 |
|
LOB列の操作サイズを設定します。 |
|
内部使用専用として予約されています。 |
|
指定した列の値を上書きします。 |
|
指定した値タイプに応じて、LCRの既存の古い値または新しい値を置換します。 |
|
列のXML情報を設定します。 |
|
共通のサブプログラム |
SYS.LCR$_ROW_RECORDタイプと |
ADD_COLUMNメンバー・プロシージャ
指定した値タイプに応じて、古い値または新しい値として値を列に追加します。列に同じタイプの値がすでに存在する場合は、エラーが発生します。
ノート:
すでに存在する列値を設定するには、SET_VALUE
を実行します。
LOB列に関する注意事項
プロシージャDMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobs
パラメータがTRUE
に設定されている)場合は、ハンドラ・プロシージャのこのメンバー・プロシージャを使用して、LOB列を行LCRに追加します。ハンドラのassemble_lobs
がFALSE
に設定されている場合は、このメンバー・プロシージャを使用して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);
パラメータ
表301-14 ADD_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列に追加する値のタイプ。 列に古い値を追加するには、 |
|
列名。 この名前は検証されません。指定した名前が無効な場合は、LCRのアプリケーション中にエラーが発生する可能性があります。 |
|
列値。
LOBアセンブリを使用するプロシージャDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOBロケータを指定できます。
|
CONVERT_LONG_TO_LOB_CHUNKメンバー・プロシージャ
行LCRのLONG
データをCLOB
に変換するか、または行LCRのLONG
RAW
データをBLOB
に変換します。
このプロシージャは、行LCRの操作コードをLONG
WRITE
からLOB
WRITE
に変更できます。
このメンバー・プロシージャは、ルールベースの変換で使用できます。
このメンバー・プロシージャには、次の制限事項が適用されます。
-
このメンバー・プロシージャは、適用ハンドラでは使用できません。
-
LONG
データは、操作コードのINSERT
、UPDATE
または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 '*');
パラメータ
表301-15 DELETE_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列名。 LCRに列が存在しない場合は、エラーが発生します。 |
|
列から削除する値のタイプ。 列の古い値を削除するには、 |
EXECUTEメンバー・プロシージャ
現行ユーザーのセキュリティ・ドメイン下で行LCRを実行します。このプロシージャを使用してLCRが適用された場合、LCRに対して実行される適用ハンドラは実行されません。
このメンバー・プロシージャは、次のいずれかの状況で行LCRに対して実行できます。
-
LCRが適用ハンドラで処理される場合。
-
LCRが、
LCR$_ROW_RECORD
コンストラクタ・ファンクションを使用して構成されていて、エンキューされていない場合。 -
LCRがエラー・キュー内にある場合。
ノート:
カスタム・ルールベースの変換では、行LCRに対してこのメンバー・プロシージャを実行しないでください。実行すると、行LCRがトランザクション・コンテキスト外で実行される場合があります。
LOB列に関する注意事項
プロシージャDMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobs
パラメータがTRUE
に設定されている)場合、このメンバー・プロシージャはアセンブルされた行LCRを実行します。アセンブルされた行LCRは、LOB値をLOBロケータまたはNULL
で表します。
ハンドラのassemble_lobs
がFALSE
に設定されている場合、このメンバー・プロシージャはアセンブルされていない行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);
パラメータ
表301-16 EXECUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このパラメータが指定されていない場合または |
GET_JSON_INFORMATIONメンバー・ファンクション
JSON情報を取得します。
この戻り値は、次のどれかになります。
DBMS_LCR.NOT_OSON CONSTANT NUMBER := 1; DBMS_LCR.OSON_DOC CONSTANT NUMBER := 2;
ノート:
OSON
は、JSON列のOracleバイナリ形式です。
これらは、OSON
データを含まない列または完全なOSON
ドキュメントを表します。
構文
MEMBER FUNCTION GET_JSON_INFORMATION( column_name IN VARCHAR2) RETURN NUMBER;
パラメータ
表301-17 GET_JSON_INFORMATIONメンバー・ファンクションのパラメータ
パラメータ | 説明 |
---|---|
column_name |
JSON 情報を取得する列の名前。
|
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;
パラメータ
表301-18 GET_LOB_INFORMATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列に戻す値のタイプ。 |
|
列の名前。 |
|
|
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;
パラメータ
表301-19 GET_LOB_OFFSETファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列に戻す値のタイプ。 現在は、 |
|
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,
パラメータ
表301-20 GET_LOB_OPERATION_SIZEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列に戻す値のタイプ。 現在は、 |
|
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;
パラメータ
表301-21 GET_LONG_INFORMATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列に戻す値のタイプ。 |
|
列の名前。 |
|
|
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 ':');
参照:
パラメータ
表301-22 GET_ROW_TEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
LCRにカプセル化されている変更に対するSQL文。 |
|
バインド変数の順序でのバインド変数の値。 |
|
バインド変数の構文。 有効な値は次のいずれかです。
|
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;
パラメータ
表301-23 GET_VALUEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列に戻す値のタイプ。 列の古い値を取得するには、 |
|
列名。 列が存在し、その値が |
|
|
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;
パラメータ
表301-24 GET_VALUESファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
戻す値のタイプ。 古い値のリストを戻す場合は、 |
|
|
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 ':');
参照:
パラメータ
表301-25 GET_WHERE_CLAUSEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
LCRにカプセル化されている変更に対するSQL文の |
|
バインド変数の順序でのバインド変数の値。 |
|
バインド変数の構文。 有効な値は次のいずれかです。
|
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;
パラメータ
表301-26 GET_XML_INFORMATIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
列名。 |
IS_STATEMENT_LCRメンバー・ファンクション
このファンクションは内部使用専用として予約されています。
KEEP_COLUMNSメンバー・プロシージャ
このプロシージャは、列のリストを行LCRに保持します。リストに含まれていない列は、行LCRから削除されます。
構文
MEMBER PROCEDURE KEEP_COLUMNS( column_list IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*');
パラメータ
表301-27 KEEP_COLUMNSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
行LCRで保持される列の名前。
|
|
列を保持する値のタイプ。 列の古い値を保持するには、 列の新しい値を保持するには、
|
RENAME_COLUMNメンバー・プロシージャ
行LCRの列名を変更します。
構文
MEMBER PROCEDURE RENAME_COLUMN( from_column_name IN VARCHAR2, to_column_name IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*');
パラメータ
表301-28 RENAME_COLUMNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存の列名。 |
|
新しい列名。 指定した名前の列がすでに存在する場合は、エラーが発生します。 |
|
列名を変更する値のタイプ。 古い値の列名を変更するには、 新しい値の列名を変更するには、
|
SET_JSON_INFORMATIONメンバー・プロシージャ
列のJSON情報を設定します。
構文
MEMBER PROCEDURE SET_JSON_INFORMATION( self IN OUT NOCOPY LCR$_ROW_RECORD, value_type IN VARCHAR2, column_name IN VARCHAR2, json_information IN NUMBER);
パラメータ
表301-29 SET_JSON_INFORMATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
self |
|
value_type |
列に設定する値のタイプ。 サポートされる値は次のとおりです。
|
column_name |
列の名前。LCRに列が存在しない場合は、例外が発生します。 |
json_information |
サポートされる値は次のとおりです。
|
SET_LOB_INFORMATIONメンバー・プロシージャ
列にLOB情報を設定します。
ノート:
ルールベースの変換、プロシージャDMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用できません。
構文
MEMBER PROCEDURE SET_LOB_INFORMATION( value_type IN VARCHAR2, column_name IN VARCHAR2, lob_information IN NUMBER);
パラメータ
表301-30 SET_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; |
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);
パラメータ
表301-31 SET_LOB_OFFSETプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列に設定する値のタイプ。 現在は、 |
|
列名。 LCRに列値が存在しない場合は、エラーが発生します。 |
|
LOBオフセット番号。 有効な値は、 |
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);
パラメータ
表301-32 SET_LOB_OPERATION_SIZEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列に設定する値のタイプ。 現在は、 |
|
LOB列の名前。 LCRに列値が存在しない場合は、例外が発生します。 |
|
LOBに関する それ以外の場合は、 |
SET_ROW_TEXTメンバー・プロシージャ
このプロシージャは内部使用専用として予約されています。
SET_VALUEメンバー・プロシージャ
指定した列の古い値または新しい値を上書きします。
列の古い値を上書きする理由の1つは、競合によって発生したエラーを解決するためです。
ノート:
行LCRに列を追加するには、ADD_COLUMN
を実行します。
LOB列に関する注意事項
プロシージャDMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理し、ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobs
パラメータがTRUE
に設定されている)場合は、行LCR内のLOB列に対して、ハンドラ・プロシージャのこのメンバー・プロシージャを使用できます。ハンドラのassemble_lobs
がFALSE
に設定されている場合は、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);
パラメータ
表301-33 SET_VALUEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
設定する値のタイプ。 列の古い値を設定するには、 |
|
列名。 指定した |
|
列の新しい値。
LOBアセンブリを使用するプロシージャDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOB列にLOBロケータを指定します。 |
SET_VALUESメンバー・プロシージャ
指定した値タイプに応じて、LCRの古い値または新しい値をすべて置換します。
LOB列に関する注意事項
プロシージャDMLハンドラまたはエラー・ハンドラでLOB列を含む行LCRを処理する場合、このプロシージャを使用できます。ハンドラでLOBアセンブリが使用されている(ハンドラのassemble_lobs
パラメータがTRUE
に設定されている)場合は、ハンドラ・プロシージャのこのメンバー・プロシージャを使用できます。ハンドラのassemble_lobs
がFALSE
に設定されている場合は、行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);
パラメータ
表301-34 SET_VALUESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
置換する値のタイプ。 古い値を置換するには、 |
|
既存のリストを置換するLOV。 すべての値を削除するには、 LOBアセンブリを使用するプロシージャDMLハンドラまたはエラー・ハンドラでメンバー・プロシージャが使用されている場合は、LOB列に1つ以上のLOBロケータを指定します。 |
SET_XML_INFORMATIONメンバー・プロシージャ
列のXML情報を設定します。
構文
MEMBER PROCEDURE SET_XML_INFORMATION( column_name IN VARCHAR2, xml_information IN NUMBER);
パラメータ
表301-35 SET_XML_INFORMATIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
列の名前。 LCRに列値が存在しない場合は、例外が発生します。 |
|
次のいずれかの値を指定します。 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;
|
301.3.3 LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム
次に、LCR$_DDL_RECORD
タイプとLCR$_ROW_RECORD
タイプに共通するファンクションとプロシージャを示します。
表301-36 DDL LCRタイプと行LCRタイプに共通するサブプログラムの要約
サブプログラム | 説明 |
---|---|
論理変更レコード(LCR)のコマンド・タイプを取得します。 |
|
現在のLCRが属するトランザクションのコミットSCN(システム変更番号)を取得します。 |
|
XStreamアウトバウンド・サーバーによって生成される入力位置からトランザクションのコミットSCNを取得します。 |
|
現在のLCRが属するトランザクションのコミット・タイムを取得します。 |
|
LCRのサポートに最小限必要なデータベース互換性を取得します。 |
|
LCRに指定された追加属性の値を取得します。 |
|
LCRによって変更されるオブジェクトの名前を取得します。 |
|
LCRによって変更されるオブジェクトの所有者を取得します。 |
|
現在のLCRの位置を取得します。 |
|
CDBのルートのグローバル名を取得します。 |
|
LCRのSCNを取得します。 |
|
XStreamアウトバウンド・サーバーによって生成される入力位置からSCNを取得します。 |
|
ソース・データベース名を取得します。 |
|
取得プロセスで取得されたLCRの変更がソース・データベースのREDOログで生成された時刻、または永続LCRが作成された時刻を取得します。 |
|
LCRのタグを取得します。 |
|
LCRにカプセル化されている変更を行ったデータベース・インスタンスのスレッド番号を取得します。 |
|
LCRのトランザクション識別子を取得します。 |
|
LCRのタグが |
|
LCRのコマンド・タイプを設定します。 |
|
LCRに指定された追加属性に値を設定します。 |
|
LCRによって変更されるオブジェクトの名前を設定します。 |
|
LCRによって変更されるオブジェクトの所有者を設定します。 |
|
CDBのルートのグローバル名を設定します。 |
|
LCRによって変更されるオブジェクトのソース・データベース名を設定します。 |
|
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;
パラメータ
表301-37 GET_COMMIT_SCN_FROM_POSITIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
位置。 位置を取得するには、 |
ノート:
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初期化パラメータと同等のもの |
---|---|
|
|
|
|
|
|
|
|
|
|
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
メンバー・ファンクションとともに使用できます。
参照:
-
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;
パラメータ
表301-38 GET_EXTRA_ATTRIBUTEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
戻す追加属性の名前。 有効な名前は次のとおりです。
指定された 指定された追加属性に値が存在しない場合、このファンクションは 関連項目: 現行のユーザーの詳細は、『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;
パラメータ
表301-39 GET_SCN_FROM_POSITIONファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
位置。 位置を取得するには、 |
ノート:
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変更の元のソース・データベースを判断するためにこのタグを使用できます。
構文
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
を戻します。
構文
MEMBER FUNCTION IS_NULL_TAG() RETURN VARCHAR2;
SET_COMMAND_TYPEメンバー・プロシージャ
LCRのコマンド・タイプを設定します。指定したコマンド・タイプを解釈できない場合は、エラーが発生します。たとえば、INSERT
をGRANT
に変更すると、エラーが発生します。
参照:
-
「LCR$_DDL_RECORDコンストラクタ・ファンクションのパラメータ」の
command_type
パラメータの説明 -
LCR$_ROW_RECORDタイプのcommand_typeパラメータの説明
-
コマンド・タイプの完全なリストは、『Oracle Call Interfaceプログラマーズ・ガイド』の「SQLコマンド・コード」表を参照してください。
構文
MEMBER PROCEDURE SET_COMMAND_TYPE( command_type IN VARCHAR2);
パラメータ
表301-40 SET_COMMAND_TYPEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コマンド・タイプ。 このパラメータは、 |
SET_EXTRA_ATTRIBUTEメンバー・プロシージャ
LCRに指定された追加属性に値を設定します。DBMS_CAPTURE_ADM
パッケージのINCLUDE_EXTRA_ATTRIBUTE
プロシージャを使用して取得プロセスを実行すると、1つ以上の追加属性を取得できます。
構文
MEMBER PROCEDURE SET_EXTRA_ATTRIBUTE( attribute_name IN VARCHAR2, attribute_value IN ANYDATA);
パラメータ
表301-41 SET_EXTRA_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
設定する追加属性の名前。 有効な名前は次のとおりです。
指定された 関連項目: 現行のユーザーの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。 |
|
指定された追加属性に設定する値。
|
SET_OBJECT_NAMEメンバー・プロシージャ
LCRによって変更されるオブジェクトの名前を設定します。
構文
MEMBER PROCEDURE SET_OBJECT_NAME( object_name IN VARCHAR2);
パラメータ
表301-42 SET_OBJECT_NAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトの名前。 |
SET_OBJECT_OWNERメンバー・プロシージャ
LCRによって変更されるオブジェクトの所有者を設定します。
構文
MEMBER PROCEDURE SET_OBJECT_OWNER( object_owner IN VARCHAR2);
パラメータ
表301-43 SET_OBJECT_OWNERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトを含むスキーマ。 |
SET_ROOT_NAMEメンバー・プロシージャ
CDBのルートのグローバル名を設定します。この設定値はLCRのルート名です。
構文
MEMBER PROCEDURE SET_ROOT_NAME( root_name IN VARCHAR2);
パラメータ
表301-44 SET_ROOT_NAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ルートのグローバル名。 |
SET_SOURCE_DATABASE_NAMEメンバー・プロシージャ
LCRによって変更されるオブジェクトのソース・データベース名を設定します。
構文
MEMBER PROCEDURE SET_SOURCE_DATABASE_NAME( source_database_name IN VARCHAR2);
パラメータ
表301-45 SET_SOURCE_DATABASE_NAMEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
変更対象のソース・データベース。 ドメイン名を指定しない場合、このプロシージャはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが |
SET_TAGメンバー・プロシージャ
LCRにタグを設定します。LCRのタグとは、LCRの追跡を有効にするバイナリ・タグです。たとえば、適用による転送を使用する場合は、変更の元のソース・データベースを判断するためにこのタグを使用できます。
構文
MEMBER PROCEDURE SET_TAG( tag IN RAW);
パラメータ
表301-46 SET_TAGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
LCRのバイナリ・タグ。 タグ値の最大サイズは2KBです。 |
301.3.4 LCR$_ROW_LISTタイプ
このタイプは、表内の行の列値リストを識別します。
LCR$_ROW_UNIT
タイプを使用し、LCR$_ROW_RECORD
タイプで使用されます。
構文
CREATE TYPE SYS.LCR$_ROW_LIST AS TABLE OF SYS.LCR$_ROW_UNIT /
301.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); /
属性
表301-47 LCR$_ROW_UNITの属性
属性 | 説明 |
---|---|
|
列の名前。 |
|
列に含まれるデータ。 |
|
列の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に関する
|
|
列の
|