ITPub博客

首页 > 数据库 > Oracle > oracle10g数据库恢复(使用RMAN执行不完全恢复——基于时间的恢复及日志序列号恢复)

oracle10g数据库恢复(使用RMAN执行不完全恢复——基于时间的恢复及日志序列号恢复)

原创 Oracle 作者:丶慕子房 时间:2014-04-21 10:14:18 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-04-09

  • 博文量
    19
  • 访问量
    88485