在復雜的應用環(huán)境下,我們經(jīng)常會遇到一些非常復雜并且有意思的問題,例如,我們會遇到網(wǎng)絡異常(網(wǎng)絡掉包、無線網(wǎng)絡斷線)、客戶端程序異常(例如應用程序崩潰Crash)、操作系統(tǒng)藍屏、客戶端電腦掉電、死機重啟等異常情況,此時數(shù)據(jù)庫連接可能都沒有正常關閉(Colse)、事務都沒有提交,連接(connections)就斷開了。如果遇到這些情況,你未提交的一個事務在數(shù)據(jù)庫中是否會回滾? 如果回滾,什么條件才會觸發(fā)回滾?需要多久才會觸發(fā)回滾(不是回滾需要多少時間)?如果是一個查詢呢,那么情況又是怎么樣呢?ORACLE數(shù)據(jù)庫是否提供某些機制來解決這些問題呢?如果這些問題你都能回答,那么可以不用看下文了,在介紹理論知識之前,我們先通過構造測試案例,測試一下,畢竟實踐出真知,抽象的理論需要實驗來加深理解、全面詳細闡述。

我們首先來測試一下數(shù)據(jù)庫會話正常退出的情況吧,我在客戶端使用(SQL*Plus)連接到數(shù)據(jù)庫,執(zhí)行一個UPDATE語句后不提交,然后退出(注意:實驗步驟是在服務器端查詢一些信息后才退出)。如下所示:

 

SQL> select * from v$mystat where rownum=1;
 
       SID STATISTIC#      VALUE
        		

網(wǎng)友評論