RAC环境的备份、恢复和普通数据库的备份、恢复是有一些区别的。
RMAN备份恢复——RAC环境数据库的备份(一):http://yangtingkun.itpub.net/post/468/285260
这篇介绍基于裸设备的RAC环境下的备份。
对于建立在裸设备上的RAC环境,由于归档不能存放到裸设备上,因此,所有的归档都必须保存在本地的磁盘上。直接通过RMAN备份会导致错误。
首先模仿裸设备的情况,修改原来LOG_ARCHIVE_DEST_1的配置,将每个实例的归档改在本地硬盘:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/data1/archivelog' SID = 'testrac1';
系统已更改。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/data1/archivelog' SID = 'testrac2';
系统已更改。
然后尝试直接备份数据库:
$ 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=00009 name=+DISK/testrac/datafile/zhejiang03.dbf输入数据文件 fno=00012 name=+DISK/testrac/datafile/zhejiang05.dbf输入数据文件 fno=00008 name=+DISK/testrac/datafile/ndmain01.dbf输入数据文件 fno=00010 name=+DISK/testrac/datafile/ndindex01.dbf输入数据文件 fno=00001 name=+DISK/testrac/datafile/system.262.618591167输入数据文件 fno=00005 name=+DISK/testrac/datafile/users.267.618591279通道 c1: 正在启动段 1 于 11-5月 -07通道 c2: 启动全部数据文件备份集通道 c2: 正在指定备份集中的数据文件输入数据文件 fno=00007 name=+DISK/testrac/datafile/zhejiang02.dbf输入数据文件 fno=00011 name=+DISK/testrac/datafile/zhejiang04.dbf输入数据文件 fno=00014 name=+DISK/testrac/datafile/zhejiang06.dbf输入数据文件 fno=00002 name=+DISK/testrac/datafile/undotbs1.263.618591197输入数据文件 fno=00004 name=+DISK/testrac/datafile/undotbs2.266.618591249输入数据文件 fno=00013 name=+DISK/testrac/datafile/lt_index_ts01.dbf输入数据文件 fno=00003 name=+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>
采用这种方法后可以成功的备份。
![](http://blog.itpub.net//imgs/comment_icon1.gif)
分配两个channel来备份数据库,那么两个节点的/data1目录下都有数据库的backup piece,这样在restore的过程中是否需要把两个节点上的backup piece合并后,才能执行restore呢?
![](http://blog.itpub.net//imgs/comment_icon1.gif)
继续看RMAN备份恢复——RAC环境数据库的备份(三)吧
![](http://blog.itpub.net//imgs/comment_icon1.gif)
斑竹
run {
allocate channel ch1 device type disk connect sys/user_sss8io@xxx;
allocate channel ch2 device type disk connect sys/user_sss8io@xxx;
sql 'alter system archive log current';
backup database format '/backup/back/db_%d_%T_%U';
backup archivelog all format '/backup/back/arc_%d_%T_%U' delete all input;
release channel ch1;
release channel ch2;
}
为什么我的RAC1和RAC2有些归档没有删除掉?
由于归档满我曾经手工删除过一些归档日志,会不会有这个有关系?
![](http://blog.itpub.net//imgs/comment_icon1.gif)
把完整的备份过程及屏幕输出贴出来
![](http://blog.itpub.net//imgs/comment_icon1.gif)
斑竹我的问题解决了!
感谢!
![](http://blog.itpub.net//imgs/comment_icon1.gif)
很荣幸看到你的BLOG
有个问题追问一下:
在RAC下执行ALTER SYSTEM SET LOG_ARCHIVE_DEST_1语句,可以加scope选项吗?我执行的时候加了scope不管是=memoryspfile,还是both,都报错,在网上搜了一下说不用scope语句即可,我执行了一下,果然可以了,而且和scope=both的效果一样。
但是一直不知道为什么这样,我在ORACLE文档上看的是后面加了scope语句的,你这里也没有加,请问这里究竟是怎样的,谢谢!
![](http://blog.itpub.net//imgs/comment_icon1.gif)
还真没有注意过,明天试试
![](http://blog.itpub.net//imgs/comment_icon1.gif)
加scope = spfile肯定是没有问题的
SQL> alter system set log_archive_dest_1 = 'LOCATION=/data1/archivelog VALID_FOR=(ALL_LOGFILES,ALLROLES) DB_UNIQUE_NAME=testrac'
2 scope = spfile sid = 'testrac1';
系统已更改。
![](http://blog.itpub.net//imgs/comment_icon1.gif)
我的环境是AIX5.3+ORACLE10G,两个节点,racdb1,racdb2。归档放在本地,在备份时发现在节点上有时会出现另一个节点的archivelog。导致备份归档失败。我不知道是什么原因导致节点的归档存放到另一个节点上?能帮我解释一下吗?谢谢!
![](http://blog.itpub.net//imgs/comment_icon1.gif)
获益匪浅!
但是有个问题想请教,在rac中某一台db上做过crosscheck之后,会标志另一台的备份文件为expired,而实际上,这个备份文件是刚刚备份的,想请教有什么方法可以处理这个问题!
![](http://blog.itpub.net//imgs/comment_icon1.gif)
没有什么好办法,因为这台实例检测不到另外实例上的备份。
使用一个实例完成备份可以避免这个问题。
![](http://blog.itpub.net//imgs/comment_icon1.gif)
谢谢你的回复,如何在一个实例完成备份呢?我没有使用nfs,也不能使另一个实例shutdown的
而且还有一个问题,delete obsolete和delete expired都不能正常删除我以前做的datafilecopy,crosscheck之后一样
RMAN-06207: WARNING: 55 objects could not be deleted for DISK channel(s) due
RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212: Object Type Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Datafile Copy /u01/clusterrawdbf/system01.dbf
RMAN-06214: Datafile Copy /u01/clusterrawdbf/system02.dbf
RMAN-06214: Datafile Copy /u01/clusterrawdbf/system03.dbf
RMAN-06214: Datafile Copy /u01/clusterrawdbf/system04.dbf
RMAN-06214: Datafile Copy /u01/clusterrawdbf/system05.dbf
![](http://blog.itpub.net//imgs/comment_icon1.gif)
后面的多篇都介绍了这个问题,你接着看吧。我推荐你使用data guard的机制将所有节点的日志同步到一个节点,在这个节点进行备份
那个实例产生的备份由那个实例来删除。
![](http://blog.itpub.net//imgs/comment_icon1.gif)
非常感谢!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13024285/viewspace-671662/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13024285/viewspace-671662/