实验一、基本操作(备份前的准备)
1、创建恢复目录(catalog)表空间
SQL> create tablespace rmantbs datafile '/oracle/oradata/zwb/rmantbs01.dbf' size 10m autoextend on;

Tablespace created.

2、建catalog的管理用户(必须制定表空间)
SQL> create user rman identified by rman default tablespace rmantbs;

User created.

3、授权
SQL> grant connect,resource,RECOVERY_CATALOG_OWNER to rman;

Grant succeeded.

4、连接到catalog库
SQL> rman target / catalog rman/rman

5、未注册时rman用户无表无视图
SQL> conn rman/rman
Connected.
SQL> select * from user_tables;

no rows selected

SQL> select * from user_views;

no rows selected

6、注册
RMAN> create catalog;
RMAN> register database;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete


SQL> select count(*) from user_tables;

  COUNT(*)
----------
        37
SQL> select * from rc_database;

    DB_KEY  DBINC_KEY       DBID NAME     RESETLOGS_CHANGE# RESETLOGS
---------- ---------- ---------- -------- ----------------- ---------
         1          2  483133678 ZWB                 756754 25-MAY-12


实验二、备份语法和恢复语法
1、备份spfile
RMAN> backup spfile format '/oracle/rman/spfile%t'; 
2、备份controlfile
RMAN> backup current controlfile format '/oracle/rman/controlfile%t';
3、备份数据文件
RMAN> backup datafile 2 format '/oracle/rman/datafile2%t';
4、备份表空间
RMAN> backup tablespace system  format '/oracle/rman/system%t';
5、备份数据库
RMAN> backup database  format '/oracle/rman/database%t';
6、备份归档
RMAN> backup archivelog all format '/oracle/rman/archivelog%t';
7、删除备份片
RMAN> delete backupset;     --全删
RMAN>  delete backupset 109;
8、检验命令
RMAN> crosscheck backupset;        --检验备份片
RMAN> crosscheck archivelog all;   --检验归档

1、恢复spfile
RMAN> restore spfile to '/tmp/spfile785458680';
2、恢复controlfile
RMAN> restore controlfile from '/oracle/rman/controlfile785458961';

实验三、测试catalog 与非catalog 下的备份情况
1、测试非catalog下
[oracle@testsvr ~]$ rman target /

RMAN> backup spfile format '/oracle/rman/spfile%t';      ---测试备份参数文件

Starting backup at 08-JUN-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=213 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/spfile785456085 tag=TAG20120608T221445 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 08-JUN-12


RMAN> list backup;   ---显示备份信息(方法一)


List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
1       Full    80.00K     DISK        00:00:01     08-JUN-12     
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20120608T221445
        Piece Name: /oracle/rman/spfile785456085
  SPFILE Included: Modification time: 08-JUN-12


SQL> select * from v$backup_piece;    ---显示备份信息(方法二,从控制文件读取)


SQL> conn rman/rman
Connected.
SQL> select * from rc_backup_piece;    ---备份目录下无数据

no rows selected


2、测试catalog下
[oracle@testsvr ~]$ rman target / catalog rman/rman

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Jun 8 22:21:55 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: ZWB (DBID=483133678)
connected to recovery catalog database


RMAN> resync catalog;     ---重新同步恢复目录(把控制文件内容重新同步到恢复目录)

starting full resync of recovery catalog
full resync complete


SQL> select count(*) from rc_backup_piece;     ---已写进恢复目录

  COUNT(*)
----------
         1
结果:非catalog下写进控制文件,catalog下写入恢复目录


试验四、此时已从控制文件恢复到备份目录,模拟控制文件丢失的恢复情况

1、以重建控制文件的方式模拟控制文件丢失
SQL> alter database backup controlfile to trace noresetlogs;    --生成重建控制文件脚本

Database altered.


[oracle@testsvr rman]$ cd $ORACLE_BASE/admin/zwb/udump     
[oracle@testsvr udump]$ more zwb_ora_6719.trc       ---查看脚本


2、找出重建控制文件的脚本
CREATE CONTROLFILE REUSE DATABASE "ZWB" NORESETLOGS FORCE LOGGING ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/oradata/zwb/redo01.log'  SIZE 50M,
  GROUP 2 '/oracle/oradata/zwb/redo02.log'  SIZE 50M,
  GROUP 3 '/oracle/oradata/zwb/redo03.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/oracle/oradata/zwb/system01.dbf',
  '/oracle/oradata/zwb/undotbs01.dbf',
  '/oracle/oradata/zwb/sysaux01.dbf',
  '/oracle/oradata/zwb/users01.dbf',
  '/oracle/oradata/zwb/example01.dbf',
  '/oracle/oradata/zwb/rmantbs01.dbf'
CHARACTER SET ZHS16GBK
;

3、关数据库至nomount状态
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup nomount;
ORACLE instance started.

4、重建控制文件
SQL> CREATE CONTROLFILE REUSE DATABASE "ZWB" NORESETLOGS FORCE LOGGING ARCHIVELOG
  2      MAXLOGFILES 16
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 8
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 '/oracle/oradata/zwb/redo01.log'  SIZE 50M,
  9    GROUP 2 '/oracle/oradata/zwb/redo02.log'  SIZE 50M,
 10    GROUP 3 '/oracle/oradata/zwb/redo03.log'  SIZE 50M
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    '/oracle/oradata/zwb/system01.dbf',
 14    '/oracle/oradata/zwb/undotbs01.dbf',
 15    '/oracle/oradata/zwb/sysaux01.dbf',
 16    '/oracle/oradata/zwb/users01.dbf',
 17    '/oracle/oradata/zwb/example01.dbf',
 18    '/oracle/oradata/zwb/rmantbs01.dbf'
 19  CHARACTER SET ZHS16GBK
 20  ;

Control file created.

SQL> alter database open;

Database altered.

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/oracle/oradata/zwb/temp01.dbf'
  2       SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

Tablespace altered.    --重建完成

 

SQL> select * from v$backup_piece;     --此时控制文件里已无信息

no rows selected

 

实验五、备份控制文件

1、默认不备份控制文件
RMAN> show all;

starting full resync of recovery catalog
full resync complete
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default     ---默认不备份控制文件


RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;    --打开自动备份控制文件

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
starting full resync of recovery catalog
full resync complete


2、打开自动备份控制文件后均会备份控制文件
RMAN> backup spfile format '/oracle/rman/spfile%t';     --此时所有备份都会备份控制文件
Starting backup at 08-JUN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=196 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/spfile785458680 tag=TAG20120608T225800 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 08-JUN-12

Starting Control File and SPFILE Autobackup at 08-JUN-12
piece handle=/oracle/flashback/ZWB/autobackup/2012_06_08/o1_mf_s_785458684_7x5gxwv0_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 08-JUN-12

 

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP clear;     ---恢复默认值操作

old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN configuration parameters are successfully reset to default value
starting full resync of recovery catalog
full resync complete

3、备份控制文件
RMAN> backup current controlfile format '/oracle/rman/controlfile%t';

Starting backup at 08-JUN-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
channel ORA_DISK_1: starting piece 1 at 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/controlfile785458961 tag=TAG20120608T230241 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 08-JUN-12


实验六、备份数据文件
1、备份2号数据文件
RMAN> backup datafile 2 format '/oracle/rman/datafile2%t';

Starting backup at 08-JUN-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00002 name=/oracle/oradata/zwb/undotbs01.dbf
channel ORA_DISK_1: starting piece 1 at 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/datafile2785459296 tag=TAG20120608T230816 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 08-JUN-12

2、备份1号数据文件
RMAN> backup datafile 1 format '/oracle/rman/datafile1%t';

Starting backup at 08-JUN-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oracle/oradata/zwb/system01.dbf
channel ORA_DISK_1: starting piece 1 at 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/datafile1785459386 tag=TAG20120608T230946 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full 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 08-JUN-12
channel ORA_DISK_1: finished piece 1 at 08-JUN-12
piece handle=/oracle/rman/datafile1785459411 tag=TAG20120608T230946 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 08-JUN-12

结论:备份1号系统数据文件同时备份了控制文件和参数文件


实验七、模拟参数文件丢失,有rman备份进行恢复
1、模拟参数文件丢失
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/oracle/app/product/10.2.0/db_1/dbs/initzwb.ora'

2、此时数据库无法打开,rman也无法打开,需依赖警告日志取回参数文件
[oracle@testsvr ~]$ cd $ORACLE_BASE/admin
[oracle@testsvr bdump]$ vi alert_zwb.log
具体步骤见实验:从警告日志取回参数文件

3、取回参数文件启动数据库
SQL> startup nomount
ORACLE instance started.

4、用rman备份恢复参数文件
RMAN> restore spfile to '/tmp/spfile785458680';
[oracle@testsvr dbs]$  cp /tmp/spfile785458680 spfilezwb.ora