您好,登錄后才能下訂單哦!
4、事務(wù)
4.1事務(wù)的概念
從第一個(gè)DML語(yǔ)句開(kāi)始執(zhí)行,以rollback或者commit為結(jié)束標(biāo)記,之前所有的DML操作(insert,update,delete )都是屬于這個(gè)事務(wù)的范圍內(nèi)。
4.2 事務(wù)的提交操作
(1)首先解鎖一個(gè)用戶(hù)并改密碼
SQL> alter user scott account unlock;
User altered.
SQL> alter user scott identified by scott;
User altered.
(2)連接到scott用戶(hù)
SQL> conn scott/scott;
Connected.
(3)創(chuàng)建一個(gè)tt的表
SQL> create table tt(
2 id number
3 );
SQL> insert into tt values(1);
1 row created.
SQL> select * from tt;
ID
----------
1
SQL> insert into tt values(2);
1 row created.
SQL> select * from tt;
ID
----------
1
2
SQL> commit; --這是一個(gè)事務(wù)的結(jié)束
Commit complete.
--------------------------------- 這是另外一個(gè)事務(wù)
SQL> update tt set id=3 where id=2;
1 row updated.
SQL> select * from tt;
ID
----------
1
3
SQL> rollback; --這個(gè)事務(wù)到這里結(jié)束
Rollback complete.
SQL> select * from tt;
ID
----------
1
2
兩個(gè)問(wèn)題:
(1).提交的事務(wù)是不是就一定會(huì)寫(xiě)磁盤(pán)里面
不一定 ? 因?yàn)橄到y(tǒng)的讀寫(xiě)是異步的,提交了的數(shù)據(jù)有可能還在臟塊列表中,等到有足夠多臟塊時(shí)
DBWn進(jìn)程才會(huì)把一批次的臟塊信息寫(xiě)進(jìn)磁盤(pán)。
(2).沒(méi)有提交的事務(wù)是不是就不會(huì)寫(xiě)到磁盤(pán)
不一定 ? 因?yàn)榕K塊鏈表的空間有限,如果一次性對(duì)數(shù)據(jù)進(jìn)行大量的修改,會(huì)產(chǎn)生大量的臟塊超出臟塊
鏈表的長(zhǎng)度,此時(shí) DBWn進(jìn)程會(huì)將臟塊信息寫(xiě)進(jìn)磁盤(pán),如果用戶(hù)提交了,數(shù)據(jù)已經(jīng)寫(xiě)進(jìn)磁盤(pán),
如果用戶(hù)進(jìn)行回滾操作,也沒(méi)問(wèn)題,Oracle將會(huì)利用undo表空間回滾斷的舊鏡像將以前的信
息在磁盤(pán)中還原回去。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。