--=================================
-- 使用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的配置与数据库情况
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
三、备份数据库并关闭数据库,删除system01.dbf文件
使用备份脚本对数据库进行备份,备份脚本在最后给出
D:\>rman target robinson/robin@testhh cmdfile=D:\oracle\oradata\testHH\backup.rman log=D:\oracle\ora
data\testHH\backup.log
四、从异机进行还原与恢复
1.关闭数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
2.删除system01.dbf数据文件以便测试恢复
SQL> ho del D:\oracle\oradata\testHH\SYSTEM01.DBF
3.重启实例,收到错误提示
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'
4.使用RMAN进行还原与恢复
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
5.结论
从上面的备份与恢复来看,使用异机备份与恢复与使用本地服务器备份与恢复操作方式并无太多差异,但数据库的性能则受到一定
的影响。即备份到异机其备份与恢复速度低于备份恢复在本地服务器。在大型生产环境中且实时性要求特高的情形,尽可能的避免异机
备份与恢复。尽管如此,备份到异机与从异机恢复仍然不失为一种可选方案。
五、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;}
六、快捷参考
有关性能优化请参考
共享池的调整与优化(Sharedpool Tuning)
Oracle表缓存(cachingtable)的使用
有关ORACLE体系结构请参考
Oracle联机重做日志文件(ONLINE LOG FILE)
Oracle回滚(ROLLBACK)和撤销(UNDO)
Oracle实例和Oracle数据库(Oracle体系结构)
有关闪回特性请参考
Oracle闪回特性(FLASHBACK DATABASE)
Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle闪回特性(Flashback Query、FlashbackTable)
Oracle闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考
Oracle基于用户管理恢复的处理(详细描述了介质恢复及其处理)
有关RMAN的备份恢复与管理请参考
RMAN 备份路径困惑(使用plus archivelog时)
有关ORACLE故障请参考
对参数FAST_START_MTTR_TARGET= 0 的误解及设定
SPFILE错误导致数据库无法启动(ORA-01565)
有关ASM请参考
有关SQL/PLSQL请参考
SQL 基础--> 集合运算(UNION与UNION ALL)
SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR)
SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
有关ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
systemsys,sysoper sysdba 的区别
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle补丁全集 (Oracle 9i 10g 11g Path)
Oracle10.2.0.1 升级到10.2.0.4