176 DBMS_TRANSACTION
DBMS_TRANSACTIONパッケージは、ストアド・プロシージャからSQLトランザクション文へのアクセスを提供します。
参照:
Oracle Database SQL言語リファレンス
176.2 DBMS_TRANSACTIONサブプログラムの要約
この表は、DBMS_TRANSACTION
サブプログラムを示し、簡単に説明しています。
表176-1 DBMS_TRANSACTIONパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
<a href="DBMS_TRANSACTION.html#GUID-37D50D22-C01D-42DB-8A7F-7DF0C677B092" title='This procedure is equivalent to the SQL statement: COMMIT FORCE <text>, |
次のSQL文と同じです。
|
現行のトランザクションのローカルな(インスタンスに対する)一意の識別子を戻します。 |
|
リカバリが完了する前に、リモート・データベースが破損したか、再作成された場合に、不完全なトランザクションをローカル・サイトから削除できます。 |
|
特定の混合出力トランザクションの情報を削除します。 |
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
次のSQL文と同じです。
|
|
トランザクションのDML操作を順序付ける、ローカルな(ローカル・トランザクションに対して)一意の正の整数を戻します。 |
|
次のSQL文と同じです。
|
176.2.1 ADVISE_COMMITプロシージャ
このプロシージャは、SQL文ALTER SESSION ADVISE COMMIT
と同じです。
構文
DBMS_TRANSACTION.ADVISE_COMMIT;
176.2.2 ADVISE_NOTHINGプロシージャ
このプロシージャは、SQL文ALTER SESSION ADVISE NOTHING
と同じです。
構文
DBMS_TRANSACTION.ADVISE_NOTHING;
176.2.3 ADVISE_ROLLBACKプロシージャ
このプロシージャは、SQL文ALTER SESSION ADVISE ROLLBACK
と同じです。
構文
DBMS_TRANSACTION.ADVISE_ROLLBACK;
176.2.4 COMMITプロシージャ
このプロシージャは、SQL文COMMIT
と同じです。
このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。
構文
DBMS_TRANSACTION.COMMIT;
176.2.5 COMMIT_COMMENTプロシージャ
このプロシージャは、SQL文COMMIT COMMENT <text>
と同じです。
構文
DBMS_TRANSACTION.COMMIT_COMMENT ( cmnt VARCHAR2);
パラメータ
表176-2 COMMIT_COMMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
このコミットに関連するコメント。 |
176.2.6 COMMIT_FORCEプロシージャ
このプロシージャは、SQL文COMMIT FORCE <text>, <number>"
と同じです。
構文
DBMS_TRANSACTION.COMMIT_FORCE ( xid VARCHAR2, scn VARCHAR2 DEFAULT NULL);
パラメータ
表176-3 COMMIT_FORCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ローカルまたはグローバルなトランザクションID。 |
|
システム変更番号。 |
176.2.7 LOCAL_TRANSACTION_IDファンクション
このファンクションは、現行のトランザクションのローカルな(インスタンスに対する)一意の識別子を戻します。現行のトランザクションがない場合は、NULLを戻します。
構文
DBMS_TRANSACTION.LOCAL_TRANSACTION_ID ( create_transaction BOOLEAN := FALSE) RETURN VARCHAR2;
パラメータ
表176-4 LOCAL_TRANSACTION_IDファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
TRUEに設定すると、トランザクションが現在アクティブでない場合は、トランザクションを開始します。 |
176.2.8 PURGE_LOST_DB_ENTRYプロシージャ
プロシージャPURGE_LOST_DB_ENTRY
は、ローカル・サイトからのデータベース・リカバリを制御するエントリをパージします。
コミット処理中に障害が発生すると、自動リカバリ機能によって、そのトランザクションに関連しているすべてのサイトでの結果が一貫して解決されます。ただし、リカバリの完了前にリモート・データベースが破損または再作成されると、DBA_2PC_PENDING
内のリカバリを制御するために使用するエントリとそれに関連する表が削除されずに、リカバリ処理が定期的に再試行されます。プロシージャPURGE_LOST_DB_ENTRY
では、このようなトランザクションをローカル・サイトから削除できます。
構文
DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY ( xid VARCHAR2);
パラメータ
表176-5 PURGE_LOST_DB_ENTRYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
使用上のノート
警告:
PURGE_LOST_DB_ENTRYは、他のデータベースが失われたり、再作成された場合にのみ使用してください。他の目的で使用すると、他のデータベースをリカバリ不能にしたり一貫性のない状態にする可能性があります。
自動リカバリの実行前に、トランザクションは、DBA_2PC_PENDING
をCollecting、CommittedまたはPreparedの状態で表示できます。DBAがCOMMIT_FORCEまたはROLLBACK_FORCEを使用して、インダウト・トランザクションに特定の結果を強制した場合は、Forced commitまたはForced rollbackの状態も表示できます。自動リカバリは通常、このような状態のエントリを削除します。唯一の例外は、トランザクション内の他のサイトとの間で整合性がとられていない状態の強制トランザクションがリカバリ処理で見つかった場合で、この場合、エントリは表内に残り、MIXED
列の値が'yes'になります。
ただし、状態によっては、自動リカバリの実行が不可能な場合があります。たとえば、リモート・データベースが完全に破損した場合です。たとえ再作成しても、新規のデータベースIDを取得するため、リカバリ処理では元のデータベースと同じとは認識できません(起こり得るエラーは、ORA-02062
です)。このような場合、DBAはプロシージャPURGE_LOST_DB_ENTRY
を使用して、Prepared以外の状態にあるエントリをクリーンアップできます。これらのエントリはデータベース・リソースを保持していないため、DBAは特に急いでこれらのエントリを解決する必要はありません。
次の表は、トランザクションについての様々な状態の内容およびDBAに必要とされるアクションを示します。
表176-6 PURGE_LOST_DB_ENTRYプロシージャの状態
列の状態 | グローバル・トランザクションの状態 | ローカル・トランザクションの状態 | 通常のDBAアクション | 代替のDBAアクション |
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ノート:
重要な再構成が発生して自動リカバリではトランザクションを解決できない場合のみ使用します。例としては、リモート・データベース全体が破損し、ソフトウェアでの再構成によって2フェーズ・コミット機能を失う結果になった場合やTPモニターのような外部トランザクション・コーディネータからの情報を失った場合などがあります。
ノート:
不整合を取り除くために調査したり手動で作業を行い、プロシージャPURGE_MIXED
を使用します。
176.2.9 PURGE_MIXEDプロシージャ
このプロシージャは、特定の混合出力トランザクションの情報を削除します。
インダウト・トランザクションにコミットまたはロールバックを強制実行すると(自動リカバリで結果を解決するのではなく)、トランザクションでは、コミットするサイトとロールバックするサイトが混在する結果が得られる可能性があります。このような矛盾はOracleで自動的には解決できません。ただし、Oracleは、MIXED
列を値'yes'に設定して、DBA_2PC_PENDING
にあるエントリにフラグ付けを行います。
Oracleでは、混合出力トランザクションの情報が自動的に削除されることはありません。混合トランザクションの結果として発生したすべての不整合が解決されたことを、アプリケーションまたはDBAで確認した後、このプロシージャを使用して、指定した混合出力トランザクションの情報を削除できます。
構文
DBMS_TRANSACTION.PURGE_MIXED ( xid VARCHAR2);
パラメータ
表176-7 PURGE_MIXEDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
176.2.10 READ_ONLYプロシージャ
このプロシージャは、SQL文SET TRANSACTION READ ONLY
と同じです。
構文
DBMS_TRANSACTION.READ_ONLY;
176.2.11 READ_WRITEプロシージャ
このプロシージャは、次のSQL文と同じです。
SET TRANSACTION READ WRITE
構文
DBMS_TRANSACTION.READ_WRITE;
176.2.12 ROLLBACKプロシージャ
このプロシージャは、SQL文ROLLBACK
と同じです。
このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。
構文
DBMS_TRANSACTION.ROLLBACK;
176.2.13 ROLLBACK_FORCEプロシージャ
このプロシージャは、SQL文ROLLBACK FORCE <text>
と同じです。
構文
DBMS_TRANSACTION.ROLLBACK_FORCE ( xid VARCHAR2);
パラメータ
表176-8 ROLLBACK_FORCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ローカルまたはグローバルなトランザクションID。 |
176.2.14 ROLLBACK_SAVEPOINTプロシージャ
このプロシージャは、SQL文ROLLBACK TO SAVEPOINT <savepoint_name>
と同じです。
このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。
構文
DBMS_TRANSACTION.ROLLBACK_SAVEPOINT ( savept VARCHAR2);
パラメータ
表176-9 ROLLBACK_SAVEPOINTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セーブポイントの識別子。 |
176.2.15 SAVEPOINTプロシージャ
このプロシージャは、SQL文SAVEPOINT <savepoint_name>
と同じです。
このプロシージャは、組み込むとより完全となり、PL/SQLの一部としてすでに実装されている機能です。
構文
DBMS_TRANSACTION.SAVEPOINT ( savept VARCHAR2);
パラメータ
表176-10 SAVEPOINTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
セーブポイントの識別子。 |
176.2.16 STEP_IDファンクション
このファンクションは、トランザクションのDML操作を順序付ける、ローカルな(ローカル・トランザクションに対して)一意の正の整数を戻します。
構文
DBMS_TRANSACTION.STEP_ID RETURN NUMBER;