關於redo的幾個小知識點

531968912發表於2017-12-19

關於redo,可能不瞭解的小知識點,我也不知道是否總結的就對,不過先總結著吧。
1、主機掉電,會導致例項失敗,在重啟db時需要例項恢復。
2、在例項恢復時,oracle可以根據redo日誌,將系統恢復到例項失敗的那個時刻。
3、一般能用undo的情況也就是我們執行了rollback或者恢復時的回滾。
4、手動管理undo段是,需要我們手動建立或刪除undo段,而自動管理undo時,oracle會自動建立或銷燬undo段。
5、 在回滾時,oracle會將undo應用到資料塊和索引塊上,使資料塊和索引塊恢復。如果此時資料塊和索引塊已經被寫到磁碟上了(大事務),那oracle會將這些塊讀入快取,然後再應用undo回滾。
6、在回滾時,不需要redo,redo的讀只是用在恢復和歸檔時。
7、commit的開銷:
會增加與資料庫間的通訊。
commit會等待redo寫磁碟,等待事件為log file sync。
8、當發生事務時,會在SGA中生成undo塊、已經修改的塊、生成對於前2項快取的redo塊。
9、每次commit,scn就會加1。
10、觸發器對redo的影響
DML操作   AFTER         BEFOR      AFTER    BEFORE
 (10g 以前) (10g 以前) (10g)  (10g)
DELETE   不影響        不影響      不影響   不影響
INSERT   增加redo      增加redo    常量redo 常量redo
UPDATE   增加redo      不影響      增加redo 增加
11、當db是nologg模式的話,ddl幾乎是不會被記錄redo的。如果生產redo的話,也是為了保護更新資料字典而生成的。
12、我們可以對索引設定nologging模式,那如果在重建索引時,那豈不是就可以縮短時間啦。
13、insert時,臨時表幾乎不產生redo的,但會產生undo,而在產生undo時會產生undo相應的redo,所以說臨時表只是會產生相當少的redo。而delete時,臨時表和普通表產生的redo一樣多,update時臨時表產生的redo是普通表的一半。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2148892/,如需轉載,請註明出處,否則將追究法律責任。

相關文章