ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle RAC备份与恢复

Oracle RAC备份与恢复

原创 Linux操作系统 作者:旧梦依稀 时间:2013-08-20 14:57:23 0 删除 编辑
1、Oracle物理备份主要针对以下文件:
数据文件、控制文件、归档日志、参数文件(pfile和 spfile)
RMAN可以备份除了pfile以外的其他文件。
无论数据库处于ARCHIVELOG模式还是NOARCHIVELOG模式,online redo都不需要备份。
2、RMAN能够自动理解Oracle RAC数据库。
对于比较大的数据库来说,如果备份与恢复时间要求非常严格,可以考虑使用磁盘镜像技术,对于非常大的数据库在前述基础上应该做容灾。
3、Oracle RAC环境中每个节点产生的归档日志应能被其他任何节点访问到。可以使用具有NFS方案的本地存档机制,Oracle推荐使用闪回恢复区,闪回恢复区存储在ASM上,并与数据文件存放在不同的磁盘组中。
4、Oracle RAC和DataGuard可以集成在一起,一般主库设置为RAC,备库设置为单实例或RAC。
5、Oracle RAC环境中“实例恢复”和“崩溃恢复”概念上的细微差别
在RAC中“崩溃恢复”指的是集群中的所有实例都发生故障,因此所有实例都必须恢复,或者所有实例可能需要恢复,具体取决于它们正在执行的操作。“崩溃恢复”中,要点在于所有实例都需要参与恢复操作,也应该是恢复操作的合格候选者。
“实例恢复”指集群中的一个或多个实例发生故障。需要由其它正常的实例运行实例恢复。
“线程恢复”在两种情况下都是适用的,因为它是在恢复一个实例,但这个术语通常是描述集群环境中单一线程(实例)的恢复。
6、由一个实例生成的重做信息成为“重做线程”。这个实例产生的所有日志文件都属于这一线程。
7、检查点
(1)线程检查点(本地检查点)
一个实例中包含对任意联机数据文件的修改,线程检查点收集这个实例中指定的SCN(线程检查点SCN)之前的所有脏缓冲区,并将它们写到磁盘中。这个SCN与日志中的特定RBA相关联,用于判断在什么时候完成了所有缓冲区的写入过程。线程检查点可以在日志切换时产生,或者在满足了任意线程检查点条件时产生。
在所有联机数据文件的线程中,这个线程检查点SCN之前的全部脏数据块都写入到磁盘中。在RAC环境中,线程检查点是独立产生的,对每个实例来说都是相互隔离的。这一信息记录在一个名为“线程检查点结构”的结构中,以及记录在多个控制文件记录和所有联机数据文件头中。
(2)数据库检查点(全局检查点)
当需要触发一个数据库检查点时,Oracle查找一个线程检查点,这个检查点拥有所有已打开、已启用进程的最低检查点SCN(所有已关闭线程的最高检查点SCN),并且其本身变为数据库检查点。对于内存中的任何数据块,只要包含了在此SCN之前对任意实例所做的修改,都应将其写到磁盘中。对于单实例数据库而言,数据库检查点与线程检查点相同。这个信息记录在几个控制文件和所有联机数据文件头中。
(3)增量检查点
增量检查点由“检查点队列(CKPTQ)”支持。
RBA = redo bytes address
CKPTQ按照对数据块进行修改的第一条日志记录的RBA排序,按照对数据块的最早修改时间排序后将脏数据块放到CKPTQ中,每隔3秒钟由DBWR进程将CKPTQ中的脏块写入磁盘。
8、Oracle RAC中的崩溃恢复
在Oracle RAC中,幸存实例中的SMON进程可以获取一份可靠的死亡实例名单,还有一份“无效的”块锁清单。这些锁是无效的,因为锁定这些数据块的实例已经崩溃,这些锁的状态保持“模糊”或者未知。后台进程SMON还执行恢复操作,执行恢复的实例随后将清除这些锁,在完成恢复和清理之后,使它们能够尽快恢复正常使用。
9、写块记录(BWR--block write recoder)
Oracle 9i及更高版本中使用的最优恢复机制之一是将有关检查点的更多信息写到重做日志中。通常,缓存老化及增量检查点系统会将许多块写到磁盘中。当脏缓冲区写入器(DBWR/DBWn)完成一个数据块写入时,它还将在重做日志文件中添加一条重做记录,表明已经写入了该数据块,一般包括数据块地址以及SCN信息。DBWR还可以批量写入脏数据块,不过这一过程是采用一种“惰性”方式完成的。
在Oracle RAC中,当一个实例写入一个由全局资源覆盖的块时,或者当被告知不再需要保存“过去镜像(PI)”缓冲区时,将会写入BWR。
10、过去镜像(PI)
PI就是全局脏块的一个副本,在数据库缓冲区中维护。PI由一个实例维护,直到它或者这个块的更新版本被写到磁盘上为止。在另一个实例将同一个块的更新版本写到磁盘上之后,由“全局缓存服务(GCS)”负责通知实例:不再需要它的PI。在GCS通知所有保存PI的实例特定块的一个新的、一致的版本已经保存到磁盘上之后,PI将被抛弃。
11、检查点和PI
在缓存融合中,当一个实例需要写入一个块以满足检查点要求时,这个实例需要检查覆盖该块的资源角色。如果这个角色为全局,那么这个实例必须通知GCS:它需要将这个块写入到磁盘上。GCS负责找出最近的块镜像,并通知保存这一镜像的实例执行块写入。GCS随后通知这个全局资源的所有拥有者:它们可以释放这个块的PI副本,然后允许释放这些全局资源。
12、两步恢复
Oracle RAC引入了两步恢复的概念,在这种恢复中,恢复进程(SMON或前台进程)执行由两个步骤组成的“读取”过程。它主要是从日志(BWR)中读取更多信息,限制恢复所需的I/O数量。第一次读取构建一个列表,其中列出重做日志中提到的块(所有拥有重做信息的数据块)。这些重做记录中可能有一些是BWR条目,这意味着所提到块在重做时刻是最新的。因此,恢复进程不需要“恢复”这个块,并且会将它从正在构建的列表中删除。经过这第一个步骤之后得到的列表中是那些拥有重做信息但还没有写入磁盘的块,这个列表称为“恢复集”。
第二次读取过程现在仅处理这个列表或集合中的块,它要少于第一步中重做流内涉及的块。在这一阶段应用重做,并且在第二步中读取、写入的数据块更少。如果系统不能执行两步恢复,那么它会回退到单步恢复。警报日志将会列出两步恢复的结果。
两步崩溃恢复可以通过以下设置来禁用:
_two_pass=false
13、缓存融合恢复
缓存任何恢复仅存在于RAC。因为在已有的恢复步骤之外,还需要附加步骤——GRD(再)配置、节点间通信等,所以它成为“缓存融合”恢复。
崩溃恢复是实例恢复的一种特殊状态,在这种情况下,所有实例都发生了故障,但在任何一种情况下都需要合并来自故障实例的线程。唯一的区别在于:在实例恢复中是由SMON执行恢复的,在崩溃恢复中是由前台进程执行恢复的。
14、动态再配置和关联性主控切换
“主控切换”用来描述一种操作,尝试执行恢复的节点会通过此操作试图拥有或主控在故障之前由另一实例主控的资源。因此,“主控切换”表示在实例恢复期间或者当一个节点加入或离开集群时执行的操作。
15、表决磁盘(voting disk)和OCR的备份与恢复
Oracle集群件备份应当包括表决磁盘和OCR组件。
建议使用Oracle提供的镜像技术来镜像表决磁盘和OCR。
表决磁盘和OCR的镜像可以在安装期间进行配置,也可以在之后的阶段进行动态配置。
(1)表决磁盘的备份和恢复
表决磁盘可以使用标准的操作系统命令备份:UNIX系统上dd,Windows系统上ocopy命令。
表决磁盘的添加使用CRSCTL命令完成。
在Oracle 11gR1之前一直可以采用手动方式备份和恢复表决磁盘,从Oracle 11gR2开始就不能再采用手动方式。
备份
UNIX
dd if=voting_disk_name f=backup_file_name
Windows
ocopy voting_disk_name backup_file_name
恢复
UNIX
dd if=backup_file_name f=voting_disk_name
Windows
ocopy backup_file_name voting_disk_name
注意:从Oracle 11gR2开始,不再需要备份表决磁盘。表决磁盘数据自动包含在OCR备份中。在成功恢复OCR之后,只需运行crsctl add css votedisk命令就能在所需位置创建新的表决磁盘。在Oracle 11gR2中不再支持使用dd及其它复制命令进行表决磁盘手动备份。
(2)OCR的备份和恢复(恢复OCR时要极为仔细,分清backup/restore和export/import)
Oracle集群件每4小时自动创建OCR备份。
在任意时间,Oracle总是在主控节点保存OCR的最后3个备份副本。另外,创建备份的CRS守护进程(CRSd)还会创建和保留每一天的OCR备份,并在每周结束时创建一个OCR备份。在任意时刻,总是有5个集群件自动成功创建的OCR备份。
在UNIX/Windows系统中,用于生成备份的默认位置为GRID_HOME/cdata/中。在默认情况下,第二个节点被选为主控节点,OCR备份和存储在主控节点上。
除了自动备份之外,还可以手动备份OCR:
ocrconfig -manualbackup
以上命令直接进行OCR备份,但不备份OLR。
查看当前OCR备份
ocrconfig -showbackup
ocrconfig -showbackup -manual
ocrconfig -showbackup -auto
在恢复OCR之前,应该考虑重启资源或者先删除资源,再将其添加到OCR中。在尝试恢复OCR之前,可以使用ocrcheck命令查看OCR的状态。
要恢复OCR应该从所有节点停止Oracle集群件。crsctl stop crs如果返回错误,就是有-f选项强制停止CRS。
一旦停止了所有节点上的CRS守护进程,就可以使用以下命令恢复OCR:
ocrconfig -restore
然后重启所有节点上的Oracle集群件:
crsctl start crs
还可以导入和导出OCR。这可以作为OCR恢复的替代机制。可以使用以下命令导出OCR的内容:
ocrconfig -export
以上命令会创建OCR的一个二进制副本。使用ocrdump命令可以获得一个人类可识别的文本文件。
导入OCR,也要停止所有节点上的集群件。crsctl stop crs,然后执行导入:
ocrconfig -import
根据需要,可以使用集群验证实用工具,以验证作为集群组成部分配置的所有集群节点是否完整:
cluvfy comp ocr -n all -verbose
验证OCR备份
同样可以使用ocrdump验证OCR备份的内容和结构有效性。
ocrdump -backupfile
注意:集群件的自动OCR备份仅备份主控节点上的OCR,因此推荐从其它节点手动备份OCR,否则,如果主控节点停机,并且不能启动,那么OCR备份会丢失。因此,将OCR备份过程与定期备份计划结合使用是非常重要的。
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28998293/viewspace-768890/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-06-24

  • 博文量
    46
  • 访问量
    166815