還是Oracle的資料庫破壞試驗,針對不同檔案的丟失進行恢復
資料庫完全丟失的恢復,對於個人來說可能上來就接觸是稍微困難了些
所以其中有些步驟只是按照文件執行過去,並不是特別清楚其作用
對於備份恢復還需要慢慢深入、具體地去練習
今天就來分別對各種資料庫檔案的損壞進行鍼對性的恢復[@more@]
昨天最後練習了全資料庫的資料檔案丟失的恢復
來細化一下吧,某個具體的資料檔案丟失後的恢復
把example,user,ts_test這幾個刪掉
startup,但到了mount,轉換到open時,報錯
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/home/oracle/oracle/oradata/test/users01.dbf'
需要user01.dbf,user表空間的資料檔案
進行資料檔案的單獨還原
RMAN> restore datafile 4;
還原後進行恢復
RMAN> recover datafile 4;
後面又陸續提示另外兩個表空間丟失,依照上面方法進行還原並恢復
都恢復後,用alter database open命令開啟資料庫,一切正常
在此處並未用resetlogs引數,因為恢復過程屬於完全恢復
recover所用的redo log或歸檔日誌都沒有丟失
資料可以恢復到資料庫最新的SCN狀態下
另外,因為全資料庫備份後並未有任何改動
而redo log也都存在,並足矣進行recover操作
所以,即便刪除現有歸檔日誌也能進行完全恢復
是否需要歸檔日誌,完全、不完全的選擇
這些會因為歸檔、備份的日期,redo log的有效性等因素有所差別
下面是針對某個表空間進行還原恢復,比如users表空間
RMAN>restore tablespace users;
RMAN>recover tablespace users;
但要注意,如果還原恢復一個open狀態下的表空間
要先將表空間offline後才能還原,不然報錯
ORA-19573: cannot obtain exclusive enqueue for datafile 4
offline表空間的SQL是ALTER TABLESPACE users OFFLINE [IMMEDIATE]
RMAN>SQL 'ALTER TABLESPACE users OFFLINE IMMEDIATE';
進行還原恢復後,要記得用ALTER TABLESPACE users ONLINE將表空間聯機
RMAN>SQL 'ALTER TABLESPACE users ONLINE';
對於redo log,RMAN線上備份策略中並不會儲存redo log
所以,當redo log丟失後,無法進行完全恢復
進行不完全恢復時,Oracle會自動建立redo log
具體來實踐一下步驟,先刪除test庫的所有redo log
此時資料庫只能到mount為止,無法open
這種情況可以直接在SqlPlus執行recover database until cancel
SQL>recover database until cancel;
然後執行
SQL>alter database open resetlogs;
這樣就可以了
不過,不同場合會有不同的恢復步驟,上面說的這個是最複雜的
是丟失全部redo log(主要是current redo log當前的)的恢復方式
如果丟失的不是current的,可以通過clear丟失的redo log進行重建
比如,我的test庫current日誌為group1的,我把組2的刪除(redo02.log)
然後執行(此時資料庫為mount)
SQL>ALTER DATABASE CLEAR LOGFILE
2 '/home/oracle/oracle/oradata/test/redo02.log';
這裡要提一點,如果目標日誌是未歸檔的,需要在clear後加上unarchived
clear目標日誌後,就可以open了(不用resetlogs)
以前總結redo log的時候,談過如何往一個日誌組新增成員
利用這個功能再來實踐一下,新增成員命令如下
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 '/home/oracle/oracle/oradata/test/redo02b.log' TO GROUP 2;
將各組都新增一個新成員,此時組2是current,刪除其中一個組員
switch幾次,讓新加入的成員全部生效(可通過v$logfile檢視)
通過v$log檢視current日誌是組2,刪除其中一個成員
關閉再開啟資料庫,可以open
但檢視alert日誌,可以看到有錯誤資訊
Errors in file /home/oracle/oracle/admin/test/bdump/test_lgwr_14179.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/oradata/test/redo02.log'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Sat Jan 17 16:27:47 2009
Errors in file /home/oracle/oracle/admin/test/bdump/test_lgwr_14179.trc:
ORA-00321: log 2 of thread 1, cannot update log file header
ORA-00312: online log 2 thread 1: '/home/oracle/oracle/oradata/test/redo02.log'
Sat Jan 17 16:27:47 2009
Errors in file /home/oracle/oracle/admin/test/bdump/test_lgwr_14179.trc:
ORA-00313: open failed for members of log group 2 of thread 1
Thread 1 opened at log sequence 6
Current log# 2 seq# 6 mem# 1: /home/oracle/oracle/oradata/test/redo02b.log
Successful open of redo thread 1
看到最後Oracle用組中的另一個成員來開啟資料庫
然後,我們可以通過先drop再add的方式恢復丟失日誌
SQL>alter database drop logfile member
2 '/home/oracle/oracle/oradata/test/redo02.log';
SQL>alter database add logfile member
2 '/home/oracle/oracle/oradata/test/redo02.log' to group 2;
最後再說個命令引數
以resetlogs方式open資料庫後,在重新備份資料庫時
可加delete all input,如下
backup database plus archivelog delete all input;
作用是刪除備份過的歸檔日誌,以節省硬碟空間
以後恢復前要先還原這些備份過的歸檔日誌
控制、引數檔案昨天已經提及過了,今天就不再細說
每次弄恢復就要花費不少時間……
一來是自己有些地方不太熟悉
二來查詢英文文件也頗費時間
還有恢復命令不像其它命令執行那麼快
每次都要等一等,我的test庫很小,有時一次命令還要執行好幾分鐘呢
這要是實際生產專案的大資料庫……
唉~恢復果然是個費勁的事情
經過最近一段時間的學習和實踐
對Oracle的一些基本備份恢復方法有了不少認識
本來今天想試試用RMAN的catalog,放到明天吧
今天的學習結束~看動畫去~^_^~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/556359/viewspace-1016251/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 還是Oracle的資料庫破壞試驗,RMAN針對不同檔案的丟失進行恢復Oracle資料庫
- Oracle不同檔案丟失/損壞的恢復方法Oracle
- 資料檔案丟失損壞的恢復--
- rman 恢復---歸檔丟失and資料檔案損壞
- 磁碟損壞導致資料檔案丟失的恢復
- 資料檔案丟失的恢復
- 控制檔案被破壞的資料庫恢復方法資料庫
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- RMAN_部分資料檔案丟失或者損壞的恢復
- REDO檔案丟失或者損壞的恢復
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- 使用blockrecover 對有壞塊的資料檔案進行恢復BloC
- 備份&恢復之八:RMAN備份歸檔模式下損壞(丟失)多個資料檔案,進行整個資料庫的恢復模式資料庫
- Oracle Password檔案丟失的恢復Oracle
- 利用rman做資料檔案丟失的恢復實驗
- 備份與恢復--資料檔案損壞或丟失
- RMAN_資料庫的絕大部分資料檔案丟失或者損壞的恢復資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- oracle歸檔日誌丟失後的資料庫恢復Oracle資料庫
- Oracle重做日誌檔案損壞或丟失後的恢復Oracle
- 恢復REDO Log丟失的Oracle資料庫Oracle資料庫
- RMAN完全恢復丟失的資料檔案
- 普通資料檔案丟失的恢復方法
- oracle控制檔案的損壞或完全丟失的恢復辦法Oracle
- 資料檔案丟失如何恢復
- DATA GUARD主庫丟失資料檔案的恢復(2)
- DATA GUARD主庫丟失資料檔案的恢復(3)
- DATA GUARD主庫丟失資料檔案的恢復(1)
- 完全恢復之所有資料庫檔案丟失資料庫
- 資料庫各種檔案丟失恢復大全。資料庫
- 剪下的檔案還能恢復嗎,恢復剪貼丟失的檔案
- 模擬控制檔案丟失進行恢復。
- Oracle 各種檔案丟失的恢復Oracle
- oracle實驗記錄(恢復-丟失未備份資料檔案)Oracle
- 恢復測試:擁有當時的全部歸檔,控制檔案,恢復丟失的資料檔案。
- 歸檔模式下資料檔案丟失的恢復模式
- 資料庫資料恢復—MongoDB資料庫檔案丟失,啟動報錯的資料恢復案例資料庫資料恢復MongoDB
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫