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

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

 

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

網(wǎng)友評(píng)論