Oracle RMAN不完全恢复database到指定时间点

2014-11-24 18:52:10 · 作者: · 浏览: 0

cmd>sqlplus / as sysdba;


SQL>shutdown immediate


SQL>alter database archivelog;


SQL>conn squirrel/squirrel;


SQL>CREATE TABLE a(id number(10) not null primary key, name varchar2(20));


SQL>INSERT INTO a(id,name) values(1,zhangsan);


SQL>conn / as sysdba;


SQL> select * from squirrel.a;



ID NAME


---------- --------------------


1 zhangsan


设置时间格式


SQL>alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;


SQL>select sysdate from dual;


SYSDATE


-------------------


2012-03-01 16:00:42


SQL>shutdown immediate;


SQL>startup mount;


SQL>exit


cmd>rman target /


RMAN>backup database;


RMAN>exit;


这里模拟对T表的误删除(DDL类型的TRUNCATE方法)


SQL>truncate table squirrel.a;


接着我们不完全恢复到指定时间2012-03-01 16:00:42


【重要提醒】在使用RMAN完成基于时间点的不完全恢复之前,最好对现场做一个备份,我们这里只需要备份数据库的控制文件和日志文件即可。当恢复结束后不满足我们要求时,可以恢复控制文件和日志文件后重新进行恢复。



RMAN> run {


2> allocate channel c1 type disk;


3> allocate channel c2 type disk;


4> sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';


5> set until time='2012-03-01 16:00:42';


6> restore database;


7> recover database;


8> alter database open resetlogs;}



使用目标数据库控制文件替代恢复目录


分配的通道: c1


通道 c1: sid=156 devtype=DISK



分配的通道: c2


通道 c2: sid=155 devtype=DISK



sql 语句: alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"



正在执行命令: SET until clause