RMAN> # script:bakup.rcv 2> # creater:chenjiping 3> # date:5.8.2003
4> # desc:backup all database datafile in archive with rman 5>
6> #connect database
7> connect rcvcat rman/rman@back; 8> connect target internal/virpure; 9>
10> #start backup database 11> run{
12> allocate channel c1 type disk;
13> backup full tag 'dbfull' format 'd:\\backup\\full%u_%s_%p' database 14> include current controlfile;
15> sql 'alter system archive log current'; 16> release channel c1; 17> } 18> #end 19>
RMAN-06008: connected to recovery catalog database
RMAN-06005: connected to target database: TEST (DBID=1788174720) RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate
RMAN-08030: allocated channel: c1
RMAN-08500: channel c1: sid=15 devtype=DISK RMAN-03022: compiling command: backup RMAN-03023: executing command: backup
RMAN-08008: channel c1: starting full datafile backupset
RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03 RMAN-08010: channel c1: specifying datafile(s) in backupset RMAN-08522: input datafile fno=00002 name=D:\\Oracle\\ORADATA\\TEST\\RBS01.DBF RMAN-08522: input datafile fno=00001
name=D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF
RMAN-08011: including current controlfile in backupset RMAN-08522: input datafile fno=00005 name=D:\\Oracle\\ORADATA\\TEST\\TOOLS01.DBF RMAN-08522: input datafile fno=00004 name=D:\\Oracle\\ORADATA\\TEST\\TEMP01.DBF RMAN-08522: input datafile fno=00006 name=D:\\Oracle\\ORADATA\\TEST\\INDX01.DBF RMAN-08522: input datafile fno=00003 name=D:\\Oracle\\ORADATA\\TEST\\USER01.DBF RMAN-08013: channel c1: piece 1 created
RMAN-08503: piece handle=D:\\BACKUP\\FULL04EN5UG0_4_1 comment=NONE RMAN-08525: backup set complete, elapsed time: 00:01:16 RMAN-03023: executing command: partial resync
RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete
RMAN-03022: compiling command: sql
RMAN-06162: sql statement: alter system archive log current RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 Recovery Manager complete. 到这里表示备份成功。
3、 继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete
SQL> select * from test; A
--------------------------------------- 1 2 SQL>alter system switch logfile; System altered.
SQL> alter system switch logfile; System altered.
4、 关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed. Database dismounted. Oracle instance shut down
C:\\>del D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\INDX01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\TOOLS01.DBF C:\\>del D:\\Oracle\\ORADATA\\TEST\\RBS01.DBF
5、启动数据库,检查错误 SQL> STARTUP
Oracle instance started.
Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: 'D:\\Oracle\\ORADATA\\TEST\\SYSTEM01.DBF'
查询v$recover_file
SQL> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME ---------- ------- ------------------ ---------- ----------- 1 ONLINE FILE NOT FOUND 0 2 ONLINE FILE NOT FOUND 0 5 ONLINE FILE NOT FOUND 0 6 ONLINE FILE NOT FOUND 0 可以知道有四个数据文件需要恢复.
6、利用RMAN进行恢复 C:\\>rman
Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back
RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure
RMAN-06005: connected to target database: TEST (DBID=1788174720) RMAN> run{
2> allocate channel c1 type disk; 3> restore database; 4> recover database;
5> sql 'alter database open'; 6> release channel c1; 7> }