使用RMAN实现异机备份恢复(WIN平台)
使用RMAN实现异机备份恢复(WIN平台)
在有些情况下,如数据库服务器处于磁盘空间的压力或成本控制需要将数据文件备份到异机,使用RMAN可以完成该工作。基于Windows平台所需完成的配置相对简单,仅仅是添加账户与使用新增的帐户来启动数据库服务以及设置共享路径。
下面给出具体描述。
一、配置数据库服务器与备份目的主机
1. 帐户配置(假定有主机A,B 且A为数据库服务器,B为备份目的主机,且能互相ping通)
如果主机A与主机B使用的Administrator密码相同,且A上的OracleServiceDBNAME服务和OracleOraHome92TNSListener服务都以"本
地系统账户登陆"
如果主机A与主机B使用不同的Administrator密码,处于安全考虑不宜设为相同,则则可以分别在主机A与主机B上新建一用户,假
定在主机A上建立DBA_oracle,密码为ORA_PWD,则在主机B上也建立该用户(用户名可以不同,密码必须相同),密码同样设置为ORA_PWD
。将刚建好的用户在各自主机将其加入到Aministrators组
2. 设定OracleServiceDBNAME服务和OracleOraHome92TNSListener服务的启动帐户。在运行处输入services.msc。在主机A上设定使用此帐
户登陆,即使用刚刚建立的DBA_oracle,输入密码启动,该设置需要重启后有效
3. 在主机B上设定共享文件夹,如RMAN_Shared,设置其权限为完全控制(在A上使用\\IP\RMAN_Shared测试是否可写入文件)
二、查看RMAN的配置与数据库情况
三、备份数据库并关闭数据库,删除system01.dbf文件
- RMAN> show CONTROLFILE AUTOBACKUP;
- RMAN 配置参数为:
- CONFIGURE CONTROLFILE AUTOBACKUP ON; -->控制文件自动备份,建议开启
- RMAN> show CONTROLFILE AUTOBACKUP FORMAT;
- RMAN 配置参数为:
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '\\192.168.1.151\RMAN_Shared\CONTROL
- _%F'; -->控制文件备份位置
- RMAN> show SNAPSHOT CONTROLFILE NAME;
- RMAN 配置参数为:
- CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\ORA92\DATABASE\SNCFTESTHH.ORA'; # default -->快照控制文件位置
- SQL> select * from v$version; -->数据库的版本,当前演示环境为Oracle 9i
- BANNER
- ----------------------------------------------------------------
- Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
- PL/SQL Release 9.2.0.1.0 - Production
- CORE 9.2.0.1.0 Production
- TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
- NLSRTL Version 9.2.0.1.0 - Production
- SQL> show parameter db_name
- NAME TYPE VALUE
- ------------------------------------ ----------- ---------------
- db_name string testHH
使用备份脚本对数据库进行备份,备份脚本在最后给出
四、从异机进行还原与恢复
- D:\>rman target robinson/robin@testhh cmdfile=D:\oracle\oradata\testHH\backup.rman log=D:\oracle\ora
- data\testHH\backup.log
1.关闭数据库
2.删除system01.dbf数据文件以便测试恢复
- SQL> shutdown immediate;
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
SQL> ho del D:\oracle\oradata\testHH\SYSTEM01.DBF3.重启实例,收到错误提示
4.使用RMAN进行还原与恢复
- SQL> startup
- ORACLE 例程已经启动。
- Total System Global Area 126950220 bytes
- Fixed Size 453452 bytes
- Variable Size 109051904 bytes
- Database Buffers 16777216 bytes
- Redo Buffers 667648 bytes
- 数据库装载完毕。
- ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
- ORA-01110: 数据文��� 1: 'D:\ORACLE\ORADATA\TESTHH\SYSTEM01.DBF'
5.结论
- D:\>rman target / -->连接到缺省的目标数据库
- 恢复管理器: 版本9.2.0.8.0 - Production
- Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
- 连接到目标数据库: TESTHH (DBID=3955637780)
- RMAN> restore database; -->还原数据库
- 启动 restore 于 25-7月 -11
- 正在使用目标数据库控制文件替代恢复目录
- 分配的通道: ORA_DISK_1
- 通道 ORA_DISK_1: sid=14 devtype=DISK
- 通道 ORA_DISK_1: 正在开始恢复数据文件备份集
- 通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
- 正将数据文件00002恢复到D:\ORACLE\ORADATA\TESTHH\UNDOTBS01.DBF
- 正将数据文件00003恢复到D:\ORACLE\ORADATA\TESTHH\CWMLITE01.DBF
- 正将数据文件00005恢复到D:\ORACLE\ORADATA\TESTHH\EXAMPLE01.DBF
- 正将数据文件00006恢复到D:\ORACLE\ORADATA\TESTHH\INDX01.DBF
- 正将数据文件00010恢复到D:\ORACLE\ORADATA\TESTHH\XDB01.DBF
- 通道 ORA_DISK_1: 已恢复备份段 1
- 段 handle=\\192.168.1.151\RMAN_SHARED\FULL_TESTHH_15MIBDKA_1_1 tag=FULL_BAK params=NULL
- 通道 ORA_DISK_1: 恢复完成
- 通道 ORA_DISK_1: 正在开始恢复数据文件备份集
- 通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
- 正将数据文件00001恢复到D:\ORACLE\ORADATA\TESTHH\SYSTEM01.DBF
- 正将数据文件00004恢复到D:\ORACLE\ORADATA\TESTHH\DRSYS01.DBF
- 正将数据文件00007恢复到D:\ORACLE\ORADATA\TESTHH\ODM01.DBF
- 正将数据文件00008恢复到D:\ORACLE\ORADATA\TESTHH\TOOLS01.DBF
- 正将数据文件00009恢复到D:\ORACLE\ORADATA\TESTHH\USERS01.DBF
- 通道 ORA_DISK_1: 已恢复备份段 1
- 段 handle=\\192.168.1.151\RMAN_SHARED\FULL_TESTHH_16MIBDMB_1_1 tag=FULL_BAK params=NULL
- 通道 ORA_DISK_1: 恢复完成
- 完成 restore 于 25-7月 -11
- RMAN> recover database; -->恢复数据库
- 启动 recover 于 25-7月 -11
- 使用通道 ORA_DISK_1
- 正在开始介质的恢复
- 完成介质的恢复
- 完成 recover 于 25-7月 -11
- SQL> alter database open;
- SQL> select name,open_mode from v$database;
- NAME OPEN_MODE
- --------- ----------
- TESTHH READ WRITE
从上面的备份与恢复来看,使用异机备份与恢复与使用本地服务器备份与恢复操作方式并无太多差异,但数据库的性能则受到一定
的影响。即备份到异机其备份与恢复速度低于备份恢复在本地服务器。在大型生产环境中且实时性要求特高的情形,尽可能的避免异机
备份与恢复。尽管如此,备份到异机与从异机恢复仍然不失为一种可选方案。
五、RMAN 备份脚本
- run{
- allocate channel ch1 device type disk;
- allocate channel ch2 device type disk;
- backup database format='\\192.168.1.151\RMAN_Shared\full_%d_%U' -->注意格式的写法\\IP\Shared_folder\
- tag='full_bak';
- sql "alter system archive log current";
- crosscheck archivelog all;
- delete noprompt expired archivelog all;
- backup archivelog all format='\\192.168.1.151\RMAN_Shared\log_%d_%U' delete input -->注意格式的写法\\IP\Shared_folder\
- tag='log_bak';
- release channel ch1;
- release channel ch2;}
评论暂时关闭