現行のトランザクションをコミットするために必要な権限はありません。
自分でコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE TRANSACTION
システム権限が必要です。他のユーザーがコミットしたインダウトの分散トランザクションを手動でコミットするには、FORCE ANY TRANSACTION
システム権限が必要です。
DBMS MAC
モードでOracleを使用しているとき、インダウト・トランザクションをコミットできるのは、DBMSラベルがトランザクションのラベル、およびこのトランザクションをコミットしたユーザーの作成ラベルと一致するか、次の条件のいずれかを満たしている場合のみです。
トランザクションのラベルまたはユーザーの作成ラベルが、BMSラベルより上位である場合は、READUP
およびWRITEUP
システム権限が必要です。
トランザクションのラベルまたはユーザーの作成ラベルがDBMSラベルより下位の場合は、WRITEDOWN
システム権限が必要です。
トランザクションのラベルまたはユーザーの作成ラベルがDBMSラベルと同等でない場合は、READUP
、WRITEUP
およびWRITEDOWN
システム権限が必要です。
AT
COMMIT
文の発行先のデータベースを指定します。次のいずれかを使用してデータベースを指定します。
db_nameは、事前にDECLARE DATABASE
文で宣言したデータベース識別子。
:host_variableは、値が事前に宣言したdb_nameであるホスト変数。
この句を省略した場合、Oracleではデフォルトのデータベースに文が発行されます。
標準SQLに準拠している場合にのみサポートされます。COMMIT
文とCOMMIT WORK
文は同等です。
カレント・トランザクションに対応付けるコメントを指定します。text'は、50文字以内の引用符付きリテラルで、トランザクションがインダウトになると、OracleではトランザクションIDとともにデータ・ディクショナリ・ビューDBA_2PC_PENDING
に格納されます。
RELEASE
リソースをすべて解放し、アプリケーションのOracleデータベースとの接続を切断します。
FORCE
インダウトの分散トランザクションを手動でコミットします。トランザクションは、ローカルまたはグローバル・トランザクションIDを格納する'text'によって識別されます。このトランザクションのIDを確認する場合は、データ・ディクショナリ・ビューDBA_2PC_PENDING
を問い合せます。また、オプションのintegerを使用してトランザクションにシステム変更番号(SCN)を明示的に割り当てることができます。整数を省略すると、トランザクションは現行のSCNを使用してコミットされます。
プログラムの最後のトランザクションは、COMMIT
またはROLLBACK
コマンドとRELEASE
オプションを使用して、必ず明示的にコミットまたはロールバックしてください。プログラムが異常終了すると、Oracleによって変更は自動的にロールバックされます。
COMMIT
コマンドは、ホスト変数またはプログラムの制御の流れには影響を与えません。このコマンドの詳細は、トランザクションの定義および制御を参照してください。
この例では、埋込みSQL COMMIT
コマンドの使用方法を示しています。
EXEC SQL AT sales_db COMMIT RELEASE;