redo和undo
1.1 redo及其作用
1.1.1redo的作用是恢復已提交的事務,從而保證無論在介質失敗還是例項失敗時,都可以恢復使用者已提交的事務,使資料庫達到一致狀態。
1.1.2redo功能的實現依賴於以下三個元件:
1.2redo資料量的測量
1.2.1用sql*plus內建的autorace功能統計(只能針對簡單的dml操作,無法統計儲存過程呼叫等複雜操作的日誌資訊):
set autotrace on statistics
update big_table
set object_name=lower(object_name)
where rownum<10;
1.2.2.通過動態效能檢視v$mystat檢索。例如:
select a.name, b.value
from v$statname a, v$mystat b
where a.statistic# = b.statistic#
and lower(a.name) like 'redo size';
2 undo及其作用
2.2.1undo的作用是:
–回滾操作;
–支援讀一致性;
–恢復失敗的事務。
2.2.2undo的實現是通過undo表空間內的undo段來實現的。每個事務只被分配乙個undo段,undo段可以服務於多個事務。
2.2.3undo機制只是邏輯地把資料恢復到修改前的狀態,而不是物理地恢復。
語句中使用以下動態效能檢視查詢當前事務使用的undo塊數:
v$mystat:取得會話id;
v$transaction:找出事務使用的undo塊數。
事務提交或回滾時會釋放undo塊占用的空間。
select used_ublk
from v$transaction
where addr = (
select taddr
from v$session
where sid = (
select sid
from v$mystat
where rownum = 1
));
9.3 redo與undo的比較
undo
redo
記錄
怎樣還原修改
怎樣建立修改
用於
回滾、讀一致性
前滾、資料庫修改
儲存於
undo段
redo日誌檔案
保護
多使用者系統中的讀一致性
損失的資料
3.4 undo管理
管理目標是避免出現兩種錯誤:
vora-01650: unable to extend rollback segment
vora-01555: snapshot too old
管理方式落實為正確配置三個引數和乙個還原表空間屬性:
undo_management
undo_tablespace
undo_retention
retention guarantee
9.5 提交和回滾處理
commit操作需要的時間很「平」,與事務的大小沒有直接關係。
rollback操作所需的時間與事務所修改的資料量直接相關。
因此在設計事務時,不要考慮事務的大小和多少,而應以所執行的操作是否構成乙個邏輯工作單元作依據。
提交前後完成的操作
提交前可能完成的操作
–在sga中生成undo塊
–在sga中生成已修改的資料塊
–在sga中生成前兩項對應的redo日誌
–如果需要,前面的某些資料可能已經重新整理輸出到磁碟
–得到所需的所有鎖
提交時要完成的操作
–為事務生成scn
–lgwr把剩餘所有快取重做日誌和scn寫入日誌檔案
–釋放鎖
–對緩衝區中的資料塊進行塊清理
回滾前後完成的操作
v回滾前可能完成的操作
–在sga中生成undo塊
–在sga中生成已修改的資料塊
–在sga中生成前兩項對應的redo日誌
–如果需要,前面的某些資料可能已經重新整理輸出到磁碟
–得到所需的所有鎖
v回滾時要完成的操作
–撤銷已做的所有修改
–釋放鎖
Redo 和Undo的區別和聯絡 詳細解釋
redo和undo 1.1 redo及其作用 1.1.1redo的作用是恢復已提交的事務,從而保證無論在介質失敗還是例項失敗時,都可以恢復使用者已提交的事務,使資料庫達到一致狀態。1.1.2redo功能的實現依賴於以下三個元件 1.2redo資料量的測量 1.2.1用sql plus內建的autor...
redo和undo的區別
redo undo datafile insert一條記錄時,表跟undo的資訊都會放進 redo 中,在commit 或之前,redo 的資訊會放進硬碟上.故障時,redo 便可恢復那些已經commit 了的資料.redo 每次操作都先記錄到redo日誌中,當出現例項故障 像斷電 導致資料未能更新...
redo和undo的區別
redo undo datafile insert一條記錄時,表跟undo的資訊都會放進 redo 中,在commit 或之前,redo 的資訊會放進硬碟上.故障時,redo 便可恢復那些已經commit 了的資料.redo 每次操作都先記錄到redo日誌中,當出現例項故障 像斷電 導致資料未能更新...