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 /恢复管理器: Release10.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;

数据库的恢复也很简单,开始还原和恢复:

$ rman target /恢复管理器: Release10.2.0.3.0 - Production on星期四4月26 11:21:29 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已连接到目标数据库(未启动)

RMAN> startup mount

Oracle实例已启动数据库已装载

对于建立在裸设备上的RAC环境,由于归档不能存放到裸设备上,因此,所有的归档都必须保存在本地的磁盘上。直接通过RMAN备份会导致错误。首先模仿裸设备的情况,修改原来LOG_ARCHIVE_DEST_1的配置,将每个实例的归档改在本地硬盘:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1

= 'LOCATION=/data1/archivelog'

SID = 'testrac1';

系统已更改。

系统已更改。

然后尝试直接备份数据库:

$ rman target /恢复管理器: Release10.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 ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

5> backup database plus archivelog delete all input;

6> }

RMAN>

采用这种方法后可以成功的备份。

基于裸设备的RAC环境下的恢复。首先备份并删除上次全备份以来的归档日志,然后准备开始恢复:

RMAN> run

2> {

3> allocate channel c1 device type disk format '/data1/backup/%U'

connect ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

5> backup archivelog all delete all input;

6> }

在恢复之前,需要将数据库关闭,通过rman启动实例并准备恢复:

$ srvctl stop db -d testrac

下面准备通过RMAN进行数据库的恢复。由于RAC的备份是同时备份到两个节点的本地硬盘上,因此恢复的时候也应该两个节点同时进行RESTORE操作。

可以在两个节点上分别启动RMAN,将数据库处于STARTUP MOUNT状态,然后就可以在任意一个节点上执行RESTORE操作:

$ rman target /恢复管理器: Release10.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 /恢复管理器: Release10.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 ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

5> restore database;

6> }

如果只启动了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 ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

5> restore (archivelog sequence between 179 and 183 thread 1)

6> (archivelog sequence between 99 and 103 thread 2);

7> }

现在面临一个问题,对于还原(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 ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

5> recover database;

6> }

如果没有将归档日志文件拷贝到恢复节点上,则会出现下面的错误:

RMAN> run

2> {

3> allocate channel c1 device type disk format '/data1/backup/%U'

connect ;

4> allocate channel c2 device type disk format '/data1/backup/%U'

connect ;

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

oracle的rac环境,RAC环境数据库的备份相关推荐

  1. windows环境设置mysql数据库自动备份(测试成功)

    windows环境设置mysql数据库自动备份(测试成功) 要实现数据库的自动备份就需要一下两步: 利用MySQL提供的备份命令mysqldump 结合Windows的任务计划程序 实现步骤 编写脚本 ...

  2. windows环境下 Mysql数据库自动备份

    确定mysqldump 命令是否可用 1,在 dos模式 下,进入对应mysql bin 目录. 如 本例为 C:\Program Files\MySQL\MySQL Server 5.7\bin 2 ...

  3. Oracle 11G RAC:生产环境下架构

    转: it168网站  原创 作者:刘炳林 在真实环境搭建一套Oracle RAC就好比是一堂劳动课,劳动前需要准备好劳动工具,对劳动课内容有充分的认识;按照步骤一步一步进行,需要考虑劳动过程中可能遇 ...

  4. 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 一步一步搭建oracle 11gR2 rac+dg之环境准备 ...

  5. rac 火星舱如何备份oracle_【RAC】rac环境下的数据库备份与还原

    [RAC]rac环境下的数据库备份与还原 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩ ...

  6. 【RAC】rac环境下的数据库备份与还原

    [RAC]rac环境下的数据库备份与还原 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

  7. Oracle集群(RAC)及 jdbc 连接双机数据库

    2019独角兽企业重金招聘Python工程师标准>>> Oracle集群(RAC)及 jdbc 连接双机数据库 博客分类: java oracle集群url配置 oracle集群中p ...

  8. oracle 单机改rac,把oracle rac 转化作单机数据库

    把oracle rac 转化为单机数据库 1. Stop database and CRS on both node $ srvctl stop database -d mydb # crsctl s ...

  9. oracle静默创建rac,11gr2 RAC静默删除、创建数据库

    1)静默删除数据库 [oracle@db1 database]$ dbca -h dbca[-silent | -progressOnly | -customCreate] {}| { [[optio ...

最新文章

  1. 人眼中亮斑的检测、定位和去除(3)
  2. Django 一些 简单 配置
  3. Unity游戏开发之C#快速入门
  4. Apache Commons IO教程:初学者指南
  5. cookie ? 利用cookie实现 显示上次访问时间?
  6. (五)C语言之二维数组
  7. 蓝牙耳机按键事件linux,调用蓝牙耳机的按键,或者有线耳机的按键方法?
  8. 《为iPad而设计:打造畅销App》——快速回顾用户界面设计史
  9. 教你如何使用flask实现ajax数据入库
  10. 定时器的实现原理 不消耗cpu_空闲CPU在做什么?
  11. .bat以管理员身份运行
  12. 【转】【Python】Python网络编程
  13. 关于被调函数形参:SqList L、SqList L、SqList *L 的区别
  14. 【机器学习】K近邻(KNN)算法详解
  15. php 微信公号授权登入,WordPress 微信公众号授权登录
  16. 压缩包 zip RAR 7z 密码破解常用的几种方法
  17. UOJ#192. 【UR #14】最强跳蚤
  18. 未来五年,物联网三大技术发展趋势!
  19. U盘在手,忘记任何密码都可找回!!
  20. 汇编指令:MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用

热门文章

  1. 望城2019年华为软件云项目_今天,华为、京东两大项目在长沙开工
  2. 如何避免_小红书如何避免降权!
  3. selenium python怎么断言_如何为python / selenium中的特定元素断言文本?
  4. IPython系统相关内容及其配置信息
  5. 实验2.2编写重载函数Max1
  6. 夏侯南溪搭建目标检测模型——数据读取篇
  7. CUDA——调试“ImportError: libcudart.so.9.2: cannot open shared object file: No such file or directory”
  8. springmvc整合fastjson
  9. 小技巧 ----- 关于Java中的System.arraycopy()
  10. 校招对项目实战要求分析