用戶管理的備份還原和恢復

使用當前可用的操作系統功能和sql*plus命令來完成用戶管理的備份。
1.以非歸檔日誌模式備份
當以非歸檔日誌模式運行時必須備份那些文件呢?控制文件,和整個數據文件集,並且必須首先乾淨地關閉數據庫。
可以在操作系統提示符上執行這些生成命令來進行完整的備份:
select 'cp' || name || '/u01/backups' from v$controlfile;
select 'cp' || name || '/u01/backups' from v$datafile;
select 'cp' || name || '/u01/backups' from v$tempfile;
select 'cp' || number || '/u01/backups' from v$logfile;
2.歸檔日誌模式備份
啓用和禁用表空間備份模式命令
alter tablespace <tablespace_name> begin backup;
alter tablespace <tablespace_name> end backup;
一次性爲所有表空間啓用備份模式
alter database begin backup;
alter database end backup;
備份用戶數據的表空間和備份system,sysaux,undo表空間之間沒有區別:只需當表空間處於備份模式時複製數據文件。但是不能備份臨時表空間:甚至不能將他們置於備份模式。
alter tablespace exl81 begin backup;
unxi:cp /u01/app/oracle/oradate/orcl/exl81.dbf /tmp/exl81.dbf.bak
windows: ocopy c:\app\oracle\oradate\orcl\exl81.dbf c:\temp\exl81.dbf.bak
注意:在這裏使用了ocopy.exe實用程序:這是oracle提供的一個程序(可以在%ORACLE_HOME%\BIN中找到它),與一些標準的windows使用程序不同,它可以複製打開的文件。
alter tablespace exl81 end backup;
對控制文件創建二進制備份,指定任何適當的目標
alter database backup controlfile to '/tmp/cf.bin';
創建控制文件的邏輯備份,指定任何適當的目標
alter databsae backup controlfile to trace as 'c:\temp\cf.log'


在丟失多路複用的控制文件後進行恢復
只要有一個倖存(未受損)的多路複用的控制文件的副本,在丟失控制文件後進行恢復就很簡單。只需使用未受損的控制文件副本來替換它。在這些情況下,從備份中還原受損或丟失的控制文件副本是沒有用的,因爲控制文件的所有副本必須時相同的;顯然,還原的副本與未受損的副本不能同步,與數據庫的其餘部分也不同步。
有三種選擇:
第一種:可以編輯參數文件刪除到丟失或受損的控制文件副本的引用。
startup force
alter system set control_file='' scope=spfile;
startup force
第二種:使用從倖存的副本中創建的副本來替換受損的文件。
第三種:更改control_file初始化參數以便使用一個指向全新的文件的引用來替換到受損文件的引用,這個新文件是在完全關閉實例時創建的一個倖存的控制文件副本。


在丟失多路複用的聯機重做日誌文件後進行恢復
只要聯機重做日誌文件時多路複用的,丟失一個成員不會造成任何停機時間,但是警報日誌中會提醒您出現問題的消息。如果能容忍停機時間,那麼可以關閉數據庫並將該日誌組中的一個倖存的成員複製到受損或丟失成員上,但是如果數據庫仍然時打開的,那麼顯然不能這樣做。
對於打開恢復,使用alter database clear logfile命令刪除現有的文件並創建新的文件。只有當日志文件未激活的情況下才能完成此操作。如果試圖清除當前的日誌文件組或者以前仍激活的日誌文件,就會收到錯誤消息。另外,如果數據庫處於歸檔日誌模式,則必須已經歸檔了日誌文件組。




丟失臨時文件後進行恢復
爲了使用臨時文件修復問題:向臨時的表空間中添加另一個臨時文件並刪除原有的臨時文件。
alter tablespace temp add tempfile '' size 50m;
alter tablespace temp drop tempfile '' size 50m;



丟失數據文件後進行恢復
介質失敗導致一個或多個數據文件受損要求使用還原和恢復例程:必須還原數據文件備份,然後對它應用歸檔重做日誌以使它與數據庫的其餘部分同步。
在所有情況下,必須確定文件受損的程度,通過查詢V$RECOVER_FILE視圖可以完成此任務,該視圖將列出所有受損或丟失的數據文件。

1.以非歸檔模式恢復數據文件
在非歸檔日誌模式下,沒有什麼支持恢復的技術,因爲恢復所需的歸檔日誌文件不存在。因此,只能進行還原。但如果通過應用歸檔重做日誌文件,還原的數據文件與數據庫的其餘部分不同步,則不能打開它。
那麼非歸檔日誌模式下的唯一選擇時還原整個數據庫:所有數據文件和控制文件。假定所有這些文件時從全部脫機備份中還原的,那麼在還原後將有一個其所有這些文件都同步的數據庫,因此是個可打開的數據庫。
但會丟失備份創建後所做的所有工作。
在執行了完整還原後,數據庫仍會缺失其聯機重做日誌文件,因爲他們沒有被備份。由於這個原因,還原後的啓動將失敗,數據庫處於加載模式,在加載模式下,發出alter database clear logfile group
<group number>命令重新創建所有日誌文件組,然後打開數據庫。如果通過DATABASE CONTROL 的RMAN接口執行還原,該過程將是完全自動的。
在非歸檔日誌模式下,如果丟失了數百個數據文件,則只能通過最後一次備份的完整還原來糾正。必須立即回退整個數據庫,丟掉用戶所有的工作。而且,最後一次的備份必須時全部脫機備份,這將導致停機時間。
顯然,使數據庫在非歸檔日誌模式下運行的決定不應該輕率作出。

2.
(1)以歸檔日誌模式恢復非關鍵的數據文件
使受損的文件脫機
還原文件
恢復文件
將恢復的文件聯機
(2)以歸檔日誌模式恢復關鍵的數據文件
恢復必須在加載模式下執行,因爲數據庫已經崩潰並且無法打開。恢復過程沒有必要將受損文件脫機,因此採取的步驟如下
a.加載數據庫
b.還原文件
c.恢復文件
d.打開數據庫
只能在加載模式下執行完整恢復的另一種情境是需要恢復整個數據庫的時候。如果損害很嚴重以至於必須還原大部分數據文件,則需要這樣做。在加載模式下執行此操作
recover database;
該命令將並行前滾所有還原的數據文件,並根據需要提示歸檔日誌文件。



發佈了51 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章