今天做RMAN恢复的测试,做恢复测试,必须在数据库有备份的前提下进行,样例中采用的是完全备份,模拟以下几种情况下的恢复:
1)数据库运行过程中数据文件全部丢失;
2)数据库运行过程中非关键数据文件丢失;
3)数据库运行过程中关键数据文件丢失;
4)联机重做日志文件/归档重做日志文件丢失(未测试);
5)增量备份下归档日志文件丢失(未测试);
在每个模拟中,都要做一次完全备份,上一个的完全备份可以给下一个模拟使用。
一、测试环境描述
系统版本:Red Hat Enterprise Linux Server release 5.5
数据库版本:oracle 11g R2.
执行全备的语句:backup incremental level 0 database;--因为后面要用到增量备份,所以就采用零级备份的方式
二、模拟数据文件全部丢失;
1)备份数据库;
rman target sys/asd@orcl
RMAN>backupincremental level 0 database;--缺省会使用配置中的格式来备份;
2)scott账户下新建测试表:test_20151031a
SQL> create table test_20151031a as select * from tabs;
Table created.
SQL> select count(1) fromtest_20151031a;
COUNT(1)
----------
15
3)删除所有数据文件
rm �Cf /u01/app/oracle/oradata/orcl/*.dbf
sys执行下列操作报错
SQL> select * from dba_data_files;
select * from dba_data_files
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQLlevel 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1:'/u01/app/oracle/oradata/orcl/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
4)关闭数据库准备恢复:
shutdown abort;--shutdown immediate会报错
5) 启动数据库至nomount状态.
--原本书上写这里要准备密码文件和spfile,但我测试时未使用到这两者也能恢复成功
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1336960 bytes
Variable Size 314575232 bytes
Database Buffers 96468992 bytes
Redo Buffers 10289152 bytes
6)启动RMAN
rman target /
7)告诉RMAN要操作的数据库,通过DBID设置:
select dbid from v$database;--查看DBID
set dbid 1405423294
8)启动数据库至mount状态:
--可以忽略从自动备份中还原控制文件的步骤
RMAN> sql 'alter database mount';
using target database control file insteadof recovery catalog
sql statement: alter database mount
9)还原数据文件
restore database;
10)恢复数据库
recover database;
11)打开数据库
sql 'alterdatabase open';
也可以使用
sql 'alter databaseopen resetlogs';--两者的区别在于是否重置日志
13)要立即做一次全备
rman target sys/asd@orcl
RMAN>backupincremental level 0 database;--缺省会使用配置中的格式来备份;
14)验证测试表是否存在
SQL> select count(1) fromtest_20151031a;
COUNT(1)
----------
15
三、非关键/关键数据数据文件丢失下的恢复
1)创建测试表
在scott账户下创建测试表:
SQL>create table test_20151031d as select *from tabs;
2)删除users01.dbf
rm -f/u01/app/oracle/oradata/orcl/users01.dbf
3)数据文件下线
alter database datafile'/u01/app/oracle/oradata/orcl/users01.dbf' offline;
4)RMAN 模式下restore/recover数据文件
restore datafile '/u01/app/oracle/oradata/orcl/users01.dbf';
recover datafile '/u01/app/oracle/oradata/orcl/users01.dbf'
5)数据文件上线
alter database datafile'/u01/app/oracle/oradata/orcl/users01.dbf' online;
注:
1)非关键数据文件丢失不用关闭数据库,关键数据文件丢失需要关闭数据库。
2)非关键数据文件丢失后,执行查询操作时,前台没有发现异常,告警文件中会有相关记录。