85301


Oracle Database
において、トランザクション中に通信ができなくなり、例外処理のロールバックもできないときコネクションも切れロックされてしまった際に、どのように、再度そのトランザクションのロールバックを行えばよいのでしょうか？

トランザクションにIDみたいのを持たせるようなことはできないのでしょうか？


CC BY-SA 4.0
2021-12-23T04:46:29.170
85290
2021-12-23T11:34:13.643
2021-12-23T11:32:45.243
3060
40856
question
oracle
Oracle Databaseにおいて、トランザクション中に通信ができなくなり、例外処理のロールバックもできないときコネクションも切れロックされてしまう問題。


無理やりできたので載せておきます。

以下のようにプロセスkillをトランザクションの前に毎回行えば、ロックは防げるようです。

`ALTER`を使っているので、扱いは難しいですが...

[code]

    SELECT SID, SERIAL#,  MACHINE , PROGRAM,  PREV_EXEC_START, LOGON_TIME FROM V$SESSION WHERE MACHINE ='ComputerName';
    
    ALTER SYSTEM KILL SESSION 'SID, SERIAL#' IMMEDIATE;
    
[/code]

### 別解 sqlnet.oraファイルを編集

sqlnet.oraの
[SQLNET.EXPIRE_TIME](https://docs.oracle.com/cd/E16338_01/network.112/b56287/sqlnet.htm#BIIEEGJH)
でセッションの時間を設定できるらしいので、それをデフォルトの `0` (無期限)から `10` (単位: 分)
とかに変更しておくと自動でセッションが閉じるようです。


CC BY-SA 4.0
2021-12-23T08:46:23.820
85301
2021-12-23T11:34:13.643
2021-12-23T11:34:13.643
3060
40856
85290
answer