您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > [三思笔记]RMAN管理ORACLE RAC数据库的备份与恢复
RMANRMANRMANRMAN管理ORACLEORACLEORACLEORACLERACRACRACRAC数据库的备份与恢复2010.01君三思重磅推荐:涂抹ORACLE-三思笔记之一步一步学ORACLE.............................................11、修改RAC数据库的归档模式....................................................................................22、配置节点归档间归档文件的自动发送......................................................................43、执行RAC数据库的备份............................................................................................74、RAC备份集恢复到单实例数据库...........................................................................155、单实例备份集恢复到RAC.......................................................................................26附:三思笔记系列文章快速链接:.......................................................................................40重磅推荐:涂抹重磅推荐:涂抹重磅推荐:涂抹重磅推荐:涂抹ORACLE-ORACLE-ORACLE-ORACLE-三思笔记之一步一步学三思笔记之一步一步学三思笔记之一步一步学三思笔记之一步一步学ORACLORACLORACLORACLEEEE前往涂抹ORACLE专区下载书中源码|豆瓣评论购买|CB|当当|卓越|淘宝RAC技术这两年热度不断提升,随着ORACLE推广力度不断加大以及时间的推移,RAC特性也在逐步被人(DBA?人?DBA能算人不,5555)所熟悉,做为最基础也最重要的数据库维护操作--备份恢复,本文将通过实际操作,演示RAC数据库环境中,RMAN备份与恢复。全文继承三思笔记系列文章主旨:注重实践。1111、修改RACRACRACRAC数据库的归档模式RMAN备份数据库时,要求目标库必须(表抬杠,我所说的是一般意义上的正式库)处于归档模式,因此三思首先简单描述一下RAC环境数据库如何修改归档模式。修改归档模式的命令还是在MOUNT模式下执行ALTERDATABASEARCHIVELOG/NOARCHIVELOG;命令,不过如果操作的是RAC数据库,那么必须所有实例都处于非OPEN状态,然后在任意一个处于MOUNT状态的实例执行ALTERDATABASE命令,操作成功后,再正常启动其它实例即可。这里需要注意的一点是,RAC数据库由于拥有多个实例,因此需要注意每个实例相关初始化参数:LOG_ARCHIVE_DEST_n的设置,务必需要确保该参数设置的路径合法有效,归档也能顺利进行。下面列举一个启用RAC数据库归档模式的演示:以sysdba身份连接到ORACLE数据库的任意实例,查询归档状态,以及当前实例的状态:JSSDBN1archiveloglist;DatabaselogmodeNoArchiveModeAutomaticarchivalDisabledArchivedestination/data/ora10g/product/10.2.0/db_1/dbs/archOldestonlinelogsequence216Currentlogsequence217JSSDBN1selectinst_id,instance_name,version,archiver,statusfromgv$instance;INST_IDINSTANCE_NAMEVERSIONARCHIVESTATUS--------------------------------------------------------------1jssdbn110.2.0.4.0STOPPEDMOUNTED2jssdbn210.2.0.4.0STOPPEDMOUNTED上述返回的数据中可以获得下列信息:�未启动归档模式;�10204版本的双节点数据库并均启动至MOUNT状态;�默认归档路径未修改过;当然啦,上述显示的信息都是三思有意为之,要不然后面就不好干了。情况大家都清楚了,因此下面我们首先需要做的,是修改归档的默认路径:JSSDBN1altersystemsetlog_archive_dest_1='location=/data/oradata/jssdbn1/archivelog'sid='jssdbn1';Systemaltered.JSSDBN1altersystemsetlog_archive_dest_1='location=/data/oradata/jssdbn2/archivelog'sid='jssdbn2';Systemaltered.考虑到两个节点的目录结构可能不一致,因此这里分别为节点1和节点2指定适当的路径。接下来就可以启动归档模式了,需要注意如果你所操作的环境中实例状态为OPEN模式,一定要首先关闭实例并重新启动到MOUNT状态,注意关闭的时候是全部关闭,而启动时只需要启动一个实例即可,其它实例可等归档状态启用后再正常启动。JSSDBN1alterdatabasearchivelog;Databasealtered.JSSDBN1alterdatabaseopen;Databasealtered.JSSDBN1archiveloglist;DatabaselogmodeArchiveModeAutomaticarchivalEnabledArchivedestination/data/oradata/jssdbn1/archivelogOldestonlinelogsequence217Nextlogsequencetoarchive218Currentlogsequence218当前归档模式已经启动,接下来就可以正常启动其它的实例了。如果是想关闭RAC数据库的归档模式,操作方式与上相同,只不过在最后将命令改为alterdatabasenoarchivelog即可。2222、配置节点归档间归档文件的自动发送首先要明确一点,通过RMAN创建备份集时,必须保证连接到的实例能够访问所有节点所生成的归档日志,否则会导致备份失败(除非不备份归档文件)。对于单实例当然不存在这样的问题,因为单实例数据库的归档通常是放在本地,必然能够访问(废话,不能访问的话怎么写进去的),不过对于多实例的RAC数据库这就可能会成为一个问题,如何保证RMAN能够访问到所有节点生成的归档文件呢?两种方案:�各节点生成的归档放到共享存储上,这样自然可以确保每个节点都能够访问到,比如将归档存放到ORACLE的ASM,或者是第三方提供的集群文件系统中;�各节点除在本地生成归档文件外,另外向其它节点或者说执行备份的节点发送归档日志,以确保执行备份的那台节点能够访问到所有的归档文件。从RMAN易用的角度来说,将归档放置于共享存储上无疑是最方便的,不过第三方集群件的配置又会带来一些其它额外的管理成本;ASM倒是简单,但是三思的个人看法是这样,ASM确实好用效率也不错,不过由于ASM对DBA来说就像个黑匣子(起码10g版本是这样,当然也有可能是俺研究的还不够深入),使用上了之后就得求天保佑千万不要出现问题,一旦出现问题很有可能都不知该从何处着手处理。因此,这里三思决定采用另外的方案。ORACLE的重做日志发送机制非常灵活,在10g版本中可以同时向10个目标地写入归档(11g增加到了30个),这里三思准备利用这种特性,将各节点生成的归档发送到执行备份的节点中,来实现该节点能够访问所需的归档文件。操作非常简单,其实上就是给LOG_ARCHIVE_DEST_n初始化参数设置适当的值,例如当下的测试环境中,三思经过慎重考虑,决定将备份操作放在节点2端执行,因此,只需要在节点1中,设置发送节点1生成的归档文件到节点2即可,操作如下:JSSDBN1altersystemsetlog_archive_dest_2='service=jssdbn2'sid='jssdbn1';Systemaltered.命令中设置的jssdbn2是指tnsnames.ora文件中配置的连接节点2的网络服务名(好绕口),除此之外呢,还有一个初始化参数LOG_ARCHIVE_LOCAL_FIRST,用来设置是否首先归档文件到本地,默认为true,将其改为false,同样只修改节点1的设置即可,操作如下:JSSDBN1altersystemsetlog_archive_local_first=falsesid='jssdbn1';Systemaltered.测试一下效果,尝试手动触发归档操作,然后查看是否成功归档至各节点的适当位置:JSSDBN1altersystemswitchlogfile;Systemaltered.JSSDBN1selectinst_id,recid,dest_id,namefromgv$archived_logwheresequence#=219;INST_IDRECIDDEST_IDNAME----------------------------------------------------------------------------------182/data/oradata/jssdbn2/archivelog/1_219_703671669.dbf191/data/oradata/jssdbn1/archivelog/1_219_703671669.dbf282/data/oradata/jssdbn2/archivelog/1_219_703671669.dbf291/data/oradata/jssdbn1/archivelog/1_219_703671669.dbf归档文件成功生成并发送到节点2端!提示:RAC数据库各实例拥有各自的REDO线程,因此还需要考虑各节点生成的归档文件名称规则的问题,不要因为文件名生成规则不合适造成文件名重复,导致归档失败。归档文件名的生成规则由LOG_ARCHIVE_FORMAT初始化参数控制,还好默认情况下是%t_%s_%r.dbf(具体%符所代表意义就不说了,可以参考之前三思笔记系列文章),不会导致重复的发生。下面我们来考虑一个问题~~~问:丢失了几个归档怎么办?答:简单,凉拌,噢对不起说错了,是冷复制。比如说由于山崩地裂洪水海啸等等这些最近几年我们耳熟能详的事件原因导致节点1的某几个归档没能成功发送至节点2,结果节点2执行备份时报错(一般是提示找不到归档文件),那么手工复制缺少的几个归档到节点2的适当路径下就好了,用什么复制呢?方式很多,如果文件数目不多的话,直接用scp命令吧,比如说这里我们复制seq为218的归档文件到节点2,操作如下。首先是找到要复制的文件详细路径,最简单的方式就是从v$archived_log视图中查找:JSSDBN1selectnamefromv$archived_logwheresequence#=218;NAME------------------------------------------------------------/data/oradata/jssdbn1/archivelog/1_218_703671669.dbf接下来通过scp命令来复
本文标题:[三思笔记]RMAN管理ORACLE RAC数据库的备份与恢复
链接地址:https://www.777doc.com/doc-4411141 .html