日期:2014-05-17  浏览次数:21198 次

alter database open resetlogs的问题
我今天学习了一下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';
----------查看测试结果----------------
<