我今天学习了一下oracle RMAN的备份恢复,就是删除数据文件和控制文件,保留日志文件的恢复。遇到一个问题。就是在操作的最后一部分,及alter database open 报错,说必须使用alter database open resetlogs打开。可是我认为应该使用alter database open 打开,不知道是什么原因。请大侠帮助。
数据库处于归档模式下,做数据库联机备份,并且RMAN的参数是使用快闪恢复区作为备份文件的存储目录
,配置了控制文件自动备份。
1、使数据库处于归档模式
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL> conn sys/ysyy@ahufgov as sysdba;
SQL> archive log list;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
2、查看快闪恢复区参数
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL> conn sys/ysyy@ahufgov as sysdba;
SQL> show parameter db_recovery_file_dest;
3、配置控制文件自动存档
C:\Documents and Settings\Administrator>rman target system/ysyy@ahufgov
RMAN> show all;
RMAN> configure controlfile autobackup on;
RMAN> show all;
数据文件、控制文件丢失的恢复,日志文件保存良好。
数据库联机备份
C:\Documents and Settings\Administrator>rman target rman/ysyy@ahufgov
RMAN> backup as compressed backupset database plus archivelog delete all input;
备份数据库后,为了演示备份后是否有数据丢失,我们在system用户下,创建两张表,并插入数据。
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL> conn system/ysyy@ahufgov
SQL> create table testa as select * from dba_segments;
SQL> select count(*) from testa;
SQL> create table testb (id int,name varchar2(18));
SQL> insert into testb values ('1','zhangsan');
SQL> insert into testb values ('1','zhangsan');
SQL> insert into testb values ('1','zhangsan');
SQL> insert into testb values ('1','zhangsan');
SQL> insert into testb values ('1','zhangsan');
C:\Documents and Settings\Administrator>sqlplus sys/ysyy@ahufgov as sysdba;
SQL> shutdown immediate
删除D:\app\Administrator\oradata\ahufgov下所有的数据文件、控制文件,保留日志文件。
C:\Documents and Settings\Administrator>rman target rman/system@ahufgov
RMAN> startup
RMAN> restore controlfile from
'D:\app\Administrator\flash_recovery_area\ahufgov\AUTOBACKUP\2013_04_23
\O1_MF_S_813491555_8QCTC56T_.BKP';
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> sql 'alter database open resetlogs';----在这里应该使用RMAN> sql 'alter database open';
----------查看测试结果----------------
C:\Documents and Settings\Administrator>sqlplus system/ysyy@ahufgov
SQL> select count(*) from testa;
COUNT(*)
----------
6014
SQL> select count(*) from testb;
COUNT(*)
----------
5
RMAN> sql 'alter database open resetlogs';----在这里应该使用RMAN> sql 'alter database open';
----------查看测试结果----------------
------解决方案--------------------