RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1
RMAN-08500: channel c1: sid=17 devtype=DISK RMAN-03022: compiling command: restore
RMAN-03025: performing implicit partial resync of recovery catalog RMAN-03023: executing command: partial resync
RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: IRESTORE RMAN-03023: executing command: IRESTORE
RMAN-08016: channel c1: starting datafile backupset restore
RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03 RMAN-08089: channel c1: specifying datafile(s) to restore from backup set RMAN-08523: restoring datafile 00001 to D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF RMAN-08523: restoring datafile 00002 to D:\\Oracle\\ORADATA\\TEST\\RBS01.DBF RMAN-08523: restoring datafile 00003 to D:\\Oracle\\ORADATA\\TEST\\USER01.DBF RMAN-08523: restoring datafile 00004 to D:\\Oracle\\ORADATA\\TEST\\TEMP01.DBF RMAN-08523: restoring datafile 00005 to D:\\Oracle\\ORADATA\\TEST\\TOOLS01.DBF RMAN-08523: restoring datafile 00006 to D:\\Oracle\\ORADATA\\TEST\\INDX01.DBF
RMAN-08023: channel c1: restored backup piece 1
RMAN-08511: piece handle=D:\\BACKUP\\FULL04EN5UG0_4_1 tag=DBFULL params=NULL
RMAN-08024: channel c1: restore complete RMAN-03023: executing command: partial resync
RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: recover RMAN-03022: compiling command: recover(1) RMAN-03022: compiling command: recover(2) RMAN-03022: compiling command: recover(3) RMAN-03023: executing command: recover(3) RMAN-08054: starting media recovery RMAN-03022: compiling command: recover(4)
RMAN-06050: archivelog thread 1 sequence 327 is already on disk as file D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00327.ARC
RMAN-06050: archivelog thread 1 sequence 328 is already on disk as file D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00328.ARC
RMAN-06050: archivelog thread 1 sequence 329 is already on disk as file D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00329.ARC
RMAN-06050: archivelog thread 1 sequence 330 is already on disk as file D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00330.ARC RMAN-03023: executing command: recover(4)
RMAN-08515: archivelog
filename=D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00327.ARC thread=1 sequence=327
RMAN-08515: archivelog
filename=D:\\Oracle\\ORADATA\\TEST\\ARCHIVE\\TESTT001S00328.ARC thread=1 sequence=328
RMAN-08055: media recovery complete RMAN-03022: compiling command: sql
RMAN-06162: sql statement: alter database open RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 RMAN>
7、 检查数据库的数据(完全恢复) SQL> select * from test; A
--------------------------------------- 1 2 说明:
1、只要有备份与归档存在,RMAN也可以实现数据库的完全恢复(不丢失数据); 2、同OS备份数据库恢复,适合于丢失大量数据文件,或包含系统数据文件在内的数据库的恢复;
3、目标数据库在mount下进行,如果恢复成功,再打开数据库;
4、RMAN的备份与恢复命令相对比较简单并可靠,建议有条件的话,都采用RMAN进行数据库的备份。
4.4 不完全恢复案例
4.4.1 OS备份下的基于时间的恢复
不完全恢复可以分为基于时间的恢复,基于改变的恢复与基于撤消的恢复,这里已基于时间的恢复为例子来说明不完全恢复过程。
基于时间的恢复可以不完全恢复到现在时间之前的某一个时间,对于某些误操作,如删除了一个数据表,可以在备用恢复环境上恢复到表的删除时间之前,然后把该表导出到正式环境,避免一个人为的错误。
1、 连接数据库,创建测试表并插入记录: SQL> connect internal/password as sysdba; Connected.
SQL> create table test(a int); Table created
SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、 备份数据库,这里最好备份所有的数据文件,包括临时数据文件:
SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql 或冷备份也可以
3、 删除测试表,假定删除前的时间为T1,在删除之前,便于测试,继续插入数据并应用到归 档。
SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete
SQL> select * from test; A
--------------------------------------- 1 2 SQL> alter system switch logfile; Statement processed.
SQL> alter system switch logfile; Statement processed.
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2003-05-21 14:43:01