RMAN backup scheme RMAN backup archive mode damages (loss) multiple data files, restores the entire database 1. connects to the database, creates a test table, and inserts records
SQL * Plus: Release 8.1.6.0.0-Production on Tue May 6 13:46:32 2003 oracle training (c) Copyright 1999 Oracle Corporation. all rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test (a int); Table created SQL> insert into test values (1); 1 row inserted SQL> commit; Commit complete
2. Back up the database
Under DOS, C:> \ rman prepare file = bakup. rcv msglog = backup. log; The following is the backup. log content. Recovery Manager: Release 8.1.6.0.0-Production 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.
This indicates that the backup is successful. 3. continue inserting records in the test table
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. Shut down the database and simulate the loss of data files
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. Start the database and check for errors
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 'query 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
We can know that there are four data files to be restored. 6. Recovery Using 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> } RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=17 devtype=DISK RMAN-03022: compiling command: restore RMAN-03025: performing implicit partial resync of recovery catalog RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: IRESTORE RMAN-03023: executing command: IRESTORE RMAN-08016: channel c1: starting datafile backupset restore RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03 RMAN-08089: channel c1: specifying datafile(s) to restore from backup set RMAN-08523: restoring datafile 00001 to D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF RMAN-08523: restoring datafile 00002 to D:\ORACLE\ORADATA\TEST\RBS01.DBF RMAN-08523: restoring datafile 00003 to D:\ORACLE\ORADATA\TEST\USER01.DBF RMAN-08523: restoring datafile 00004 to D:\ORACLE\ORADATA\TEST\TEMP01.DBF RMAN-08523: restoring datafile 00005 to D:\ORACLE\ORADATA\TEST\TOOLS01.DBF RMAN-08523: restoring datafile 00006 to D:\ORACLE\ORADATA\TEST\INDX01.DBF RMAN-08023: channel c1: restored backup piece 1 RMAN-08511: piece handle=D:\BACKUP\FULL04EN5UG0_4_1 tag=DBFULL params=NULL RMAN-08024: channel c1: restore complete RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: recover RMAN-03022: compiling command: recover(1) RMAN-03022: compiling command: recover(2) RMAN-03022: compiling command: recover(3) RMAN-03023: executing command: recover(3) RMAN-08054: starting media recovery RMAN-03022: compiling command: recover(4) RMAN-06050: archivelog thread 1 sequence 327 is already on disk as file D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00327.ARC RMAN-06050: archivelog thread 1 sequence 328 is already on disk as file D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00328.ARC RMAN-06050: archivelog thread 1 sequence 329 is already on disk as file D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00329.ARC RMAN-06050: archivelog thread 1 sequence 330 is already on disk as file D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00330.ARC RMAN-03023: executing command: recover(4) RMAN-08515: archivelog filename=D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00327.ARC thread=1 sequence=327 RMAN-08515: archivelog filename=D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00328.ARC thread=1 sequence=328 RMAN-08055: media recovery complete RMAN-03022: compiling command: sql RMAN-06162: sql statement: alter database open RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 RMAN>
7. Check database data (full recovery)
SQL> select * from test; A --------------------------------------- 1 2
Note: 1. As long as there is backup and archive, RMAN can also achieve full database recovery (no data loss) 2. Same OS backup database recovery, suitable for the loss of a large number of data files, or recover the database, including the system data file. 3. The target database is mounted. If the recovery is successful, open the database. 4. The RMAN backup and recovery commands are relatively simple and reliable. We recommend that you use RMAN to back up the database if necessary.