--=================================
-- 使用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;}

六、快捷参考

有关性能优化请参考

    ​​Oracle硬解析与软解析​

    ​​共享池的调整与优化(Sharedpool Tuning)​

    ​​Buffercache 的调整与优化(一)​

    ​​Oracle表缓存(cachingtable)的使用​


有关ORACLE体系结构请参考

    ​​Oracle表空间与数据文件​

    ​​Oracle密码文件​

    ​​Oracle参数文件​

    ​​Oracle联机重做日志文件(ONLINE LOG FILE)​

    ​​Oracle控制文件(CONTROLFILE)​

    ​​Oracle归档日志​

    ​​Oracle回滚(ROLLBACK)和撤销(UNDO)​

    ​​Oracle数据库实例启动关闭过程​

    ​​Oracle10g SGA 的自动化管理​

    ​​Oracle实例和Oracle数据库(Oracle体系结构)​


有关闪回特性请参考

    ​​Oracle闪回特性(FLASHBACK DATABASE)​

    ​​Oracle闪回特性(FLASHBACK DROP & RECYCLEBIN)​

    ​​Oracle闪回特性(Flashback Query、FlashbackTable)​

    ​​Oracle闪回特性(Flashback Version、Flashback Transaction)​


有关基于用户管理的备份和备份恢复的概念请参考

    ​​Oracle冷备份​

    ​​Oracle热备份​

    ​​Oracle备份恢复概念​

    ​​Oracle实例恢复​

    ​​Oracle基于用户管理恢复的处理​​(详细描述了介质恢复及其处理)

    ​​SYSTEM表空间管理及备份恢复​

    ​​SYSAUX表空间管理及恢复​


有关RMAN的备份恢复与管理请参考

    ​​RMAN 概述及其体系结构​

    ​​RMAN 配置、监控与管理​

    ​​RMAN 备份详解​

    ​​RMAN 还原与恢复​

    ​​RMAN catalog 的创建和使用​

    ​​基于catalog 创建RMAN存储脚本​

​基于catalog 的RMAN 备份与恢复​

​使用RMAN迁移文件系统数据库到ASM​

    ​​RMAN 备份路径困惑(使用plus archivelog时)​


有关ORACLE故障请参考

    ​​ORA-32004的错误处理​

    ​​ORA-01658错误​

    ​​CRS-0215错误处理​

    ​​ORA-00119,ORA-00132 错误处理​

    ​​又一例SPFILE设置错误导致数据库无法启动​

    ​​对参数FAST_START_MTTR_TARGET= 0 的误解及设定​

    ​​SPFILE错误导致数据库无法启动(ORA-01565)​


有关ASM请参考

    ​​创建ASM实例及ASM数据库​

    ​​ASM 磁盘、目录的管理​

    ​​使用 ASMCMD 工具管理ASM目录及文件​


有关SQL/PLSQL请参考

    ​​SQLPlus常用命令​

    ​​替代变量与SQL*Plus环境设置​

    ​​使用Uniread实现SQLplus翻页功能​

    ​​SQL 基础-->SELECT 查询

    ​​SQL 基础--> NEW_VALUE的使用

    ​​SQL 基础--> 集合运算(UNION与UNION ALL)

    ​​SQL 基础--> 常用函数

    ​​SQL 基础--> 视图(CREATEVIEW)

    ​​SQL 基础--> 创建和管理表

    ​​SQL 基础--> 多表查询

    ​​SQL 基础--> 过滤和排序

    ​​SQL 基础--> 子查询

    ​​SQL 基础--> 分组与分组函数

    ​​SQL 基础--> 层次化查询(STARTBY ... CONNECT BY PRIOR)

    ​​SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

    ​​PL/SQL--> 游标

    ​​PL/SQL--> 异常处理(Exception)

    ​​PL/SQL--> 语言基础

    ​​PL/SQL--> 流程控制

    ​​PL/SQL--> PL/SQL记录

    ​​PL/SQL--> 包的创建与管理

    ​​PL/SQL--> 隐式游标(SQL%FOUND)

    ​​PL/SQL--> 包重载、初始化

    ​​PL/SQL--> DBMS_DDL包的使用

    ​​PL/SQL--> DML 触发器

    ​​PL/SQL--> INSTEAD OF 触发器

    ​​PL/SQL--> 存储过程

    ​​PL/SQL--> 函数

    ​​PL/SQL--> 动态SQL

    ​​PL/SQL--> 动态SQL的常见错误


有关ORACLE其它特性

    ​​Oracle常用目录结构(10g)​

    ​​使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例​

    ​​日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING)​

    ​​表段、索引段上的LOGGING与NOLOGGING​

    ​​OralceOMF 功能详解​

    ​​Oracle用户、对象权限、系统权限 ​​ 

    ​​Oracle角色、配置文件​

    ​​Oracle分区表​

    ​​Oracle外部表​

    ​​使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)​

    ​​簇表及簇表管理(Index clustered tables)​

    ​​数据泵 EXPDP 导出工具的使用​

    ​​数据泵 IMPDP 导入工具的使用​

    ​​导入导出 Oracle 分区表数据​

    ​​SQL*Loader使用方法​

    ​​启用用户进程跟踪​

    ​​配置非默认端口的动态服务注册​

    ​​配置ORACLE 客户端连接到数据库​

    ​​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​

    ​​Oracle彻底 kill session​