RMAN基于时间的恢复
【测试】
首先删除以前的备份文件
RMAN>delete backup;
备份
RMAN>backup database format'/u01/rback/rm_%U';
设置时间:
SQL>set time on;
15:21:06 SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T4 TABLE
EE2 TABLE
T1 TABLE
TE2 TABLE
TE3 TABLE
9 rows selected.
删除一张表【目的:基于时间的不完全恢复,找回te2表】
15:23:54 SQL> drop table te2 purge;
Table dropped.
15:24:12 SQL>
1.关闭数据库
15:26:28 SQL> shutdown immediate;
2.启动到mount状态
15:27:16 SQL> startup mount;
3.设置环境变量
export NLS_DATE_FORMAT='YYYY-MM-DD:HH24:MI:SS';
export NLS_LANG=AMERICAN_AMERICA
4.执行恢复脚本
run{
set until time = '2014-04-02:15:21:06';
restore database;
recover database;
alter database open resetlogs;
}
executing command: SET until clause
using target database control file instead of recovery catalog
Starting restore at 2014-04-02:15:43:48
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /u01/oracle/oradata/orcl/system01.dbf
restoring datafile 00002 to /u01/oracle/oradata/orcl/undotbs01.dbf
restoring datafile 00003 to /u01/oracle/oradata/orcl/sysaux01.dbf
restoring datafile 00004 to /u01/oracle/oradata/orcl/users01.dbf
restoring datafile 00005 to /u01/oracle/oradata/orcl/example01.dbf
restoring datafile 00006 to /u01/oracle/oradata/orcl/test1.dbf
channel ORA_DISK_1: reading from backup piece /u01/rback/rm_0dp4nrik_1_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/rback/rm_0dp4nrik_1_1 tag=TAG20140402T151012
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 2014-04-02:15:44:13
Starting recover at 2014-04-02:15:44:13
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 2014-04-02:15:44:17
database opened
RMAN>
5.查看数据库
15:46:42 SQL> conn scott/tiger
Connected.
15:46:54 SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
T4 TABLE
EE2 TABLE
T1 TABLE
TE2 TABLE
TE3 TABLE
9 rows selected.
15:47:00 SQL>
6.找回te2表,恢复成功。
RMAN的日志序列号恢复
set until sequence
【测试】
查看当前日志组的序列号:
SQL>desc v$log;
Name Null? Type
----------------------------------------- -------- ----------------------------
GROUP# NUMBER
THREAD# NUMBER
SEQUENCE# NUMBER
BYTES NUMBER
MEMBERS NUMBER
ARCHIVED VARCHAR2(3)
STATUS VARCHAR2(16)
FIRST_CHANGE# NUMBER
FIRST_TIME DATE
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 1 CURRENT
2 0 UNUSED
3 0 UNUSED
切换日志组(多切换几次)
SQL> alter system switch logfile;
查看日志
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 4 ACTIVE
2 5 CURRENT
3 3 INACTIVE
【假设不小心删除了scott用户下的emp表】
SQL> drop table emp purge;
Table dropped.
这是不知道删除时间,只知道记录在5号的日志里。
再次切换日志
SQL> alter system switch logfile;
再次查看
SQL> select group#,sequence#,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 4 INACTIVE
2 5 ACTIVE
3 6 CURRENT
记录在6号日志里。
同时在6号里创建一个emp2表
SQL> create table emp2 as select * from t4;
Table created.
SQL> select * from emp2;
D
-
X
1.关闭数据库
SQL>shutdown immediate;
2.装载数据库
SQL>startup mount;
3.执行脚本
run{
set until sequence 6;
restore database;
recover database;
alter database open resetlogs;
}
虽然恢复到sequence 6,但是只到5的状态。
4.查看scott
SQL> conn scott/tiger
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
BONUS TABLE
SALGRADE TABLE
T4 TABLE
EE2 TABLE
T1 TABLE
TE2 TABLE
TE3 TABLE
发现emp表没了,创建的emp2也没了。
5.sequence恢复成功。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29509120/viewspace-1145866/
,如需转载,请注明出处,否则将追究法律责任。