執行完全恢復:在 ARCHIVELOG 模式下 丟失了系統關鍵數據文件: 如果某個數據文件丟失或損壞,且該文件屬于 SYSTEM 或 UNDO 表空間,請執行以下步驟: 1. 實例可能會也可能不會自動關閉。 2.如果未自動關閉,請使用 SHUTDOWN ABORT 關閉實例。 3. 裝載數據庫
執行完全恢復:在 ARCHIVELOG 模式下 丟失了系統關鍵數據文件:
如果某個數據文件丟失或損壞,且該文件屬于 SYSTEM 或 UNDO 表空間,請執行以下步驟:
1.
實例可能會也可能不會自動關閉。
2.如果未自動關閉,請使用 SHUTDOWN ABORT 關閉實例。
3.
裝載數據庫。
4.
還原并恢復缺失的數據文件。
5.打開數據庫。
1.歸檔模式丟失非關鍵數據文件 完全恢復
第一種方法:
shutdown abort;
startup mount;
alter database create datafile '/home/oracle/test.dbf' as '/home/oracle/test.dbf';
recover datafile;
第二種方法:
create tablespace test datafile '/home/oracle/test.dbf' size 10m;
rman target /
backup datafile 5;
rm test.dbf
sq> alter database datafile 5 offline;
restore datafile 5;
recover datafile 5;
sq> alter database datafile 5 online;
select FILE#,STATUS from v$datafile;
2. 歸檔模式丟失關鍵數據文件 完全恢復
利用備份,同上第二種方法。
--------------------------------------------------------------------------------------------------------------
恢復映像副本:
RMAN> recover copy of database with tag 'daily_inc';
RMAN> backup incremental level 1 for recover of copy
with tag 'daily_inc' database;
RECOVER BACKUP
第 1 天 無 創建映像副本
第 2 天 無 創建 1 級增量備份
第 3 天和以后 根據增量備份恢復副本 創建 1 級增量備份
恢復映像副本:示例
如果每天都運行以上命令,則可以隨時獲得所有數據庫數據文件的連續更新的映像副本。
圖表顯示了每次運行所發生的操作。請注意,這種算法需要一段準備期間;到第 3 天后策略才會起作用。
第 1 天
RECOVER 命令沒有執行任何操作。尚不存在要恢復的映像副本。BACKUP 命令可用于創建映像副本。
第 2 天
RECOVER 命令仍沒有執行任何操作。因為尚不存在增量備份。由于已在第 1 天創建了基準映像副本,BACKUP 命令會創建增量備份。
第 3 天
RECOVER 命令將增量備份中的更改應用于映像副本。BACKUP 命令將執行另一個增量備份,該備份將在第 4 天用于恢復映像副本,依此進行循環。
執行到映像副本的快速切換
執行以下步驟
可以使用數據文件的映像副本進行快速恢復:
1.使數據文件脫機。
2.使用 SWITCH TO ...COPY 命令指向這些文件的映像副本。
3.恢復數據文件。
4.使數據文件聯機。
此時,數據庫是可用的,且數據文件已恢復。但是,如果您希望將數據文件放回其原始位置,請繼續執行以下步驟:
5.使用 BACKUP AS COPY 命令在原始位置創建數據文件的映像副本。
6.使數據文件脫機。
7.使用 SWITCH TO COPY 命令切換到在步驟 5 中創建的副本。
8.恢復數據文件。
9.使數據文件聯機。
可以使用此命令來恢復數據文件、表空間、臨時文件或整個數據庫。切換到的目標文件必須為映像副本。
3. 映像副本的快速切換
backup as copy datafile 6;
rm a.dbf
sql:alter database datafile 6 offline;
rman >switch datafile '/home/oracle/test.dbf' to copy;
recover datafile 6;
--回復后數據文件的路徑和名稱為 '/home/oracle/test.dbf';
alter database datafile 4 online;
select FILE#,STATUS from v$datafile;
select file_name from dba_data_files;
backup as copy datafile 4 format '/u01/app/oracle/oradata/orcln/users01.dbf';
alter database datafile 4 offline;
switch datafile ' /home/oracle/backup/db_data_D-ORCL_I-4115975543_TS-TEST_FNO-6_38otbf5q.bak' to copy;
switch datafile 4 to copy;
recover datafile 4;
alter database datafile 4 online;
select file_name from dba_data_files;
-----------------------------------------------------------------------------------------------------------------
4. set newname 改名字
backup as copy datafile 6;
list copy of datafile 6;
select FILE#,STATUS from v$datafile;
run{
allocate channel c1 device type disk;
sql "alter database datafile 6 offline";
set newname for datafile '/home/oracle/test.dbf' to '/home/oracle/test_new.dbf';
restore datafile 6;
switch datafile all;
recover datafile 6;
sql "alter database datafile 6 online";
}
--------------------------------------------------------------------------------------------------------------
從自動備份還原控制文件:
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
7. 丟失控制文件,參數文件 --數據庫必須在nomount狀態
查看文件信息:
SQL>select name from v$controlfile;
SQL>show parameter spfile;
SQL> select name from v$datafile;
配置控制文件自動備份恢復控制文件
rman target /
connected to target database: ORCL (DBID=1353286769)
RMAN>show all;
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
數據庫全備份:
RMAN>backup as compressed backupset full database;
刪除,參數文件,控制文件,數據文件
rm /opt/oracle/oradata/orcl/control01.ctl
rm /opt/oracle/flash_recovery_area/orcl/control02.ctl
rm /opt/oracle/oradata/orcl/control03.ctl
rm /opt/oracle/product/11.2.2/dbs/spfileorcl.ora
rm /opt/oracle/oradata/orcl/system01.dbf
rm /opt/oracle/oradata/orcl/sysaux01.dbf
rm /opt/oracle/oradata/orcl/undotbs01.dbf
rm /opt/oracle/oradata/orcl/users01.dbf
rm /home/oracle/tbs_ctl01.dbf
rman target /
RMAN> set dbid 1353286769 --如果備份在
startup nomount --雖然沒有參數文件但是也可以啟動實例
恢復參數文件:
restore spfile from '/data/backup/ctl_c-1353286769-20131102-04.bak';
/* 從快速恢復區恢復參數文件:
run {
restore spfile from autobackup
recovery area = 'flash recovery area destination'
db_name = 'db_name';
}
*/
查看是否有需要改的參數:主要看文件位置
SQL> create pfile from spfile;
恢復控制文件:
restore controlfile to '/opt/oracle/oradata/orcl/control01.ctl' from '/data/backup/ctl_c-1353286769-20131102-04.bak';
恢復數據文件:
RMAN> shutdown immediate
RMAN> startup mount
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 11/02/2013 12:10:46
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
RMAN> alter database open resetlogs;
--------------------------------------------------------------------------------------------------------------
使用增量備份恢復處于 NOARCHIVELOG 模式的數據庫:
STARTUP FORCE NOMOUNT;
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE NOREDO;
ALTER DATABASE OPEN RESETLOGS;
8. 使用增量備份恢復處于NOARCHIVELOG 模式的數據庫
1) 撤銷數據庫archivelog模式
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database noarchivelog;
SQL>alter database open;
SQL>archive log list;
2) 創建測試用表及數據
conn zhuxy/zhuxy
create table c (id number);
insert into c values(1);
commit;
3) 在noarchivelog模式下,0級備份
RMAN> run{
shutdown immediate;
startup mount;
backup as backupset incremental level 0 database;
alter database open;
}
4) 在noarchivelog模式下,1級備份
insert into c values(2);
commit;
RMAN> run{
shutdown immediate;
startup mount;
backup as backupset incremental level 1 database;
alter database open;
}
6) 刪除所有日志文件, 某些數據文件
7) 執行恢復
rman target /
RMAN>startup mount;
--執行全庫的還原
RMAN> restore database;
-- 使用noredo子句進行恢復
RMAN> recover database noredo;
--恢復完成,resetlogs方式打開數據庫,完成所有文件丟失的恢復
RMAN> alter database open resetlogs;
8)驗證在測試前(增量備份前)插入的數據
select * from c;
6.非歸檔丟失文件
不完全恢復: SCN, 時間,還原點,或日志序列號
1確定目標還原點:SCN、時間、還原點或日志序列號。
2設置 NLS 環境變量。
3裝載數據庫。
4使用 SET UNTIL、RESTORE 和 RECOVER 命令準備并運行 RUN 塊。
5用 RESETLOGS 打開數據庫。
-----不完全恢復之--基于時間的恢復
1) 準備環境:RMAN全庫備份
RMAN> backup as compressed backupset full database;
2) 準備環境:測試表及數據
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
create table d (c date);
insert into d values(sysdate);
commit;
create table ff (c date);
insert into ff values(sysdate);
commit;
啟動到mount模式,進行基于時間的恢復
shutdown immediate;
startup mount;
run
{sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
set until time = ' 2014-03-30 00:39:34';
restore database;
recover database;
alter database open resetlogs;
}
時間也可以這么寫:
set until time="to_date('2013-11-01 15:29:34','yyyy-mm-dd hh24:mi:ss')";
-----還原點:
select count(*) from copy_emp;
創建還原點:
create restore point before_delete;
delete from copy_emp where ID >=10;
commit;
alter table copy_emp enable row movement;
flashback table copy_emp to restore point b;
--------------------------------------------------------------------------------------------------------------
將數據庫還原到新主機:
為了還原數據庫,請在還原主機上執行以下步驟:
1.配置 ORACLE_SID 環境變量。
2.啟動 RMAN 并在 NOCATALOG 模式下連接到目標實例。
3.設置數據庫標識符 (DBID)。
4.在 NOMOUNT 模式下啟動實例。
5.
從備份集中還原服務器參數文件。
6.關閉實例。
7.
編輯還原的初始化參數文件。
8.
在 NOMOUNT 模式下啟動實例
9.創建 RUN 塊以執行下列任務:
--還原控制文件
--
裝載數據庫
10.創建 RMAN 恢復腳本以還原和恢復數據庫。
11.執行 RMAN 腳本。
12.使用 RESETLOGS 選項打開數據庫。
9 利用備份將數據庫還原到新主機:目標庫需要有oracle軟件
1)準備工作
源庫數據庫全備及控制文件自動備份,當然也包括參數文件
RMAN> backup as backupset database;
2)拷貝RMAN備份文件到目標庫
可以用scp
3)配置目標庫
目標庫設置環境變量
export ORACLE_SID=new_orcl
啟動rman到nomount狀態,設置dbid(即源庫dbid)
$ rman target /
RMAN> set dbid 1357901988
RMAN> startup nomount; --沒有參數文件,會報錯,但是可以啟動實例
4)恢復參數文件
RMAN> restore spfile to pfile '' from '';
編輯pfile參數文件:文件位置,數據庫實例名..,創建相應的目錄
5) 啟動數據庫到nomount模式
SQL> create spfile from pfile;
SQL> startup nomount;
6)還原控制文件
$ rman target /
RMAN> restore controlfile to '' from '';
RMAN> alter database mount;
7) 還原數據文件
run{
SET NEWNAME FOR DATAFILE 1 TO '/u01/app/oracle/oradata/orcl/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/u01/app/oracle/oradata/orcl/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/u01/app/oracle/oradata/orcl/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/u01/app/oracle/oradata/orcl/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '/u01/app/oracle/oradata/orcl/example01.dbf';
SET NEWNAME FOR DATAFILE 6 TO '/u01/app/oracle/oradata/orcl/test.dbf';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;}
--rename日志文件
run{
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/ENMOEDU/redo01.log'' TO
''/u01/app/oracle/oradata/orcl/redo01.log'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/ENMOEDU/redo02.log'' TO
''/u01/app/oracle/oradata/orcl/redo02.log'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/ENMOEDU/redo03.log'' TO
''/u01/app/oracle/oradata/orcl/redo03.log'' ";
}
RMAN> alter database open resetlogs;
8)臨時文件位置不對
SQL> select file_name from dba_temp_files;
SQL>create temporary tablespace tempa tempfile
'/u01/app/oracle/oradata/orcl/tempa01.dbf' size 10m reuse autoextend on maxsize 200m;
SQL>alter database default temporary tablespace tempa;
SQL>drop tablespace temp;
SQL>select file_name from dba_temp_files;
注:這個測試改變了實例名
--------------------------------------------------------------------------------------------------------------
執行災難恢復 :
災難意味著丟失了整個目標數據庫、恢復目錄數據庫、所有當前控制文件、所有聯機重做日志文件和所有參數文件。
災難恢復包括還原和恢復目標數據庫。
備份集的最低要求:
1.數據文件的備份
2.
相應的歸檔重做日志文件
3.
至少一個控制文件自動備份
基本過程:
1.
還原服務器參數文件的自動備份。
2.啟動目標數據庫實例。
3.從自動備份還原控制文件。
4.裝載數據庫。
5.還原數據文件。
6.恢復數據文件。
7.使用 RESETLOGS 選項打開數據庫。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com