這篇我們要簡單說明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)