RMAN备份恢复--RAC环境数据库备份

来源:互联网 发布:centos webservice 编辑:程序博客网 时间:2024/06/03 12:30
 RMAN备份恢复--RAC环境数据库备份 网友:copyking 发布于: 2008.09.25 13:12 (共有条评论) 查看评论 | 我要评论 
  RAC环境的备份、恢复和普通数据库的备份、恢复是有一些区别的,区别主要体现在RAC环境的特殊性上。
  根据Oracle的RAC环境的不同,RMAN备份、恢复操作也是不同的。如果RAC环境是建立在CLUSTER文件系统上的,或者是建立在ASM上的,那么备份和恢复过程可能会很简单,基本上和普通的数据库环境没有太多的区别。如果RAC环境是建立在裸设备上的,由于归档日志无法存储在裸设备上,那么归档日志文件必须放在多个节点的本地硬盘上,这时备份和恢复就变得和普通的数据库环境有所差异。
  这里先讨论一下ASM环境上建立的RAC数据库的备份。如果将归档日志放在ASM上,那么两个节点都是可以备份的,这个时候,备份和普通的单实例数据库没有差别。
  SQL> SHOW PARAMETER LOG_ARCHIVE_DEST_1  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  log_archive_dest_1 string LOCATION=+DISK/testrac/
  log_archive_dest_10 string
  $ rman target /
  恢复管理器: Release 10.2.0.3.0 - Production on 星期三 4月 25 17:23:01 2007
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  连接到目标数据库: TESTRAC (DBID=4291216984)
  RMAN> configure channel device type disk format '/data1/backup/%U';  使用目标数据库控制文件替代恢复目录旧的 RMAN 配置参数:
  CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/backup/testrac/%U';  新的 RMAN 配置参数:
  CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data1/backup/%U';  已成功存储新的 RMAN 配置参数
  RMAN> backup database plus archivelog delete all input;
  启动 backup 于 25-4月 -07当前日志已存档分配的通道: ORA_DISK_1通道 ORA_DISK_1:sid=312 实例=testrac1 devtype=DISK通道 ORA_DISK_1: 正在启动存档日志备份集通道ORA_DISK_1: 正在指定备份集中的存档日志输入存档日志线程 =1 序列 =134 记录 ID=220时间戳=620832208输入存档日志线程 =1 序列 =135 记录 ID=221 时间戳=620846651输入存档日志线程 =2 序列=56 记录 ID=219 时间戳=620831921输入存档日志线程 =2 序列 =57 记录 ID=222 时间戳=620846652通道ORA_DISK_1: 正在启动段 1 于 25-4月 -07通道 ORA_DISK_1: 已完成段 1 于 25-4月-07段句柄=/data1/backup/08ig2nhv_1_1 标记=TAG20070425T172413 注释=NONE通道ORA_DISK_1: 备份集已完成, 经过时间:00:00:07通道 ORA_DISK_1: 正在删除存档日志存档日志文件名=+DISK/testrac/1_134_618591128.dbf 记录 ID=220 时间戳 =620832208存档日志文件名=+DISK/testrac/1_135_618591128.dbf 记录 ID=221 时间戳 =620846651存档日志文件名=+DISK/testrac/2_56_618591128.dbf 记录 ID=219 时间戳 =620831921存档日志文件名=+DISK/testrac/2_57_618591128.dbf 记录 ID=222 时间戳 =620846652完成 backup 于25-4月 -07

 启动 backup 于 25-4月 -07使用通道 ORA_DISK_1通道 ORA_DISK_1: 启动全部数据文件备份集通道ORA_DISK_1: 正在指定备份集中的数据文件输入数据文件 fno=00006name=+DISK/testrac/datafile/zhejiang01.dbf输入数据文件 fno=00007name=+DISK/testrac/datafile/zhejiang02.dbf输入数据文件 fno=00009name=+DISK/testrac/datafile/zhejiang03.dbf输入数据文件 fno=00011name=+DISK/testrac/datafile/zhejiang04.dbf输入数据文件 fno=00012name=+DISK/testrac/datafile/zhejiang05.dbf输入数据文件 fno=00014name=+DISK/testrac/datafile/zhejiang06.dbf输入数据文件 fno=00008name=+DISK/testrac/datafile/ndmain01.dbf输入数据文件 fno=00002name=+DISK/testrac/datafile/undotbs1.263.618591197输入数据文件 fno=00004name=+DISK/testrac/datafile/undotbs2.266.618591249输入数据文件 fno=00010name=+DISK/testrac/datafile/ndindex01.dbf输入数据文件 fno=00013name=+DISK/testrac/datafile/lt_index_ts01.dbf输入数据文件 fno=00001name=+DISK/testrac/datafile/system.262.618591167输入数据文件 fno=00003name=+DISK/testrac/datafile/sysaux.264.618591225输入数据文件 fno=00005name=+DISK/testrac/datafile/users.267.618591279通道 ORA_DISK_1: 正在启动段 1 于25-4月 -07通道 ORA_DISK_1: 已完成段 1 于 25-4月-07段句柄=/data1/backup/09ig2ni9_1_1 标记=TAG20070425T172424 注释=NONE通道ORA_DISK_1: 备份集已完成, 经过时间:00:15:05通道 ORA_DISK_1: 启动全部数据文件备份集通道ORA_DISK_1: 正在指定备份集中的数据文件备份集中包括当前控制文件在备份集中包含当前的 SPFILE通道 ORA_DISK_1:正在启动段 1 于 25-4月 -07通道 ORA_DISK_1: 已完成段 1 于 25-4月-07段句柄=/data1/backup/0aig2oej_1_1 标记=TAG20070425T172424 注释=NONE通道ORA_DISK_1: 备份集已完成, 经过时间:00:00:03完成 backup 于 25-4月 -07
  启动 backup 于 25-4月 -07当前日志已存档使用通道 ORA_DISK_1通道 ORA_DISK_1:正在启动存档日志备份集通道 ORA_DISK_1: 正在指定备份集中的存档日志输入存档日志线程 =1 序列 =136 记录 ID=223时间戳=620847576输入存档日志线程 =2 序列 =58 记录 ID=224 时间戳=620847576通道 ORA_DISK_1:正在启动段 1 于 25-4月 -07通道 ORA_DISK_1: 已完成段 1 于 25-4月-07段句柄=/data1/backup/0big2oes_1_1 标记=TAG20070425T173940 注释=NONE通道ORA_DISK_1: 备份集已完成, 经过时间:00:00:02通道 ORA_DISK_1: 正在删除存档日志存档日志文件名=+DISK/testrac/1_136_618591128.dbf 记录 ID=223 时间戳 =620847576存档日志文件名=+DISK/testrac/2_58_618591128.dbf 记录 ID=224 时间戳 =620847576完成 backup 于25-4月 -07
  数据库的恢复也很简单,先修改一些数据:
  SQL> CONN TEST/TEST已连接。  SQL> SELECT COUNT(*) FROM T;
  COUNT(*)
  ----------
  0
  SQL> INSERT INTO T SELECT ROWNUM FROM DBA_OBJECTS;
  已创建51880行。
  SQL> COMMIT;  提交完成。
  下面开始还原和恢复:
  $ rman target /  恢复管理器: Release 10.2.0.3.0 - Production on 星期四 4月 26 11:21:29 2007
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  已连接到目标数据库 (未启动)

RMAN> startup mount  Oracle 实例已启动数据库已装载
  系统全局区域总计 2147483648 字节
  Fixed Size 2031480 字节
  Variable Size 318767240 字节
  Database Buffers 1811939328 字节
  Redo Buffers 14745600 字节
  RMAN> restore database;  启动 restore 于 26-4月 -07使用通道 ORA_DISK_1
  通道 ORA_DISK_1: 正在开始恢复数据文件备份集通道 ORA_DISK_1:正在指定从备份集恢复的数据文件正将数据文件00001恢复到+DISK/testrac/datafile/system.262.618591167正将数据文件00002恢复到+DISK/testrac/datafile/undotbs1.263.618591197正将数据文件00003恢复到+DISK/testrac/datafile/sysaux.264.618591225正将数据文件00004恢复到+DISK/testrac/datafile/undotbs2.266.618591249正将数据文件00005恢复到+DISK/testrac/datafile/users.267.618591279正将数据文件00006恢复到+DISK/testrac/datafile/zhejiang01.dbf正将数据文件00007恢复到+DISK/testrac/datafile/zhejiang02.dbf正将数据文件00008恢复到+DISK/testrac/datafile/ndmain01.dbf正将数据文件00009恢复到+DISK/testrac/datafile/zhejiang03.dbf正将数据文件00010恢复到+DISK/testrac/datafile/ndindex01.dbf正将数据文件00011恢复到+DISK/testrac/datafile/zhejiang04.dbf正将数据文件00012恢复到+DISK/testrac/datafile/zhejiang05.dbf正将数据文件00013恢复到+DISK/testrac/datafile/lt_index_ts01.dbf正将数据文件00014恢复到+DISK/testrac/datafile/zhejiang06.dbf通道 ORA_DISK_1: 正在读取备份段/data1/backup/09ig2ni9_1_1通道 ORA_DISK_1: 已恢复备份段 1段句柄 =/data1/backup/09ig2ni9_1_1 标记 = TAG20070425T172424通道 ORA_DISK_1: 恢复完成,用时: 00:20:26完成 restore 于 26-4月 -07
  RMAN> restore archivelog sequence between 134 and 136 thread 1;  启动 restore 于 26-4月 -07使用通道 ORA_DISK_1
  通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复通道 ORA_DISK_1: 正在恢复存档日志存档日志线程 =1序列=134通道 ORA_DISK_1: 正在恢复存档日志存档日志线程 =1 序列=135通道 ORA_DISK_1: 正在读取备份段/data1/backup/08ig2nhv_1_1通道 ORA_DISK_1: 已恢复备份段 1段句柄 =/data1/backup/08ig2nhv_1_1 标记 = TAG20070425T172413通道 ORA_DISK_1: 恢复完成,用时: 00:00:07通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复通道 ORA_DISK_1:正在恢复存档日志存档日志线程 =1 序列=136通道 ORA_DISK_1: 正在读取备份段/data1/backup/0big2oes_1_1通道 ORA_DISK_1: 已恢复备份段 1段句柄 =/data1/backup/0big2oes_1_1 标记 = TAG20070425T173940通道 ORA_DISK_1: 恢复完成,用时: 00:00:01完成 restore 于 26-4月 -07
  RMAN> restore archivelog sequence between 56 and 58 thread 2;  启动 restore 于 26-4月 -07使用通道 ORA_DISK_1
  通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复通道 ORA_DISK_1: 正在恢复存档日志存档日志线程 =2序列=56通道 ORA_DISK_1: 正在恢复存档日志存档日志线程 =2 序列=57通道 ORA_DISK_1: 正在读取备份段/data1/backup/08ig2nhv_1_1通道 ORA_DISK_1: 已恢复备份段 1段句柄 =/data1/backup/08ig2nhv_1_1 标记 = TAG20070425T172413通道 ORA_DISK_1: 恢复完成,用时: 00:00:03通道 ORA_DISK_1: 正在启动到默认目标的存档日志恢复通道 ORA_DISK_1:正在恢复存档日志存档日志线程 =2 序列=58通道 ORA_DISK_1: 正在读取备份段/data1/backup/0big2oes_1_1通道 ORA_DISK_1: 已恢复备份段 1段句柄 =/data1/backup/0big2oes_1_1 标记 = TAG20070425T173940通道 ORA_DISK_1: 恢复完成,用时: 00:00:01完成 restore 于 26-4月 -07

RMAN> recover database;  启动 recover 于 26-4月 -07使用通道 ORA_DISK_1
  正在开始介质的恢复介质恢复完成, 用时: 00:00:38
  完成 recover 于 26-4月 -07
  RMAN> alter database open;  数据库已打开
  检查恢复是否已经完成:
      $ sqlplus "/ as sysdba"   SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 4月 26 13:29:14 2007
  Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
  已连接到空闲例程。
  SQL> startup
  ORACLE 例程已经启动。
  Total System Global Area 2147483648 bytes
  Fixed Size 2031480 bytes
  Variable Size 318767240 bytes
  Database Buffers 1811939328 bytes
  Redo Buffers 14745600 bytes数据库装载完毕。数据库已经打开。
  SQL> CONN TEST/TEST已连接。
  SQL> SELECT COUNT(*) FROM T;
  COUNT(*)
  ----------
  51880
RAC环境的备份、恢复和普通数据库的备份、恢复是有一些区别的。 这篇介绍基于裸设备的RAC环境下的备份。  对于建立在裸设备上的RAC环境,由于归档不能存放到裸设备上,因此,所有的归档都必须保存在本地的磁盘上。直接通过RMAN备份会导致错误。
  首先模仿裸设备的情况,修改原来LOG_ARCHIVE_DEST_1的配置,将每个实例的归档改在本地硬盘:
  SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/data1/archivelog'  SID = 'testrac1';
  系统已更改。  系统已更改。
  然后尝试直接备份数据库:
    $ rman target /   恢复管理器: Release 10.2.0.3.0 - Production on 星期五 5月 11 16:06:48 2007
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  连接到目标数据库: TESTRAC (DBID=4291216984)
  RMAN> run
  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U';
  4> backup database plus archivelog delete all input;
  5> }
  使用目标数据库控制文件替代恢复目录分配的通道: c1通道 c1: sid=301 实例=testrac1 devtype=DISK  启动 backup 于 11-5月 -07当前日志已存档释放的通道: c1
  MAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: backup plus archivelog 命令 (在 05/11/2007 16:08:09 上) 失败
  RMAN-06059: 没有找到预期的归档日志, 归档日志的丢失将影响可恢复性
  ORA-19625: 识别文件/data1/archivelog/2_89_618591128.dbf时出错
  ORA-27037: 无法获得文件状态
  SVR4 Error: 2: No such file or directory
  Additional information: 3
  RMAN>

由于节点1上无法访问到节点2上的归档,所以出现了上面的错误。对于这种情况,可以使用带CONNECT语句的ALLOCATE来分配CHANNEL:
  RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> backup database plus archivelog delete all input;
  6> }
  使用目标数据库控制文件替代恢复目录分配的通道: c1通道 c1: sid=288 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=307 实例=testrac2 devtype=DISK
  启动 backup 于 11-5月 -07当前日志已存档通道 c1: 正在启动存档日志备份集通道 c1:正在指定备份集中的存档日志输入存档日志线程 =1 序列 =164 记录 ID=288 时间戳=622309643输入存档日志线程 =1 序列=165 记录 ID=289 时间戳=622309764输入存档日志线程 =1 序列 =166 记录 ID=291时间戳=622310875通道 c1: 正在启动段 1 于 11-5月 -07通道 c2: 正在启动存档日志备份集通道 c2:正在指定备份集中的存档日志输入存档日志线程 =2 序列 =89 记录 ID=290 时间戳=622309924输入存档日志线程 =2 序列=90 记录 ID=292 时间戳=622310884输入存档日志线程 =2 序列 =91 记录 ID=294 时间戳=622312599通道c2: 正在启动段 1 于 11-5月 -07通道 c1: 已完成段 1 于 11-5月-07段句柄=/data1/backup/26ihff55_1_1 标记=TAG20070511T163652 注释=NONE通道 c1:备份集已完成, 经过时间:00:00:56通道 c1: 正在删除存档日志存档日志文件名=/data1/archivelog/1_164_618591128.dbf 记录 ID=288 时间戳 =622309643存档日志文件名=/data1/archivelog/1_165_618591128.dbf 记录 ID=289 时间戳 =622309764存档日志文件名=/data1/archivelog/1_166_618591128.dbf 记录 ID=291 时间戳 =622310875通道 c2:已完成段 1 于 11-5月 -07段句柄=/data1/backup/27ihff51_1_1 标记=TAG20070511T163652注释=NONE通道 c2: 备份集已完成, 经过时间:00:00:58通道 c2: 正在删除存档日志存档日志文件名=/data1/archivelog/2_89_618591128.dbf 记录 ID=290 时间戳 =622309924存档日志文件名=/data1/archivelog/2_90_618591128.dbf 记录 ID=292 时间戳 =622310884存档日志文件名=/data1/archivelog/2_91_618591128.dbf 记录 ID=294 时间戳 =622312599通道 c1:正在启动存档日志备份集通道 c1: 正在指定备份集中的存档日志输入存档日志线程 =1 序列 =167 记录 ID=293时间戳=622312603通道 c1: 正在启动段 1 于 11-5月 -07通道 c1: 已完成段 1 于 11-5月-07段句柄=/data1/backup/28ihff6v_1_1 标记=TAG20070511T163652 注释=NONE通道 c1:备份集已完成, 经过时间:00:00:01通道 c1: 正在删除存档日志存档日志文件名=/data1/archivelog/1_167_618591128.dbf 记录 ID=293 时间戳 =622312603完成backup 于 11-5月 -07
  启动 backup 于 11-5月 -07通道 c1: 启动全部数据文件备份集通道 c1: 正在指定备份集中的数据文件输入数据文件fno=00006 name=+DISK/testrac/datafile/zhejiang01.dbf输入数据文件 fno=00009name=+DISK/testrac/datafile/zhejiang03.dbf输入数据文件 fno=00012name=+DISK/testrac/datafile/zhejiang05.dbf输入数据文件 fno=00008name=+DISK/testrac/datafile/ndmain01.dbf输入数据文件 fno=00010name=+DISK/testrac/datafile/ndindex01.dbf输入数据文件 fno=00001name=+DISK/testrac/datafile/system.262.618591167输入数据文件 fno=00005name=+DISK/testrac/datafile/users.267.618591279通道 c1: 正在启动段 1 于 11-5月-07通道 c2: 启动全部数据文件备份集通道 c2: 正在指定备份集中的数据文件输入数据文件 fno=00007name=+DISK/testrac/datafile/zhejiang02.dbf输入数据文件 fno=00011name=+DISK/testrac/datafile/zhejiang04.dbf输入数据文件 fno=00014name=+DISK/testrac/datafile/zhejiang06.dbf输入数据文件 fno=00002name=+DISK/testrac/datafile/undotbs1.263.618591197输入数据文件 fno=00004name=+DISK/testrac/datafile/undotbs2.266.618591249输入数据文件 fno=00013name=+DISK/testrac/datafile/lt_index_ts01.dbf输入数据文件 fno=00003name=+DISK/testrac/datafile/sysaux.264.618591225通道 c2: 正在启动段 1 于 11-5月-07通道 c2: 已完成段 1 于 11-5月 -07段句柄=/data1/backup/2aihff6v_1_1标记=TAG20070511T163754 注释=NONE通道 c2: 备份集已完成, 经过时间:00:13:16通道 c2:启动全部数据文件备份集通道 c2: 正在指定备份集中的数据文件备份集中包括当前控制文件通道 c2: 正在启动段 1 于 11-5月 -07通道c2: 已完成段 1 于 11-5月 -07段句柄=/data1/backup/2bihffvr_1_1标记=TAG20070511T163754 注释=NONE通道 c2: 备份集已完成, 经过时间:00:00:03通道 c2:启动全部数据文件备份集通道 c2: 正在指定备份集中的数据文件在备份集中包含当前的 SPFILE通道 c2: 正在启动段 1 于 11-5月-07通道 c2: 已完成段 1 于 11-5月 -07段句柄=/data1/backup/2cihffvv_1_1标记=TAG20070511T163754 注释=NONE通道 c2: 备份集已完成, 经过时间:00:00:02通道 c1: 已完成段 1于 11-5月 -07段句柄=/data1/backup/29ihff73_1_1 标记=TAG20070511T163754注释=NONE通道 c1: 备份集已完成, 经过时间:00:15:07完成 backup 于 11-5月 -07
  启动 backup 于 11-5月 -07当前日志已存档通道 c1: 正在启动存档日志备份集通道 c1:正在指定备份集中的存档日志输入存档日志线程 =1 序列 =168 记录 ID=295 时间戳=622313584通道 c1: 正在启动段 1于 11-5月 -07通道 c2: 正在启动存档日志备份集通道 c2: 正在指定备份集中的存档日志输入存档日志线程 =2 序列 =92 记录ID=296 时间戳=622313580通道 c2: 正在启动段 1 于 11-5月 -07通道 c1: 已完成段 1 于 11-5月-07段句柄=/data1/backup/2dihfg3m_1_1 标记=TAG20070511T165309 注释=NONE通道 c1:备份集已完成, 经过时间:00:00:01通道 c1: 正在删除存档日志存档日志文件名=/data1/archivelog/1_168_618591128.dbf 记录 ID=295 时间戳 =622313584通道 c2:已完成段 1 于 11-5月 -07段句柄=/data1/backup/2eihfg3h_1_1 标记=TAG20070511T165309注释=NONE通道 c2: 备份集已完成, 经过时间:00:00:02通道 c2: 正在删除存档日志存档日志文件名=/data1/archivelog/2_92_618591128.dbf 记录 ID=296 时间戳 =622313580完成 backup于 11-5月 -07释放的通道: c1释放的通道: c2
  RMAN>
  采用这种方法后可以成功的备份。

RAC环境的备份、恢复和普通数据库的备份、恢复是有一些区别的。  这篇介绍基于裸设备的RAC环境下的恢复。上一篇文章已经介绍了采用带CONNECT语句的方式备份,这里介绍对应的恢复方法。
  首先备份并删除上次全备份以来的归档日志,然后准备开始恢复:
  RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> backup archivelog all delete all input;
  6> }
  分配的通道: c1通道 c1: sid=288 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=294 实例=testrac2 devtype=DISK
  启动 backup 于 14-5月 -07当前日志已存档通道 c1: 正在启动存档日志备份集通道 c1:正在指定备份集中的存档日志输入存档日志线程 =1 序列 =181 记录 ID=328 时间戳=622553558输入存档日志线程 =1 序列=182 记录 ID=330 时间戳=622553686输入存档日志线程 =1 序列 =183 记录 ID=333时间戳=622559736通道 c1: 正在启动段 1 于 14-5月 -07通道 c2: 正在启动存档日志备份集通道 c2:正在指定备份集中的存档日志输入存档日志线程 =2 序列 =101 记录 ID=329 时间戳=622553567输入存档日志线程 =2 序列=102 记录 ID=331 时间戳=622553690输入存档日志线程 =2 序列 =103 记录 ID=332时间戳=622559728通道 c2: 正在启动段 1 于 14-5月 -07通道 c2: 已完成段 1 于 14-5月-07段句柄=/data1/backup/2rihn0fk_1_1 标记=TAG20070514T131536 注释=NONE通道 c2:备份集已完成, 经过时间:00:01:06通道 c2: 正在删除存档日志存档日志文件名=/data1/archivelog/2_101_618591128.dbf 记录 ID=329 时间戳 =622553567存档日志文件名=/data1/archivelog/2_102_618591128.dbf 记录 ID=331 时间戳 =622553690存档日志文件名=/data1/archivelog/2_103_618591128.dbf 记录 ID=332 时间戳 =622559728通道 c1:已完成段 1 于 14-5月 -07段句柄=/data1/backup/2qihn0fp_1_1 标记=TAG20070514T131536注释=NONE通道 c1: 备份集已完成, 经过时间:00:01:09通道 c1: 正在删除存档日志存档日志文件名=/data1/archivelog/1_181_618591128.dbf 记录 ID=328 时间戳 =622553558存档日志文件名=/data1/archivelog/1_182_618591128.dbf 记录 ID=330 时间戳 =622553686存档日志文件名=/data1/archivelog/1_183_618591128.dbf 记录 ID=333 时间戳 =622559736完成backup 于 14-5月 -07释放的通道: c1释放的通道: c2
  在恢复之前,需要将数据库关闭,通过rman启动实例并准备恢复:
  $ srvctl stop db -d testrac
  下面准备通过RMAN进行数据库的恢复。由于RAC的备份是同时备份到两个节点的本地硬盘上,因此恢复的时候也应该两个节点同时进行RESTORE操作。
  可以在两个节点上分别启动RMAN,将数据库处于STARTUP MOUNT状态,然后就可以在任意一个节点上执行RESTORE操作:
$ rman target /  恢复管理器: Release 10.2.0.3.0 - Production on 星期一 5月 14 13:46:25 2007
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  已连接到目标数据库 (未启动)
  RMAN> startup mount  Oracle 实例已启动数据库已装载
  系统全局区域总计 2147483648 字节
  Fixed Size 2031480 字节
  Variable Size 335544456 字节
  Database Buffers 1795162112 字节
  Redo Buffers 14745600 字节
  RMAN> exit  恢复管理器完成。
  另一个节点:
  $ rman target /  恢复管理器: Release 10.2.0.3.0 - Production on 星期一 5月 14 13:46:41 2007
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  已连接到目标数据库 (未启动)
  RMAN> startup mount  Oracle 实例已启动数据库已装载
  系统全局区域总计 2147483648 字节
  Fixed Size 2031480 字节
  Variable Size 335544456 字节
  Database Buffers 1795162112 字节
  Redo Buffers 14745600 字节
RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> restore database;
  6> }
  使用目标数据库控制文件替代恢复目录分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK
  启动 restore 于 14-5月 -07
  通道 c2: 正在开始恢复数据文件备份集通道 c2:正在指定从备份集恢复的数据文件正将数据文件00002恢复到+DISK/testrac/datafile/undotbs1.263.618591197正将数据文件00003恢复到+DISK/testrac/datafile/sysaux.264.618591225正将数据文件00004恢复到+DISK/testrac/datafile/undotbs2.266.618591249正将数据文件00007恢复到+DISK/testrac/datafile/zhejiang02.dbf正将数据文件00011恢复到+DISK/testrac/datafile/zhejiang04.dbf正将数据文件00013恢复到+DISK/testrac/datafile/lt_index_ts01.dbf正将数据文件00014恢复到+DISK/testrac/datafile/zhejiang06.dbf通道 c2: 正在读取备份段/data1/backup/2lihmp9f_1_1通道 c1: 正在开始恢复数据文件备份集通道 c1:正在指定从备份集恢复的数据文件正将数据文件00001恢复到+DISK/testrac/datafile/system.262.618591167正将数据文件00005恢复到+DISK/testrac/datafile/users.267.618591279正将数据文件00006恢复到+DISK/testrac/datafile/zhejiang01.dbf正将数据文件00008恢复到+DISK/testrac/datafile/ndmain01.dbf正将数据文件00009恢复到+DISK/testrac/datafile/zhejiang03.dbf正将数据文件00010恢复到+DISK/testrac/datafile/ndindex01.dbf正将数据文件00012恢复到+DISK/testrac/datafile/zhejiang05.dbf通道 c1: 正在读取备份段/data1/backup/2kihmp9k_1_1通道 c1: 已恢复备份段 1段句柄 =/data1/backup/2kihmp9k_1_1 标记 = TAG20070514T111250通道 c1: 恢复完成, 用时:00:17:18通道 c2: 已恢复备份段 1段句柄 = /data1/backup/2lihmp9f_1_1 标记 =TAG20070514T111250通道 c2: 恢复完成, 用时: 00:19:24完成 restore 于 14-5月 -07释放的通道:c1释放的通道: c2
  如果只启动了RAC的一个节点,则会导致RMAN出现下面的错误:
  MAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: restore 命令 (在 05/11/2007 17:55:17 上) 失败
  RMAN-06026: 有些目标没有找到 - 终止恢复
  RMAN-06100: 没有通道来恢复数据文件14的备份或是副本
  RMAN-06100: 没有通道来恢复数据文件13的备份或是副本
RMAN-06100: 没有通道来恢复数据文件11的备份或是副本  RMAN-06100: 没有通道来恢复数据文件7的备份或是副本
  RMAN-06100: 没有通道来恢复数据文件4的备份或是副本
  RMAN-06100: 没有通道来恢复数据文件3的备份或是副本
  RMAN-06100: 没有通道来恢复数据文件2的备份或是副本
  下面恢复归档日志:
  RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> restore (archivelog sequence between 179 and 183 thread 1)
  6> (archivelog sequence between 99 and 103 thread 2);
  7> }
  分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK
  启动 restore 于 14-5月 -07
  通道 c1: 正在启动到默认目标的存档日志恢复通道 c2: 正在启动到默认目标的存档日志恢复通道 c1:正在恢复存档日志存档日志线程 =1 序列=179通道 c2: 正在恢复存档日志存档日志线程 =2 序列=99通道 c1:正在恢复存档日志存档日志线程 =1 序列=180通道 c1: 正在读取备份段 /data1/backup/2oihmq8g_1_1通道 c2:正在恢复存档日志存档日志线程 =2 序列=100通道 c2: 正在读取备份段 /data1/backup/2pihmq8b_1_1通道 c2:已恢复备份段 1段句柄 = /data1/backup/2pihmq8b_1_1 标记 = TAG20070514T112919通道 c2:恢复完成, 用时: 00:00:35通道 c2: 正在启动到默认目标的存档日志恢复通道 c2: 正在恢复存档日志存档日志线程 =2序列=101通道 c2: 正在恢复存档日志存档日志线程 =2 序列=102通道 c2: 正在恢复存档日志存档日志线程 =2 序列=103通道c2: 正在读取备份段 /data1/backup/2rihn0fk_1_1通道 c1: 已恢复备份段 1段句柄 =/data1/backup/2oihmq8g_1_1 标记 = TAG20070514T112919通道 c1: 恢复完成, 用时:00:00:52通道 c1: 正在启动到默认目标的存档日志恢复通道 c1: 正在恢复存档日志存档日志线程 =1 序列=181通道 c1:正在恢复存档日志存档日志线程 =1 序列=182通道 c1: 正在恢复存档日志存档日志线程 =1 序列=183通道 c1: 正在读取备份段/data1/backup/2qihn0fp_1_1通道 c2: 已恢复备份段 1段句柄 =/data1/backup/2rihn0fk_1_1 标记 = TAG20070514T131536通道 c2: 恢复完成, 用时:00:01:12通道 c1: 已恢复备份段 1段句柄 = /data1/backup/2qihn0fp_1_1 标记 =TAG20070514T131536通道 c1: 恢复完成, 用时: 00:01:12完成 restore 于 14-5月 -07释放的通道:c1释放的通道: c2
  现在面临一个问题,对于还原(RESTORE)操作,可以两个实例同时进行,但是对于恢复(RECOVER)操作,只能一个实例完成。
  这就要求一个实例必须能同时看到两个实例的归档日志。可以通过nfs mount等方式来实现,这里采用最简单的方法,将节点2上的归档拷贝到节点1的归档目录下。
  RMAN> host 'rcp 172.25.198.223:/data1/archivelog/* /data1/archivelog'

2> ;  主机命令完成
  RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> recover database;
  6> }
  释放的通道: ORA_SBT_TAPE_1释放的通道: ORA_SBT_TAPE_2释放的通道: ORA_DISK_1释放的通道: ORA_DISK_2分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK
  启动 recover 于 14-5月 -07
  诳冀橹实幕指?br />   存档日志线程 1 序列 179 已作为文件 /data1/archivelog/1_179_618591128.dbf存在于磁盘上存档日志线程 1 序列 180 已作为文件 /data1/archivelog/1_180_618591128.dbf存在于磁盘上存档日志线程 1 序列 181 已作为文件 /data1/archivelog/1_181_618591128.dbf存在于磁盘上存档日志线程 1 序列 182 已作为文件 /data1/archivelog/1_182_618591128.dbf存在于磁盘上存档日志线程 1 序列 183 已作为文件 /data1/archivelog/1_183_618591128.dbf存在于磁盘上存档日志线程 2 序列 99 已作为文件 /data1/archivelog/2_99_618591128.dbf存在于磁盘上存档日志线程 2 序列 100 已作为文件 /data1/archivelog/2_100_618591128.dbf存在于磁盘上存档日志线程 2 序列 101 已作为文件 /data1/archivelog/2_101_618591128.dbf存在于磁盘上存档日志线程 2 序列 102 已作为文件 /data1/archivelog/2_102_618591128.dbf存在于磁盘上存档日志线程 2 序列 103 已作为文件 /data1/archivelog/2_103_618591128.dbf存在于磁盘上存档日志文件名 =/data1/archivelog/1_179_618591128.dbf 线程 =1 序列=179存档日志文件名 =/data1/archivelog/2_99_618591128.dbf 线程 =2 序列 =99存档日志文件名=/data1/archivelog/2_100_618591128.dbf 线程 =2 序列 =100存档日志文件名=/data1/archivelog/1_180_618591128.dbf 线程 =1 序列 =180存档日志文件名=/data1/archivelog/1_181_618591128.dbf 线程 =1 序列 =181存档日志文件名=/data1/archivelog/2_101_618591128.dbf 线程 =2 序列 =101存档日志文件名=/data1/archivelog/1_182_618591128.dbf 线程 =1 序列 =182存档日志文件名=/data1/archivelog/2_102_618591128.dbf 线程 =2 序列 =102介质恢复完成, 用时:00:06:16完成 recover 于 14-5月 -07释放的通道: c1释放的通道: c2
  RMAN>
  如果没有将归档日志文件拷贝到恢复节点上,则会出现下面的错误:
RMAN> run  2> {
  3> allocate channel c1 device type disk format '/data1/backup/%U'
  connect sys/test@testrac1;
  4> allocate channel c2 device type disk format '/data1/backup/%U'
  connect sys/test@testrac2;
  5> recover database;
  6> }
  分配的通道: c1通道 c1: sid=313 实例=testrac1 devtype=DISK
  分配的通道: c2通道 c2: sid=316 实例=testrac2 devtype=DISK
  启动 recover 于 14-5月 -07
  正在开始介质的恢复
  存档日志线程 1 序列 179 已作为文件 /data1/archivelog/1_179_618591128.dbf存在于磁盘上存档日志线程 1 序列 180 已作为文件 /data1/archivelog/1_180_618591128.dbf存在于磁盘上存档日志线程 1 序列 181 已作为文件 /data1/archivelog/1_181_618591128.dbf存在于磁盘上存档日志线程 1 序列 182 已作为文件 /data1/archivelog/1_182_618591128.dbf存在于磁盘上存档日志线程 1 序列 183 已作为文件 /data1/archivelog/1_183_618591128.dbf存在于磁盘上存档日志文件名 =/data1/archivelog/1_179_618591128.dbf 线程 =1 序列 =179通道c2: 正在启动到默认目标的存档日志恢复通道 c2: 正在恢复存档日志存档日志线程 =2 序列=99通道 c2: 正在恢复存档日志存档日志线程=2 序列=100通道 c2: 正在读取备份段 /data1/backup/2pihmq8b_1_1通道 c2: 已恢复备份段 1段句柄 =/data1/backup/2pihmq8b_1_1 标记 = TAG20070514T112919通道 c2: 恢复完成, 用时:00:00:25故障转移到上一个备份存档日志文件名 =/data1/archivelog/2_99_618591128.dbf 线程 =2序列 =99释放的通道: c1释放的通道: c2
  MAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: recover 命令 (在 05/14/2007 15:01:38 上) 失败
  RMAN-11003: 在分析/执行 SQL 语句期间失败: alter database recover logfile '/data1/archivelog/2_99_618591128.dbf'
  ORA-00308: 无法打开归档日志 '/data1/archivelog/2_99_618591128.dbf'
  ORA-27037: 无法获得文件状态
  SVR4 Error: 2: No such file or directory
  Additional information: 3