289 論理変更レコードのタイプ
この章では、論理変更レコード(LCR)のタイプについて説明します。
この章には次のトピックが含まれます:
289.1 論理変更レコードのタイプの概要
Oracle Streamsにおける論理変更レコード(LCR)とは、データベースに対する変更情報が格納されたメッセージ・ペイロードのことです。この変更には、データに対する変更(データ操作言語(DML)の変更)とデータベース・オブジェクトに対する変更(データ定義言語(DDL)の変更)とがあります。
Oracle Streamsを使用すると、取得プロセスによりLCRの形式で取得した変更がキューにエンキューされます。このLCRは、あるデータベースのキューから別のデータベースのキューに伝播できます。最後に、適用プロセスによりLCRを接続先データベースに適用できます。LCRは、手動で作成、エンキューおよびデキューすることもできます。
参照:
LCRの詳細は、『Oracle Streams概要および管理』を参照してください。
289.3 論理変更レコードのタイプの要約
この表は、論理変更レコードのタイプを示し、簡単に説明しています。
表289-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
289.3.1 LCR$_DDL_RECORDタイプ
このタイプは、データベース・オブジェクトに対するデータ定義言語(DDL)の変更を示します。
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コンストラクタ・ファンクションのパラメータ
表289-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サブプログラムの要約
表289-3 LCR$_DDL_RECORDタイプのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。 |
|
|
元表(依存表)名を取得します。 |
|
|
元表(依存表)の所有者を取得します。 |
|
|
デフォルトのスキーマ(ユーザー)名を取得します。 |
|
|
|
|
|
DDL文が実行されたエディションの名前を取得します。 |
|
|
ログオン・ユーザー名を取得します。 |
|
|
DDLに含まれるオブジェクトのタイプを取得します。 |
|
|
元表(依存表)名を設定します。 |
|
|
元表(依存表)の所有者を設定します。 |
|
|
デフォルトのスキーマ(ユーザー)名を設定します。 |
|
|
DDLテキストを設定します。 |
|
|
DDL文が実行されたエディションの名前を設定します。 |
|
|
ログオン・ユーザー名を設定します。 |
|
|
オブジェクト・タイプを設定します。 |
|
|
共通のサブプログラム |
|
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);
パラメータ
表289-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);
パラメータ
表289-5 SET_BASE_TABLE_NAMEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
元表の名前。 |
SET_BASE_TABLE_OWNERメンバー・プロシージャ
元表(依存表)の所有者を設定します。
構文
MEMBER PROCEDURE SET_BASE_TABLE_OWNER( base_table_owner IN VARCHAR2);
パラメータ
表289-6 SET_BASE_TABLE_OWNERプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ベース表の所有者の名前 |
SET_CURRENT_SCHEMAメンバー・プロシージャ
デフォルトのスキーマ(ユーザー)名を設定します。
構文
MEMBER PROCEDURE SET_CURRENT_SCHEMA( current_schema IN VARCHAR2);
パラメータ
表289-7 SET_CURRENT_SCHEMAプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
現行スキーマとして設定するスキーマの名前。 このパラメータは、 |
SET_DDL_TEXTメンバー・プロシージャ
DDLテキストを設定します。
構文
MEMBER PROCEDURE SET_DDL_TEXT( ddl_text IN CLOB);
パラメータ
表289-8 SET_DDL_TEXTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
DDLテキスト。 このパラメータは、 |
構文
MEMBER PROCEDURE SET_EDITION_NAME( edition_name IN VARCHAR2);
パラメータ
表289-9 SET_EDITION_NAMEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
エディションの名前。 |
SET_LOGON_USERメンバー・プロシージャ
ログオン・ユーザー名を設定します。
構文
MEMBER PROCEDURE SET_LOGON_USER( logon_user IN VARCHAR2);
パラメータ
表289-10 SET_LOGON_USERプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ログオン・ユーザーとして設定するスキーマの名前。 |
SET_OBJECT_TYPEメンバー・プロシージャ
オブジェクト・タイプを設定します。
構文
MEMBER PROCEDURE SET_OBJECT_TYPE( object_type IN VARCHAR2);
パラメータ
表289-11 SET_OBJECT_TYPEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクト・タイプ。 次に示すオブジェクト型が有効です。 CLUSTER FUNCTION INDEX LINK OUTLINE PACKAGE PACKAGE BODY PROCEDURE SEQUENCE SYNONYM TABLE TRIGGER TYPE USER VIEW
|
289.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コンストラクタ・ファンクションのパラメータ
表289-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サブプログラムの要約
表289-13 LCR$_ROW_RECORDタイプのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
指定した値タイプに応じて、古い値または新しい値として値を列に追加します。 |
|
|
行LCRの |
|
|
指定した値タイプに応じて、古い値または新しい値(あるいはその両方)を指定の列から削除します。 |
|
|
現行ユーザーのセキュリティ・ドメイン下でLCRを実行します。 |
|
|
列のLOB情報を取得します。 |
|
|
指定した列のLOBオフセットを取得します。 |
|
|
|
|
|
列の |
|
|
LCRにカプセル化されている変更に対するSQL文を取得します。 |
|
|
指定した値タイプに応じて、指定の列の古い値または新しい値を取得します。 |
|
|
指定した値タイプに応じて、古い値または新しい値のリストを取得します。 |
|
|
行LCRにカプセル化されている変更に対する |
|
|
指定した列のXML情報を取得します。 |
|
|
内部使用専用として予約されています。 |
|
|
列のリストを行LCRに保持します。 |
|
|
LCRの列名を変更します。 |
|
|
列の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またはLONGRAW列を追加することはできません。
構文
MEMBER PROCEDURE ADD_COLUMN( value_type IN VARCHAR2, column_name IN VARCHAR2, column_value IN ANYDATA);
パラメータ
表289-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 '*');
パラメータ
表289-15 DELETE_COLUMNプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列名。 LCRに列が存在しない場合は、エラーが発生します。 |
|
|
列から削除する値のタイプ。 列の古い値を削除するには、 |
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_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);
パラメータ
表289-16 EXECUTEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
このパラメータが指定されていない場合または |
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;
パラメータ
表289-17 GET_LOB_INFORMATIONファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列に戻す値のタイプ。 |
|
|
列の名前。 |
|
|
|
GET_LOB_OFFSETメンバー・ファンクション
指定した列のLOBオフセットを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で取得します。次のすべての条件を満たす場合のみ、NULL以外の値を戻します。
-
列値が存在する場合。
-
列値が表外のLOBの場合。つまり、情報が
DBMS_LCR.LAST_LOB_CHUNKまたはDBMS_LCR.LOB_CHUNKの場合。 -
コマンド・タイプが
LOBERASEまたはLOBWRITEの場合。
これらの条件を満たさない場合は、NULLを戻します。
構文
GET_LOB_OFFSET( value_type IN VARCHAR2, column_name IN VARCHAR2) RETURN NUMBER;
パラメータ
表289-18 GET_LOB_OFFSETファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列に戻す値のタイプ。 現在は、 |
|
|
LOB列の名前。 |
GET_LOB_OPERATION_SIZEメンバー・ファンクション
LOB列の操作サイズを、文字数(CLOB列の場合)またはバイト数(BLOB列の場合)で取得します。次のすべての条件を満たす場合のみ、NULL以外の値を戻します。
-
列値が存在する場合。
-
列値が表外のLOBの場合。
-
コマンド・タイプが
LOBERASEまたはLOBTRIMの場合。 -
情報が
DBMS_LCR.LAST_LOB_CHUNKの場合。
これらの条件を満たさない場合は、NULLを戻します。
構文
MEMBER FUNCTION GET_LOB_OPERATION_SIZE( value_type IN VARCHAR2, column_name IN VARCHAR2) RETURN NUMBER,
パラメータ
表289-19 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;
パラメータ
表289-20 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 ':');
参照:
パラメータ
表289-21 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;
パラメータ
表289-22 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;
パラメータ
表289-23 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 ':');
パラメータ
表289-24 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;
パラメータ
表289-25 GET_XML_INFORMATIONファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
列名。 |
IS_STATEMENT_LCRメンバー・ファンクション
このファンクションは内部使用専用として予約されています。
KEEP_COLUMNSメンバー・プロシージャ
このプロシージャは、列のリストを行LCRに保持します。リストに含まれていない列は、行LCRから削除されます。
構文
MEMBER PROCEDURE KEEP_COLUMNS( column_list IN VARCHAR2, value_type IN VARCHAR2 DEFAULT '*');
パラメータ
表289-26 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 '*');
パラメータ
表289-27 RENAME_COLUMNプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
既存の列名。 |
|
|
新しい列名。 指定した名前の列がすでに存在する場合は、エラーが発生します。 |
|
|
列名を変更する値のタイプ。 古い値の列名を変更するには、 新しい値の列名を変更するには、
|
SET_LOB_INFORMATIONメンバー・プロシージャ
列にLOB情報を設定します。
ノート:
ルールベースの変換、プロシージャDMLハンドラまたはエラー・ハンドラで行LCRを処理する場合は、このメンバー・プロシージャを使用できません。
構文
MEMBER PROCEDURE SET_LOB_INFORMATION( value_type IN VARCHAR2, column_name IN VARCHAR2, lob_information IN NUMBER);
パラメータ
表289-28 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);
パラメータ
表289-29 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);
パラメータ
表289-30 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またはLONGRAW列に対してこのメンバー・プロシージャを使用することはできません。
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);
パラメータ
表289-31 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またはLONGRAW列に対してこのメンバー・プロシージャを使用することはできません。
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);
パラメータ
表289-32 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);
パラメータ
表289-33 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;
|
289.3.3 LCR$_DDL_RECORDとLCR$_ROW_RECORDに共通するサブプログラム
次に、LCR$_DDL_RECORDタイプとLCR$_ROW_RECORDタイプに共通するファンクションとプロシージャを示します。
表289-34 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;
パラメータ
表289-35 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メンバー・ファンクションとともに使用できます。
ノート:
DBA_STREAMS_UNSUPPORTEDデータ・ディクショナリ・ビューを問い合せることにより、データベース内のOracle Streamsでサポートされていないデータベース・オブジェクトを確認できます。
参照:
-
Oracle Streamsでサポートされていない変更を破棄するルールの例は、『Oracle Streams概要および管理』を参照してください。
-
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;
パラメータ
表289-36 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;
パラメータ
表289-37 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変更の元のソース・データベースを判断するためにこのタグを使用できます。
参照:
タグの詳細は、『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のコマンド・タイプを設定します。指定したコマンド・タイプを解釈できない場合は、エラーが発生します。たとえば、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);
パラメータ
表289-38 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);
パラメータ
表289-39 SET_EXTRA_ATTRIBUTEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
設定する追加属性の名前。 有効な名前は次のとおりです。
指定された 関連項目: 現行のユーザーの詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。 |
|
|
指定された追加属性に設定する値。
|
SET_OBJECT_NAMEメンバー・プロシージャ
LCRによって変更されるオブジェクトの名前を設定します。
構文
MEMBER PROCEDURE SET_OBJECT_NAME( object_name IN VARCHAR2);
パラメータ
表289-40 SET_OBJECT_NAMEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクトの名前。 |
SET_OBJECT_OWNERメンバー・プロシージャ
LCRによって変更されるオブジェクトの所有者を設定します。
構文
MEMBER PROCEDURE SET_OBJECT_OWNER( object_owner IN VARCHAR2);
パラメータ
表289-41 SET_OBJECT_OWNERプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
オブジェクトを含むスキーマ。 |
SET_ROOT_NAMEメンバー・プロシージャ
CDBのルートのグローバル名を設定します。この設定値はLCRのルート名です。
構文
MEMBER PROCEDURE SET_ROOT_NAME( root_name IN VARCHAR2);
パラメータ
表289-42 SET_ROOT_NAMEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ルートのグローバル名。 |
SET_SOURCE_DATABASE_NAMEメンバー・プロシージャ
LCRによって変更されるオブジェクトのソース・データベース名を設定します。
構文
MEMBER PROCEDURE SET_SOURCE_DATABASE_NAME( source_database_name IN VARCHAR2);
パラメータ
表289-43 SET_SOURCE_DATABASE_NAMEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
変更対象のソース・データベース。 ドメイン名を指定しない場合、このプロシージャはローカル・ドメインをデータベース名に自動的に追加します。たとえば、ローカル・ドメインが |
SET_TAGメンバー・プロシージャ
LCRにタグを設定します。LCRのタグとは、LCRの追跡を有効にするバイナリ・タグです。たとえば、適用による転送を使用する場合は、変更の元のソース・データベースを判断するためにこのタグを使用できます。
参照:
タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
構文
MEMBER PROCEDURE SET_TAG( tag IN RAW);
パラメータ
表289-44 SET_TAGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
LCRのバイナリ・タグ。 タグ値の最大サイズは2KBです。 |
289.3.4 LCR$_ROW_LISTタイプ
このタイプは、表内の行の列値リストを識別します。
LCR$_ROW_UNITタイプを使用し、LCR$_ROW_RECORDタイプで使用されます。
構文
CREATE TYPE SYS.LCR$_ROW_LIST AS TABLE OF SYS.LCR$_ROW_UNIT /
289.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); /
属性
表289-45 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に関する
|
|
|
列の
|