当然,在 Oracle RAC 环境中,有多个数据库运行在多个主机上。 但在这样的环境中调用 RMAN 时,不得不只连接到一个实例(使用 TARGET=/)上,从而导致一个节点执行所有工作而其他节点却相对空闲。
在 Oracle 数据库 10g 第 2 版之前,让两个节点执行该工作的一个方法就是创建多个连接到多个实例的通道。 以下显示了一个相关 RMAN 命令的示例:
allocate channel = c1 type sbt_tape connect = 'rman/rmanpass@inst1'; allocate channel = c2 type sbt_tape connect = 'rman/rmanpass@inst2';
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file ORA-01110: data file 201: '/u01/app/oracle/oradata/TEST/temp01.dbf' ORA-27037: unable to obtain file status Linux Error:2: No such file or directory Additional information: 3 Sun Mar 27 20:29:00 2005 Errors in file /u01/app/oracle/admin/TEST/bdump/test_dbw0_15457.trc: ORA-01186: file 201 failed verification tests ORA-01157: cannot identify/lock data file 201 - see DBWR trace file ORA-01110: data file 201: '/u01/app/oracle/oradata/TEST/temp01.dbf' Sun Mar 27 20:29:00 2005 File 201 not verified due to error ORA-01157 Sun Mar 27 20:29:00 2005 Dictionary check complete Sun Mar 27 20:29:00 2005 SMON: enabling tx recovery Sun Mar 27 20:29:00 2005 Re-creating tempfile /u01/app/oracle/oradata/TEST/temp01.dbf
SQL> select first_name, last_name 2 from accounts 3 where acc_no = 3; FIRST_NAME LAST_NAME ------------------------------ ----------- Alan Smith
SQL> update accounts 2 set first_name = 'John' 3 where acc_no = 3;
现在,毁坏数据库,从备份恢复,然后在 RESETLOGS 选项中打开已恢复的数据库。
假设一段时间过后,大厅角落里传来了一个气急败坏的声音“靠”,然后就有人请您将数据库闪回到先前的某个时间点,而这个时间点恰好位于 RESETLOGS 操作之前。
这时只需发出以下命令即可。
SQL> Flashback database to before resetlogs;
SQL> select first_name, last_name 2 from accounts 3 where acc_no = 3; FIRST_NAME LAST_NAME ------------------------------ ----------- Alan Smith
| 第1页: Oracle 的自身备份 | 第2页: 既往作业和当前作业的动态 RMAN 视图 |
| 第3页: 为 Oracle RAC 集群动态分配通道 | 第4页: 闪回数据库中的恢复点 |