RMAN实例入门,备份与恢复


本文用step by step的方式介绍一下RMAN的入门使用,通常保存备份目录的目录数据库和目标数据库应该在不同的机器上,这里两个数据库在同一台机器上.

在listener.ora中加入

    (SID_DESC =
      (GLOBAL_DBNAME = rmtgt)
      (Oracle_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = but)
    )

tns配置如下:(让target 为静态注册,这样startup nomount的时候才能从rman连上)

target =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = NBK-DAL-625040.ap.bt.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rmtgt)
    )
  )
catalog =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = NBK-DAL-625040.ap.bt.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

1,在保存备份目录的目录数据库建立一个rman用户并创建相应的权限

sqlplus sys/sys@catalog as sysdba

create tablespace rmants datafile 'D:\oracle\product\10.2.0\oradata\orcl\rmants.dbf' size 20M;

create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants;
grant recovery_catalog_owner to rman;
grant connect, resource to rman;

2,在目录数据库中创建恢复目录

C:\>rman catalog rman/rman@catalog
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Jan 12 15:02:22 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to recovery catalog database
RMAN> create catalog tablespace rmants;
recovery catalog created

注册目标数据库到恢复目录,注意这里的连接串是targe
C:\>rman target sys/sys@target
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Jan 12 15:08:42 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: BUT (DBID=1215064705)

连接到目录数据库,注册目标数据库
RMAN> connect catalog rman/rman@catalog;
connected to recovery catalog database

RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

到此为止前面的准备工作都做好了,下面就可以使用RMAN 来进行备份和恢复了。

下面来进行备份:

1,创建一个目录 D:\oracle\rmanrep

2,C:\>rman target sys/sys@target catalog rman/rman@catalog
3,RMAN> run{
2>  allocate channel c1 type disk;
3>  backup database format 'D:\oracle\rmanrep\butdb.dmp';
4> }

目标数据库备份为D:\oracle\rmanrep\butdb.dmp

RMAN> list backup; 可以查看备份的信息.

如果想删掉备份,(194 为备份的BS key)

RMAN> allocate channel for delete type disk;
RMAN> change backupset 194 delete;

下面来做恢复

1,将目标数据库shutdown,将UNDOTBS01.DBF文件重命名为UNDOTBS01.DBF.bak模拟数据文件丢失.

2,将目标数据库 startup mount

3,在rman下恢复

a,C:\>rman target sys/sys@target
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Jan 12 17:59:50 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: BUT (DBID=3712141887, not open)

注意这里可以看到数据库不是open状态,网络字符串'target'必须是通过静态注册的才能连接上.

这时候open数据库
b,RMAN> alter database open;
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 01/12/2012 18:01:42
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\BUT\USERS01.DBF'

可以看到datafile 4找不到

c,
RMAN> restore datafile 4;

Starting restore at 12-JAN-12
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00004 to D:\ORACLE\PRODUCT\10.2.0\ORADATA\BUT\USERS01.DBF
channel ORA_DISK_1: reading from backup piece D:\ORACLE\RMANREP\BUTDB.DMP
channel ORA_DISK_1: restored backup piece 1
piece handle=D:\ORACLE\RMANREP\BUTDB.DMP tag=TAG20120112T172743
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03

Finished restore at 12-JAN-12

d,

RMAN> recover datafile 4;

Starting recover at 12-JAN-12
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:04

Finished recover at 12-JAN-12

e,恢复成功,打开数据库,

RMAN> alter database open;

database opened

相关内容