資料備份恢復在資料庫管理中至關重要,今天,總結一下資料庫備份與恢復需要注意的方面和實際操作!、
一、在備份之前首先應該執行commit語句,將所有未提交的資料進行提交,(提交了的資料也有可能在記憶體),執行alter system checkpoint語句,所有的髒資料(記憶體中所有修改過的資料,這些資料有可能被提交,也有可能未被提交)都會被寫入到了磁碟上,但是如果被寫入磁碟的資料塊處於未提交狀態,那麼另外乙個會話登入後是不可見的!
commit:標誌了事務的提交,資料的生效,其他使用者或者會話才是可見的,不管該資料是在磁碟上還是在記憶體中。
commit後首先將redo儲存到磁碟,首先儲存redo而不儲存資料的原因是redo的儲存比修改資料的儲存快很大,保證了資料提交的速度,而且一旦redo被儲存,那麼即使資料沒有被儲存,也可以通過redo將該資料恢復,所以,redo的儲存保證了資料的安全。
redo保證了資料的安全,此時再執行checkpoint,並不是多此一舉,將記憶體資料寫入磁碟,一是保證記憶體的利用率,不至於記憶體髒資料太大,二是對於資料恢復有很大的作用
二、例項恢**生在oracle啟動的第三個階段
第一階段:startup nomount(讀取spfile),沒有進行例項恢復
第二階段:alter database mount(讀取控制檔案),沒有進行例項恢復
第三階段:alter database open(檢查控制檔案,資料檔案頭,檢查資料完整性),進行例項恢復
下面將資料庫強制關閉,shutdown abort(強制關閉,這樣關閉快速,但是一些記憶體資料不會被儲存到資料庫磁碟,在資料庫下次啟動的時候就會進行例項恢復,在實際環境中不建議這樣關閉),然後分階段啟動資料庫:
資料庫例項恢復的大概原理:oracle在開啟資料庫時(alter database open),會檢查每個檔案頭上的資訊(scn),並同控制檔案中相應的資訊(scn)比較,如果不一致,則進行例項恢復。
例項恢復的過程 :
首先:前滾 rolling forward ,讀取狀態為current和active狀態的日誌(redo log),將發生crash時,沒有來得及寫到磁碟上的資料塊,使用redo的資訊來恢復。
其次:開啟資料庫(alter database open)
最後:回滾 rolling back: 將沒有提交的事務進行回滾。
三:介質恢復
當發生以下情況時,例項恢復無效,需要進行介質恢復:
1、資料檔案丟失,損壞
3、資料檔案太舊 (比如從乙個備份集中恢復過來的檔案)
4、檔案太新(比如,其它所有的檔案都是從備份中恢復過來的)
如下圖:將資料檔案11號檔案offline之後,進行11號檔案恢復,顯示出錯,這種錯誤就是資料檔案太舊無法恢復
oracle資料庫恢復與備份
一 oracle資料庫恢復 1.恢復剛才刪除的一條資料 delete from emp e where e.empname smith select from flashback transaction query f where f.table name emp undo sql下面的語句為剛才刪...
oracle資料庫還原與備份
1.首先查詢目標使用者的當前程序,注意是serial 而不是serial,網上有的介紹漏掉了 select sid,serial from v session where username bjrl 對應資料庫的使用者名稱,注意大寫 使用此語句會返回乙個程序列表,每行有兩個數字,然後用數字替代下面的...
oracle資料庫備份與恢復
一 使用資料幫浦備份資料 1.建立目錄物件並授權 connect sys password as sysdba create directory dir1 as e dump1 create directory dir2 as e dump2 grant read,write on director...