私はAUTONOMOUS_TRANSACTION Pragmaをバッチプロセスの一部のログに使用することを考えていました。誰にもこれに関する経験はありますか?もしあれば、賛否両論は認められるだろう。AUTONOMOUS_TRANSACTION
6
A
答えて
17
IMO自律型トランザクションは特に、メインセッションとは独立して実行されます。つまり、メイントランザクションに影響を与えることなく変更をコミットまたはロールバックすることができます。
また、大きな文を実行し、各文の間に自律型トランザクションを追加すると、パフォーマンスのコストはごくわずかです。
面白いかもしれない副作用もあります:自律型トランザクションは呼び出し元トランザクションから独立したセッションになっているため、実行中のメインプロセスの進行に従うことができます。メイントランザクションが完了するのを待つ必要はありません。自律型トランザクションによって満たされているので、ロギングテーブルを照会することができます。
3
明らかに、自律型トランザクションで行われるすべてのログは、メイントランザクションがロールバックされてもデータベースに残ります。ロギングではこれはおそらく必要なことですが、「行YをテーブルYに挿入しました」というログレコードは、その挿入が実際にコミットされたことを意味しないことを覚えておくことが重要です。
関連する問題
- 1. postgresのOracleのpragma autonomous_transactionに相当する
- 2. PLSQL:ORA-14552 DDLを実行できません。Commit
- 3. DMLの後にコミットを実行すると、どのような影響がありますか?
- 4. データが見つかりません
- 5. PL/SQLなぜトリガアクションでDEADLOCKが表示されるのですか?
- 6. PL/SQLファンクションのINSERT文
- 7. トリガーを使用してテーブルを更新するとロックされます
- 8. 次のOracleトリガーをSQL Serverトリガーに変換するにはどうすればよいですか?
- 9. Oracle Apex ORA-14551:クエリ内でDML操作を実行できません。
- 10. テーブルから関数を介して行を取得する
- 11. "CREAT TABLE"を実行せずにOracle外部テーブル "ダンプファイル"を取得する方法
- 12. SQL例外がキャッチされました。エラー:ORA-04098:トリガーが無効であると再確認
- 13. オラクル:通常歴史をキャプチャするための最良の解決策は、しかし、履歴テーブルに更新している間に、レコードのスナップショットを取り、トリガー作成することです、レコード列の歴史
- 14. オラクル・トリガー(衝突、デッドクロック)
- 15. Oracle関数のdivの固定幅
- 16. 暗黙カーソルは、指定された識別子のテーブル内のすべての行を更新することを示します。
- 17. パッケージ、トリガー、およびプロシージャは正常に動作しません
- 18. PL/SQLでトリガの制約を削除する方法は?
- 19. PL/SQLトリガー変異表
- 20. pl/sqlブロックのsubselects上のOracle 8i動的SQLエラー
- 21. APEX上のPL/SQLプロシージャー - 初期化に関する問題
- 22. サブセレクトによるトランザクションの動作
- 23. Oracleパッケージエラー
これ以上のことはありません。 – Christian13467