redo--> undo-->datafile
insert一條記錄時, 表跟undo的資訊都會放進 redo 中, 在commit 或之前, redo 的資訊會放進硬碟上. 故障時, redo 便可恢復那些已經commit 了的資料.
redo->每次操作都先記錄到redo日誌中,當出現例項故障(像斷電),導致資料未能更新到資料檔案,則資料庫重啟時須redo,重新把資料更新到資料檔案
undo->記錄更改前的乙份copy,但你系統rollback時,把這份copy重新覆蓋到原來的資料
redo->記錄所有操作,用於恢復(redo records all the database transaction used for recovery)
undo->記錄所有的前印象,用於回滾(undo is used to store uncommiteddatainfor used for rollback)
redo->已遞交的事務,例項恢復時要寫到資料檔案去的
undo->未遞交的事務.
redo的原因是:每次commit時,將資料的修改立即寫到online redo中,但是並不一定同時將該資料的修改寫到資料檔案中。因為該資料已經提交,但是只存在聯機日誌檔案中,所以在恢復時需要將資料從聯機日誌檔案中找出來,重新應用一下,使已經更改資料在資料檔案中也改過來!
undo的原因是:在oracle語句對資料庫所做的修改。
·oracle服務程序釋放事務所使用的所有鎖
·oracle通知事務回退成功。
·oracle將該事務標記為已完成
舉個例子:
insert into a(id) values(1);(redo)
這條記錄是需要回滾的。
回滾的語句是delete from a where id = 1;(undo)
試想想看。如果沒有做insert into a(id) values(1);(redo)
那麼delete from a where id = 1;(undo)這句話就沒有意義了。
現在看下正確的恢復:
先insert into a(id) values(1);(redo)
然後delete from a where id = 1;(undo)
系統就回到了原先的狀態,沒有這條記錄了。
oracle修改redo大小
切換到過渡redo alter system switch logfile 檢視是否切換到過渡的redo select group bytes 1024 1024,status from v log 切換到新建的redo alter system switch logfile 檢視是否切換到新建的r...
Oracle之redo分析二
1.為什麼不能分配乙個新日誌檔案 在批量大量匯入資料的時候,我們可能會在伺服器端的alert.log檔案裡面看到這樣一條警告資訊 thread 1 cannot allocate new log,sequence1466 checkpoint not complete current lg 3 se...
Oracle的Redo的作用及原理
oracle的redo的作用及原理 redo的作用 oracle通過redo來保證資料庫的事務可以被重演,從而使得在故障之後,資料可以被恢復。redo對於oracle資料庫來說至關重要。在資料庫中,redo的功能主要通過3個元件來實現 redo log buffer lgwr後台程序和redo lo...