有關oracle鏈接斷開時的事務自動提交

有關oracle鏈接斷開時的事務處理

今天在學習oracle過程中,發現當客戶端與oracle的連接斷開時。連接內的事務會隨斷開的不同類型而不同
環境:
服務器端:linux Redhat 5 + oracle 10g 10.2.0.1 64bit
客戶端:windows XP + PLSQL developer
在客戶端的plsql developer中建立一個到服務器端的連接。
在服務器端同時使用sqlplus也建立一個連接。用于觀察客戶端連接中的事務是否提交
場景一:
step1:在plsql developer中執行insert 語句。而不提交。此時在服務器的sqlplus中也確認沒有數據改變
step2:在plsql developer中執行disconn語句斷開鏈接。此時在服務器的sqlplus中確認到數據已經插入成功
場景二:
step2:在plsql developer中關閉直接command windows。此時在服務器的sqlplus中確認到數據已經插入成功
場景三:
step2:直接在windows的任務管理器中關閉plsql developer進程。此時在服務器的sqlplus中確認到數據沒有改變。推測事務回滾。

而后在客戶端直接使用sqlplus連接服務器進行相關實驗。得到同樣結果
總結:客戶端到oracle的連接如果正常退出,則連接內的事務會自動提交。若非正常退出則回滾。

由此實驗帶來另一個問題:在進行實驗時發現。不論客戶端是否正常退出。在連接斷開很短時間(應該3秒以內)在服務器上使用
select * from v$session查詢發現 沒有鏈接的session記錄。正常退出還好理解是客戶端告知oracle關閉session鏈接。
如果客戶端非正常退出時。oracle憑何判斷客戶端的連接session斷開,  超時?

同時發現:不論是否非正常斷開。所斷開sesseion直接對應的server process其實并沒有關閉。說明oracle的鏈接并沒有回收。PGA也沒有回收,

待解決問題:
1:oracle服務器如何維持客戶端的session連接信息(按照有關說法該信息保存于PGA中),是否V$session的信息是實時的?這些信息oracle是如何維護的呢?

2:實驗的證明session的斷開并不會導致oracle關閉server proces而回收PGA,問oracle如何管理PGA,什么時候會發生PGA的關閉以及回收。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/180324/viewspace-660535/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/180324/viewspace-660535/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值