「iThome 第七屆鐵人賽 25」undo data的介紹

熱門文章 (Popular Post)

Posted by : Duran Hsieh 2015-01-07


這篇我們要簡單說明undo data:

資料操作語言(data manipulation language,DML) 包含inset, update, delete, merge四種語法大家都常常使用的語法。

在oracle資料庫操作中,DML的指令通常指執行一個Transaction的一部分,讓我們可以作rolled back 與commit,讓transaction恢復或執行。

而我們在對尚未執行Commit與rollback的指令之前,undo就會複製原來的、未修改前的資料出來。undo data會保留到transaction結束為止。


undo資料通常用來:

1.rollback操作

2.完整性讀取與查詢回復

3.回復失敗的transaction


通常undo data結束通常有幾種情況

1.使用者恢復資料(rollback)

2.使用者結束transaction(commit)

3.使用者意外被中斷(rollback)

4.使用者正常關閉transaction且離開(commit)



transaction 與 undo data關係

當DML指令下達的時候,每個Transaction只能指定一個undo segment使用;

但是一個undo segment可以服務超過一個上的transaction。

當transaction改變的資料越來越多,資料就會一直延伸到下一個undo segment;

當所有的segment被寫滿,就會開始複寫第一個undo segment或再要求新的位置來增加undo segment。



Storing Undo Information

undo資訊會儲存在undo segments,其內容儲存在undo tablespace:

1.undo tablespace只能提供undo segment使用

2.雖然資料庫可以很多undo tablespace,但是同時只有一個tablespace能寫入undo data

3.undo segment屬於sys所有,因為undo segment會循環複寫,所以最少會有兩個延伸。

4.undo tablespace只能在資料庫狀態MONUT狀態下進行回覆作業。

--

快結束了 加油!

(還有幾篇要補充...XD)


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Duran Hsieh @ Duran 的技術冶煉廠 - Date A Live - Powered by Blogger - Designed by Johanes Djogan -