本文用step by step的方式介绍一下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