试验计划:先做一个0级备份,再创建一个表,插入几条数据,最后删除表,然后通过rman把该表的数据恢复。
试验环境:在归档模式,oracle10.2.0.1
开始试验:
1.rman level 0备份
RMAN> backup incremental level 0
database;
Starting backup at
02
-DEC-
13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid
=
154
devtype=
DISK
channel ORA_DISK_1: starting incremental level
0
datafile backupset
channel ORA_DISK_1: specifying datafile(s)
in
backupset
input datafile fno
=
00001
name=/u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
system01.dbf
input datafile fno
=
00003
name=/u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
sysaux01.dbf
input datafile fno
=
00002
name=/u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
undotbs01.dbf
input datafile fno
=
00006
name=/u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
yn.dbf
input datafile fno
=
00004
name=/u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
users01.dbf
channel ORA_DISK_1: starting piece
1
at
02
-DEC-
13
channel ORA_DISK_1: finished piece
1
at
02
-DEC-
13
piece handle
=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_12_02/o1_mf_nnnd0_TAG20131202T211658_99s22c7o_.bkp tag=TAG20131202T211658 comment=
NONE
channel ORA_DISK_1: backup
set
complete, elapsed time:
00
:
01
:
25
channel ORA_DISK_1: starting incremental level
0
datafile backupset
channel ORA_DISK_1: specifying datafile(s)
in
backupset
including current control file
in
backupset
including current SPFILE
in
backupset
channel ORA_DISK_1: starting piece
1
at
02
-DEC-
13
channel ORA_DISK_1: finished piece
1
at
02
-DEC-
13
piece handle
=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_12_02/o1_mf_ncsn0_TAG20131202T211658_99s252by_.bkp tag=TAG20131202T211658 comment=
NONE
channel ORA_DISK_1: backup
set
complete, elapsed time:
00
:
00
:
05
Finished backup at
02
-DEC-
13
2.创建表
SQL> create table t1(id
int
,name varchar2(
20
));
Table created.
SQL
> insert into t1 values(
1
,
'
first
'
);
1
row created.
SQL
>
commit;
SQL
> insert into t1 values(
2
,
'
second
'
);
1
row created.
SQL
>
commit;
Commit complete.
SQL
> alter system switch
logfile;
System altered.
SQL
>
select
*
from
t1;
ID NAME
---------- --------------------
1
first
2
second
3.查询当前系统时间
SQL>
select
to_char(sysdate,
'
yyyy-mm-dd hh24:mi:ss
'
)
from
dual;
TO_CHAR(SYSDATE,
'
YY
-------------------
2013
-
12
-
02
21
:
41
:
55
4.删除表,关闭数据库,重启数据库
SQL>
drop table t1;
Table dropped.
SQL
>
shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL
>
startup mount
ORACLE instance started.
Total System Global Area
599785472
bytes
Fixed Size
2022632
bytes
Variable Size
243270424
bytes
Database Buffers
352321536
bytes
Redo Buffers
2170880
bytes
Database mounted.
SQL
>
select
status
from
v$instance;
STATUS
------------
MOUNTED
5.rman恢复
RMAN> run{
2> allocate channel c1 type disk;
3> set until time "to_date('2013-12-02 21:41:55','yyyy-mm-dd hh24:mi:ss')";
4> restore database;
5> recover database;
6> sql 'alter database open resetlogs';
7
>
}
allocated channel: c1
channel c1: sid
=
155
devtype=
DISK
executing command: SET until clause
Starting restore at
02
-DEC-
13
channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore
from
backup
set
restoring datafile
00001
to /u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
system01.dbf
restoring datafile
00002
to /u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
undotbs01.dbf
restoring datafile
00003
to /u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
sysaux01.dbf
restoring datafile
00004
to /u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
users01.dbf
restoring datafile
00006
to /u01/app/oracle/product/
10.2
.
0
/db_2/oradata/orcl/
yn.dbf
channel c1: reading
from
backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_12_02/
o1_mf_nnnd0_TAG20131202T211658_99s22c7o_.bkp
channel c1: restored backup piece
1
piece handle
=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2013_12_02/o1_mf_nnnd0_TAG20131202T211658_99s22c7o_.bkp tag=
TAG20131202T211658
channel c1: restore complete, elapsed time:
00
:
00
:
45
Finished restore at
02
-DEC-
13
Starting recover at
02
-DEC-
13
starting media recovery
archive log thread
1
sequence
56
is
already on disk
as
file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/
o1_mf_1_56_99s2jvny_.arc
archive log thread
1
sequence
57
is
already on disk
as
file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/
o1_mf_1_57_99s2lpbk_.arc
archive log thread
1
sequence
58
is
already on disk
as
file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/
o1_mf_1_58_99s3d5ph_.arc
archive log thread
1
sequence
1
is
already on disk
as
file /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/
o1_mf_1_1_99s3j6fg_.arc
archive log filename
=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/o1_mf_1_56_99s2jvny_.arc thread=
1
sequence=
56
archive log filename
=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/o1_mf_1_57_99s2lpbk_.arc thread=
1
sequence=
57
archive log filename
=/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2013_12_02/o1_mf_1_58_99s3d5ph_.arc thread=
1
sequence=
58
media recovery complete, elapsed time:
00
:
00
:
02
Finished recover at
02
-DEC-
13
sql statement: alter database open resetlogs
released channel: c1
RMAN
>
6.查询被删除的数据
SQL>
select
*
from
t1;
ID NAME
---------- --------------------
1
first
2
second
SQL
>
7.重新备份数据库
在生产环境中,不完全恢复后,是要用rman重新备份的。因为该备份是以后数据恢复的一个起点。

