Oracle的redo 和undo的區別

2021-06-17 22:19:45 字數 1171 閱讀 8092

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...