執行User-Manager數據庫的閃回和恢復(1)
2024-07-21 02:45:05
供稿:網友
這章介紹了怎樣去還原和恢復一個數據庫、使用Oracle的閃回特性(當使用用戶管理的備份和恢復策略s時-這種策略部需要依賴還原管理)
這張主要包含以下幾個主題:
1> OracleUser-Manager的閃回特性
2> 關于User-Managed的還原操作
3> 還原需要恢復的數據文件
4> 還原控制文件
5> 關于User-Managed的媒介恢復
6> 執行User-Managed的媒介的完全恢復
7> 執行User-Managed數據庫的時間點恢復
8> 用resetlogs打開數據庫選項
9> 在noarchivelog模式下恢復數據庫
10> 控制并行的媒介恢復
一、 Oracle的User-Managed的閃回特性:
Oracle的閃回功能可以讓你在腐敗的邏輯數據損壞你的數據庫是,來執行撤銷,主要包含以下操作:
1> Oracle閃回數據庫---可以讓你把整個數據庫返回到它的前一個狀態而無需事先備份
2> Oracle閃回表---可以返回一個或多個表(包括內容)到剛過去的某個時間
3> Oracle閃回刪除---撤銷”drop table ..”操作的效果
4> Oracle閃回查詢---可以查詢數據庫在剛過去時間的內容
5> Oracle閃回版本查詢---可以讓你查看數據以前的狀態
6> Oracle閃回事物查詢---被用來回顧隨著時間的推移而受事物影響的表
以上所有的操作都可以在SQL*PLUS里實現,并且不需要使用ram ,關于在數據恢復中使用Oracle的閃回功能的描述請看Oracle Database Backup and Recovery Basics
用SQL*PLUS執行Flashback database
SQL*PLUS 的flashback database 命令格式與RAM中的flashback database 的命令格式一樣,都同樣返回數據庫的前 一個狀態:
在使用flashback database時需注意:需要為你的數據庫創建一個閃回恢復區用來搜集閃回日志
在SQL*PLUS里執行flashback database 操作:
查詢目標數據庫的SCN 以確定需要閃回的范圍。下面的SQL*PLUS查詢出最遲和最早的SCN(WINDOWS下):
SQL> SELECT CURRENT_SCN FROM V$DATABASE; SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;如果需要,用戶可以使用flashback的其他特性:SCN或time
用管理員權限打開SQL*PLUS,運行flashback database語句來返回數據庫到前一個TIMESTAMP或SCN,例:
FLASHBACK DATABASE TO SCN 46963;FLASHBACK DATABASE TO TIMESTAMP (SYSDATE-1/24);FLASHBACK DATABASE TO TIMESTAMP timestamp'2002-11-05 14:00:00';FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2002-11-11 16:00:00', 'YYYY-MM-DD HH24:MI:SS'); 以只讀方式打開數據庫來檢查使用flashback database操作的結果。等操作完成時,你可以打開數據庫,執行一些查詢來確信你已經恢復了你需要的數據。如果你發現你需要再次執行flashback database 到另一個時間點,你可以使用recover database 來返回數據庫到現在然會嘗試另一個flashback database 語句
如果你對flashback database 的結果滿意,那么你可以用resetlogs選項來重新打開數據庫。
如果情況允許,你也可以使用Oracle的導出工具,如Data Pump Expor來保存可能丟失的數據、
使用recover database 來返回數據庫到現在、用import來導入已經丟失的對象
二、關于User_Manager的還原操作:
還原一個文件就是用備份中的文件替換它。等媒介失敗、用戶錯誤的破壞或刪除原始文件時你需要還原文件。下面的文件時還原操作時所需要的候選文件:
*Datafiles and control files
*Archived redo logs
*Server parameter file
在每種情況下,一個主文件的丟失和還原備份 都要受到以下因素的影響:
If you lose . . .
Then . . .
一個或多個數據文件
你必須從備份中還原它們,然后執行媒介還原。Recovery是必須得,無論何時數據文件中的SCN都無法匹配控制文件中記錄的數據文件的SCN
當前控制文件的所有副本
你必須從備份中還原控制文件,然后用resetlogs選項open數據庫。
如果你沒有事先備份,那么你可以去嘗試重新創建需要的控制文件。如果可能的話,可以使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE中包含的腳本。剩下的工作可能需要讓當前的數據庫結構來匹配控制文件的結構
多重復用控制文件中的某一個
復制一個完整的復用控制文件到那個被破壞或者遺失的控制文件的位置,然后open數據庫。
如果你不能復制這個控制文件到它的原始位置,那么你需要修改初始化參數文件來反射出一個新的位置并刪除那個已經損壞的控制文件,最后open database
.
一個或多個媒介恢復是所需的歸檔日志
你必須為恢復來還原這些歸檔文件的備份。你可以還原它們到默認或者非默認位置。如果你沒有備份,那么你必須執行不一致恢復來退回到你第一次丟失redo log文件前的SCN,然后用resetlogs選項open.
服務端的參數文件
如果你有關于服務端參數文件的備份,那么恢復。或者如果一個客戶端初始化參數文件的備份,你可以還原這個文件,然后開啟實例,重新創建spfile
Note:
Oracle-managed文件與用戶自定義文件的restore和recovery操作沒有任何區別
三、確定恢復時需要的數據文件
你需要動態的執行查看v$recover_file來確定在媒介恢復中需要準備還原的文件。這個視圖
列出了所有需要被恢復的文件、解釋了他們為什么需要被恢復的原因
如果你計劃執行完全恢復而不是基于時間點的恢復,你可以只恢復那些需要恢復的數據文件
而不是整個數據庫(注意:在基于時間點的恢復中,你必須還原和恢復整個數據庫,除非你執行了表空間的時間點恢復),
你可以查詢v$recover_file來列出的數據文件,來通過文件號與他們的狀態和錯誤信息來恢復:
SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME FROM V$RECOVER_FILE;(相當于:Select * from v$recover_file); 注意: 你不能使用和從備份中還原出來的控制文件,或者在影響數據文件的媒介失敗后重新創建的控制文件在一起的v$recover_file。一個還原或者重新創建的控制文件不包含你需要更新v$recover_file的準確信息 你也可以用數據文件號、v$datafile、v%tablespace視圖做連接查詢來得到數據文件和表空間的名字。使用下面的SQL*PLUS命令可以格式化查詢結果的輸出:COL DF# FORMAT 999COL DF_NAME FORMAT A35COL TBSP_NAME FORMAT A7COL STATUS FORMAT A7COL ERROR FORMAT A10COL CHANGE# FORMAT 99999999SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIMEFROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE tWHERE t.TS# = d.TS#AND d.FILE# = r.FILE#; Error列表示了每個文件恢復是所遇到的問題四、還原數據文件和歸檔日志
這節包含以下主題:
· Restoring Datafiles with Operating System Utilities
· Restoring Archived Redo Logs with Operating System Utilities
1>Restoring Datafiles and Archived Redo Logs
如果媒介永久的損壞了一個或多個數據文件,那么你必須在recover前restore這些數據文件。如果你不能還原損壞的數據文件到它的原始位置,那么你必須在控制文件中為它指定到新的問題。
如果你需要在原始磁盤或分區上還原一個數據庫的文件,這個過程和在文件系統上restore一樣,
還原數據文件到它們的默認位置:
原文地址:http://download.oracle.com/docs/cd/B19306_01/backup.102/b14191/osrecov.htm#BABBBBBB
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/ty_tarena_pger/archive/2009/12/21/5049953.aspx