oracle 备份恢复 06ramn彻底恢复

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/