实验一、基本操作(备份前的准备)
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