1、搭建實驗環境
1.建立8張表scott.lxtb1-lxtb8
create table scott.lxtb9 tablespace lxtb as select * from scott.emp;
2.3DML操做
insert into scott.lxtb9 select * from scott.emp;
commit;
alter system archive log current;
insert into scott.lxtb9 select * from scott.emp;
commit;
insert into scott.lxtb9 select * from scott.emp;
select count(1) from scott.lxtb9;sql
3.熱備腳本
run{
sql 'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/u01/app/backdir/rman/hot_bak/hot_%d_%s_%p.bak' include current controlfile plus archivelog delete input format '/u01/app/backdir/rman/archiv/arch_%U.bak' filesperset 3;
}數據庫
2、徹底恢復實驗
1.丟失全部數據文件和控制文件
備份控制文件
alter database backup controlfile to trace as '/u01/app/oracle/admin/ipemsdb/bdump/ipemsdb_ora_0813.trc';
ramn熱備份-3DML--斷電-刪控制文件,數據文件-啓-rman還原控制文件-啓mount-還原數據庫-恢復數據庫-open resetlogs;
RMAN> restore controlfile from '/u01/app/backdir/rman/controlfile/c-2694191837-20150731-0a';
RMAN> alter database mount;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
restore database;
recover database;
alter database open resetlogs;
}
2.丟失全部數據文件
3DML-斷電-刪全部dbf-啓-查v$recover_file-重聯rman-還原恢復數據庫-直接open
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1:'/u01/app/oracle/oradata/ipemsdb/datafile/o1_mf_system_bvnx38on_.dbf'
select file#,error from v$recover_file;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
restore database;
recover database;
alter database open;
}
3.丟失一個數據文件
rman備份單個數據文件-3DML-斷電-刪1個dbf-啓-查v$recover_file-重聯rman-還原恢復數據文件-直接open
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u01/app/oracle/oradata/ipemsdb/datafile/lxtb01.dbf'
select file#,error from v$recover_file;
run{
restore datafile 6;
recover datafile 6;
alter database open;
}
4.丟失一個數據文件(高可用模式)
3DML-查dbf-斷電-刪1dbf-啓-查v$recover_file-恢復數據文件
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u01/app/oracle/oradata/ipemsdb/datafile/lxtb01.dbf'
select file#,error from v$recover_file;
run{
sql 'alter database datafile 6 offline';
alter database open;
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}
5.不關庫下實驗丟失一個數據文件(高可用模式):
3DML-刪1個dbf-清理緩存-rman退出再登錄-數據文件脫機-還原-恢復-聯機
alter system flush buffer_cache;
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/u01/app/oracle/oradata/ipemsdb/datafile/lxtb_01.dbf'
run{
sql 'alter database datafile 6 offline';
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}
6.不可轉儲
建立表空間-建立表-3DML-斷電-刪數據文件-啓-查-脫機數據文件-開庫-還原(自動建立數據文件)-恢復-聯機數據文件
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/u01/app/oracle/oradata/ipemsdb/datafile/test01.dbf'
run{
sql 'alter database datafile 7 offline';
alter database open;
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
7.恢復到新位置,作以前要備份
3DML-斷電-刪-啓-查-恢復
run{
sql 'alter database datafile 6 offline';
alter database open;
set newname for datafile 6 to '/u01/app/oracle/oradata/ipemsdb/datafile/newdir/lxtb01.dbf'; --分開執行時放入run{}
restore datafile 6;
switch datafile 6; --分開執行時不成功,手動重命名修改文件路徑
recover datafile 6;
sql 'alter database datafile 6 online';
}
切換到非歸檔模式
shutdown immediate;
startup mount;
alter database flashback off;
alter database noarchivelog;
alter database open;
清理備份,從新冷備緩存
8.日誌組被未覆蓋
rman冷備-3DML-斷電-刪1dbf-啓-查-恢復
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6:'/u01/app/oracle/oradata/ipemsdb/datafile/newdir/lxtb01.dbf'
run{
restore datafile 6;
recover datafile 6;
alter database open;
}
9.日誌組有被覆蓋
3DML-切換日誌-斷電-刪1dbf-啓-轉儲1個數據文件-恢復文件-斷電-轉儲控制文件-啓mount-恢復數據庫
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6:'/u01/app/oracle/oradata/ipemsdb/datafile/newdir/lxtb01.dbf'
RMAN> recover datafile 6;oracle
Starting recover at 2015-07-31 06:11:55
using channel ORA_DISK_1
using channel ORA_DISK_2app
starting media recoveryide
unable to find archive log
archive log thread=1 sequence=15
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/31/2015 06:11:56
RMAN-06054: media recovery requesting unknown log: thread 1 seq 15 lowscn 364647
RMAN> shutdown abort
RMAN> startup nomount;
RMAN> restore controlfile from '/u01/app/backdir/rman/controlfile/c-2694191837-20150731-13';
RMAN> alter database mount;
RMAN> restore database; --直接resetlogs能夠開庫
SQL> recover database until cancel using BACKUP CONTROLFILE;
cancel
SQL> alter database open resetlogs;this
10.特殊狀況下的恢復
丟失了恢復目錄與控制文件,只剩下備份集與備份片,這個時候,只能從文件中恢復了。如下是調用
dbms_backup_restore包,從文件中恢復的例子。
declare
devtype varchar2(100);
done boolean;
recid number;
stamp number;
fullname varchar2(80);
begin
devtype :=dbms_backup_restore.deviceallocate('sbt_tape',params=>'ENV=(NSR_SERVER=backup_server)');
dbms_backup_restore.restoresetdata file;
dbms_backup_restore.restorecontrolfileto('first_control_file');
dbms_backup_restore.restorebackuppiece('backup_piece', done);
dbms_backup_restore.copycontrolfile ('first_control_file', 'second_control_file', recid, stamp,fullname);
-- repeat the above copycontrolfile for each control file
end;
/spa
11.塊級別的恢復Block Media Recovery (BMR)
塊恢復,塊是恢復的最小單元,數據文件能夠在線。恢復塊的時候,必須指定具體的塊號。
壞塊信息存儲視圖
V$DATABASE_BLOCK_CORRUPTION
恢復該視圖中列出的壞塊
RMAN> BLOCKRECOVER CORRUPTION LIST RESTORE UNTIL TIME 'sysdate – 10';
備份的壞塊信息保存在
V$BACKUP_CORRUPTION
V$COPY_CORRUPTION
恢復壞塊。
BLOCKRECOVER datafile 2 BLOCK 12, 13 datafile 7 BLOCK 5, 98, 99 datafile 9 BLOCK 19;
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 FROM TAG "weekly_backup";
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME 'SYSDATE-2';
12.參數文件spfile損壞恢復
restore spfile to "D:\oracle\product\10.2.0\db_1\dbs\ SPFILEORCL.ORA" from "D:\ORABACKUP\C-1335848290-20140218-04";rest
cp /u01/app/backdir/hot_bak/lxtb_01.dbf /u01/app/oracle/oradata/ipemsdb/datafile/
cp /u01/app/backdir/hot_bak/o1_mf_example_bwbn1ybs_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/
cp /u01/app/backdir/hot_bak/o1_mf_sysaux_bwbn1ybj_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/
cp /u01/app/backdir/hot_bak/o1_mf_system_bwbn1ybd_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/
cp /u01/app/backdir/hot_bak/o1_mf_undotbs1_bwbn1ydc_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/
cp /u01/app/backdir/hot_bak/o1_mf_users_bwbn1ysx_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/日誌
cp /u01/app/backdir/cold_bak/lxtb_01.dbf /u01/app/oracle/oradata/ipemsdb/datafile/ cp /u01/app/backdir/cold_bak/o1_mf_example_bwbn1ybs_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/ cp /u01/app/backdir/cold_bak/o1_mf_sysaux_bwbn1ybj_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/ cp /u01/app/backdir/cold_bak/o1_mf_system_bwbn1ybd_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/ cp /u01/app/backdir/cold_bak/o1_mf_undotbs1_bwbn1ydc_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/ cp /u01/app/backdir/cold_bak/o1_mf_users_bwbn1ysx_.dbf /u01/app/oracle/oradata/ipemsdb/datafile/