Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58267
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-18 11:07
文章分类
文章存档

2014年(12)

我的朋友

分类: 服务器与存储

2014-02-19 16:57:57

尽管RAC提供了避免或是减少宕机时间的方法,但是仍需要对database自身进行保护,在RAC中,database是被所有Instances共享的。这意味着需要为cluster database设计合适的备份恢复策略,就向在普通环境中一样。

  为了最小化由于disk failure造成的data丢失,常会使用disk镜像技术。例如设置database为归档模式,并对disks进行三个备份。对此可以移除一个镜像副本用于执行备份操作,而剩下两个仍然保持镜像副本,从而保证在线磁盘的活动。为了正确实现这些操作,可能需要先将这些tablespaces设置为backup模式,随后,如果需要,暂时的将disk操作halt,具体使用命令ALTER SYSTEM SUSPEND。当命令完成,可重新恢复原来的操作,通过命名ALTER SYSTEM RESUME,并将tablespaces从新设置为非backup模式。在这里使用EM对备份恢复的设置我就不讲了。

  1、初始化归档

  要开启cluster的归档模式,必须通过一个专有Instance让database处于mounted但尚未open的状态。如果使用的是spfile,必须先为该Instance创建特定SID实体,另外,创建一个特殊目的的文本参数文件,在该文件中,必须为这个专用Instance设置下面的几个参数:

  * CLUSTER_DATABASE:设置为FALSE

  * LOG_ARCHIVE_DEST_n:根据具体的归档策略,设置

  * LOG_ARCHIVE_FOMAT:包含%t或%T和%R参数用于区分thread

  * LOG_ARCHIVE_START设置为TRUE

  具体的详细步骤如下:

  ①关闭运行中的数据库



  # su – oracle 
  $sqlplus /nolog 
  sql>connect /as sysdba 
  sql>shutdown immediate


  ②导出现有数据库的spfile文件

  如果没有spfile,可以先创建spfile

  sql>create spfile from pfile;

  然后导出spfile

  sql>create pfile=’/oracle/pfile.ora’ from spfile; //将pfile创建到/oracle目录下

  ③修改/oracle/pfile.ora文件

  更改cluster_database参数为false。同时可以添加自动归档参数log_archive_start=true,如下:



  *.log_archive_start=true 
  *.cluster_database=false 
  *.log_archive_dest=’LOCATION=/oracle/archivelog’ //将归档日志存放到/oracle/archivelog文件系统下,便于管理 
  *.log_archive_format=%t_%s.dbf


  ④导入已修改的spfile

  在数据库关闭状态下:

  sql>create spfile from pfile=’/oracle/pfile.ora’;

  ⑤启动数据库到加载状态(mount)



  $sqlplus /nolog 
  sql>connect /as sysdba 
  sql>startup mount


  ⑥更改数据库运行模式为归档模式



  $sqlplus /nolog 
  sql>connect /as sysdba 
  sql>startup mount 
  sql>alter database archivelog; //更改为归档模式 
  sql>alter database open; //将数据库打开 
  sql>archive log list; //检查数据库归档参数是否已经正确更改


  ⑦将cluster_database参数更改回true

  首先关闭数据库



  $sqlplus /nolog 
  sql>connect /as sysdba 
  sql>shutdown immediate 
  sql>create spfile from pfile=’/oracle/pfile01.ora’; //将现有spfile导出 
  修改/oracle/pfile01.ora,将cluster_database参数更改为true;


  ⑧导入新修改的pfile01.ora文件



  $sqlplus /nolog 
  sql>connect /as sysdba 
  sql>create spfile from pfile=’/oracle/pfile01.ora’; 
  sql>startup //正常启动数据库


 

 2、归档日志文件的配置

  在备份恢复操作过程中,设计到归档日志文件,Oracle Server是通过控制文件来确定文件的路径和名称。归档日志文件的路径名称也可选择存储在恢复catalog中,如果使用的是RMAN的情况。但是归档日志文件的路径名称不包含node的name,所以RMAN希望在分配的channels上找到nodes所需的files。

  如果使用cluster file system,Instances都可以写入相同的归档日志路径中。这被称为cluster file system scheme。备份恢复归档日志在这种情况下很简单,因为所有的logs都分布在相同的目录中。

  如果没有使用cluster file system,Oracle推荐在每个Instance本地创建归档日志destination,使用NFS-read 加载到其他Instances上。这被称为本地归档的NFS scheme。在备份期间,即可从每个主机上备份归档日志,也可选择一个host执行备份所有归档日志的操作。在恢复期间,一个Instance可以访问来自任何主机的logs,而无需先将它们复制到本地。

  不管使用哪个scheme,都希望提供第二个destination,从而避免单点的失败。

  3、RAC和闪回区

  要在RAC中使用闪回区,必须将其放入ASM磁盘中,一个cluster file system,或是通过NFS为每个RAC Instance设置的共享目录中。换句话说,就是闪回区必须被RAC database中的所有Instances所共享。

  note:在所有的Instances中,需要设置相同的初始化参数DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE。

  4、Oracle的恢复管理器(RMAN)

  当在RAC database中使用RMAN时,在合适的node上使用存储脚本来初始备份恢复进程。

  如果在每个nodes上的RAC Instances使用的是不同的Oracle Home位置,在所有Instances都可以访问的地方创建一个snapshot控制文件(一个cluster file或是共享生磁盘)。具体事例如下:

  RMAN> CONFIGURE SNAPSHOT CONTROLFILE TO ‘/oracle/db_files/snaps/snap_prod1.cf’;

  为了恢复,必须确保每个恢复node可以访问所有Instances的归档日志文件(使用前面说的两种scheme),或是通过将所有归档日志都复制到本地在进行恢复。

  1)配置RMAN

  RMAN创建一个控制文件的snapshot副本作为其备份操作的一部分。在RAC database中,snapshot控制文件被创建到执行备份的node上。需要为这些snapshot控制文件配置默认的路径和文件名,使其能被任何RMAN backup的发起node所访问。可使用共享文件系统路径包括裸磁盘设备。

  2)自动control file备份

  RMAN可选择在BACKUP和COPY命令后自动的备份control file。如果Recovery caalog和当前的控制文件丢失,这些backups可被利用。RMAN在第一个分配的channel上执行自动的备份control file。如果使用不同的参数分配了多个channel(特别是用CONNECT命令分配channel),必须确定哪个channel将用于执行自动backup。一般用第一个分配的node。

  3)RMAN 默认的自动位置

  RMAN自动发现RAC配置中哪些nodes可以访问需要备份恢复的files。RMAN自动定位下面的文件:

  * 备份恢复期间的backup pieces

  * 备份期间的归档redo log

  * 备份恢复期间的data file或是control file备份

  5、user-managed 备份方法

  user-managed 备份恢复RAC database的选择和方法与非cluster database环境中使用的过程类似。它具体包括全局冷备份和在归档模式下进行的热备份。

  但在备份RAC database时,需要考虑额外的问题,具体如下:

  * 对于冷备份,必须shutdown所有的Instance

  * 可以并发的在多个弄得上备份不同的data files

  * 只需在一个Instance上执行命令ALTER TABLESPACE命令(BEGIN BACKUP和END BACKUP),并且该命令的发起可以与 执行备份操作的node不是一个。

  必须让备份恢复操作可以访问每个Instance独立写的归档log files。

  1)user-managed冷备份

  此过程与single-Instance上的备份过程基本类似。唯一不同的就是必须shutdown所有Instances,而不是一个。具体操作如下:

  ①查看V$DATAFILE视图,获得data file的name和位置;查看V$LOGFILE视图,获得在线redo log文件的names和位置;查看V$CONTROLFILE视图,获得控制文件的name和位置;查看V$PARAMETER视图,获得SPFILE文件的name

  ②shutdown所有当前访问database的Instances

  ③使用OS命令存储所有data files、online redo log files、control file的至少一个副本和spfile

  ④restart Instances

  此过程最好可用脚本实现,但该脚本必须要在备份之前确定所有的Instances已经被关闭了。

  2)user-managed热备份

  在本质上,它也和非cluster database的热备份操作是一样的。热备份只有在归档模式下才可以进行的。具体步骤如下:

  ①在具体备份之前,需要执行ALTER TABLESPACE … BEGIN BACKUP名。此操作需要在执行备份某个表空间前分别被执行。可以同时多所有表空间进行设置,也可对tablespace进行单独设置。

  ②利用OS命令备份tablespace的data files

  ③执行ALTER TABLESPACE … END BACKUP命令

  ④备份控制文件:ALTER DATABASE BACKUP CONTROLFILE TO file_name。为了安全起见,将控制文件备份到追踪文件中:ALTER DATABASE BACKUP CONTROLFILE TO TRACE 。

  ⑤执行命令ALTER SYSTEM ARCHIVE LOG CURRENT,从而归档所有redo 线程,包括closed threads中所有的没有归档的logs,并备份那些尚未备份过的归档文件。

  6、channel 连接到cluster Instances

  当使用channels 连接到不同的Instances上进行备份时,每个分配的channel可以连接到cluster不同的Instance上,并且每个channel连接必须只解析到一个Instance上。在备份期间,channels连接的Instances必须要么全mounted或是全open。如果部分open、部分mounted,则备份操作会失败。设置的实例:



  CONFIGURE DEFAULT DEVICE TYPE TO sbt; 
  CONFIGURE DEVICE TYPE sbt PARALLELISM 3; 
  CONFIGURE CHANNEL 1 DEVICE TYPE sbt CONNECT=’sys/rac@RACDB1′; 
  CONFIGURE CHANNEL 2 DEVICE TYPE sbt CONNECT=’sys/rac@RACDB2′; 
  CONFIGURE CHANNEL 3 DEVICE TYPE sbt CONNECT=’sys/rac@RACDB3′;


 

 7、备份的分布

  对于RAC的备份选项,有三种可选的配置:

  * Network backup server:一个专用的备份server,执行并管理cluster和cluster database的备份。所有nodes都没有本地的备份设备。

  * one local drive:一个node需要访问本地的备份设备,并执行和管理cluster database的备份。cluster中所有的nodes应该在一个cluster file system中能够读取所有的datafiles、归档redo logs和SPFILEs 。如果有备份介质在一个本地设备中,建议不要使用non-cluster file system归档scheme。

  * multiple drives:每个node访问本地的备份设备并写入自己的本地备份介质

  在cluster file system scheme中,任意node可以访问所有的datafiles、归档redo logs和SPFILEs。在non-cluster file system scheme中,必须写backup script以便于备份可以正确的分配到每个node的设备和路径上。例如,node 1备份路径名以/arc_dest_1开头的归档redo logs,node 2备份路径名以/arc_dest_2开头的归档redo logs,node 3备份路径名以/arc_dest_3开头的归档redo logs。

  1)one local drives CFS备份scheme

  在一个cluster file system 备份scheme中,每个node都可以访问所有的datafiles、归档redo logs和SPFILEs。这包括ASM、cluster file system和network attached storage(NAS)。

  当备份到cluster file system backup scheme中的一个本地设备中时,它假设在cluster中只有一个node有本地backup设备。在这种情况下,先执行下面的一次性设置命令:



  CONFIGURE DEVICE TYPE sbt PARALLELISM 1; 
  CONFIGURE DEFAULT DEVICE TYPE TO sbt;


  因为执行备份的任何node都可读写访问由其他nodes写的归档redo logs,对于任何node的备份脚本很简单:

  BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

  2)multiple drives CFS备份scheme

  当database备份到cluster file system backup scheme中多个设备里,它假设每个node有自己的本地磁带设备。执行下面的一次性设置,以便于一个每个node上配置一个channel。



  CONFIGURE DEVICE TYPE sbt PARALLELISM 3; 
  CONFIGURE DEFAULT DEVICE TYPE TO sbt; 
  CONFIGURE CHANNEL 1 DEVICE TYPE sbt CONNECT ‘user1/passwd1@node1′; 
  CONFIGURE CHANNEL 2 DEVICE TYPE sbt CONNECT ‘user2/passwd2@node2′; 
  CONFIGURE CHANNEL 3 DEVICE TYPE sbt CONNECT ‘user3/passwd3@node3′;


  同理,也可将设备设置为DISK。随后,执行下面的备份脚本,它可运行在cluster中的任何一个node上,会在多个备份设备上分配备份datafiles、archived redo logs和SPFILEs。

  BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

  例如人,如果database有10个datafiles和100个归档redo logs在磁盘上,则node 1的备份设备将备份datafiles1、3、7和logs 1-33 。node 2将备份datafiles 2、5、10和logs 34-66 。node 3 备份datafiles 4、6、8、9以及归档redo logs 67-100 。

  3)non-cluster file system backup scheme

  在non-cluster file system环境中,每个node只可备份本地归档的redo logs。例如,node 1 不能访问node 2或node 3的归档redo logs,除非为远程访问配置了network file system。但如果为backup配置了NFS,则只能备份到 一个设备中。

  如果要在non-cluster file system backup scheme中备份到多个设备中,就需要每个node有自己的本地磁带设备。可执行如下的一次性设置:



  CONFIGURE DEVICE TYPE sbt PARALLELISM 3; 
  CONFIGURE DEFAULT DEVICE TYPE TO sbt; 
  CONFIGURE CHANNEL 1 DEVICE TYPE sbt CONNECT ‘usr1/pwd1@n1′; 
  CONFIGURE CHANNEL 2 DEVICE TYPE sbt CONNECT ‘usr2/pwd2@n2′; 
  CONFIGURE CHANNEL 3 DEVICE TYPE sbt CONNECT ‘usr3/pwd3@n3′;


  可以写一个备份脚本,用于整个database的备份,它可运行在所有的node上。

  BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;

  8、重建与恢复

  通过RAC访问的database的介质恢复要求至少每个thread至少有一个归档日志文件。但如果一个thread的在线redo log包含了足够的恢复信息,对任何thread重建归档日志文件是不必要的。

  如果使用RMAN进行介质恢复并且共享归档日志目录,可通过SET子句修改自动重建的destination到开始恢复的node的本地目录中。如果从每个node备份的归档日志没有使用中枢的介质管理系统,必须先从远程nodes重建所有的log files,并将其移动到使用RMAN进行恢复的node的主机上。但是如果使用了中枢介质管理系统,可用RMAN的AUTOLOCATE特性。这可用在远程node上的本地tape设备恢复database。

  如果恢复达到某一时点,此时一个额外的thread被enabled。恢复进程需要该thread的一个归档log file。如果使用一个备份control file,当所有的归档log files都用完后,需要重定向恢复进程到在线redo log files来完成恢复。如果在恢复过程中一个thread被disable了,进程将通知该thread的log file已经不再需要。

  9、在RAC中的并发恢复

  它是缩短恢复时间最有效的方法。可使用RMAN或是其他Oracle tools例如sql*plus来执行RAC的并发恢复。

  用RMAN的RESTORE和RECOVER语句,Oracle server自动的并发恢复:

  * restoring data files:分配的channels的数量决定了最大的并发度

  * 应用增量备份:最大的并发度是由分配的channels的数量决定的

  用其他工具执行并发恢复,要么设置RECOVERY_PARALLELISM初始化参数(如果是0或是1,将执行串行恢复,并且不能超过PARALLEL_MAX_SERVERS参数)或在RECOVER 命令中加入PARALLEL子句。

  在并发恢复过程中:

  * 并发恢复中,一个进程读取log files,多个进程将redo应用到data files中。

  * Oracle自动的start多个恢复进程,无需使用更多的session

  * 这些processes可以在一个Instance也可以延伸到多个Instances上

  10、在RAC中的fast-start 并发回滚

  如果存在长期运行的较大事务,同时nodes有多个CPUs,应该考虑设置初始化参数FAST_START_PARALLEL_ROLLBACK为一个非默认值。这使得恢复进程的rollback阶段也可并发执行。因为每个Instance负责自己的恢复进程,所以需要通过每个Instance上的视图V$FAST_START_SERVERS和V$FAST_START_TRANSACTIONS或是全局视图GV$FAST_START_SERVERS和GV$FAST_START_TRANSACTIONS监控并调节并发的回滚。尽管fast-start 并发回滚不能执行跨Instances的回滚,但可以改善RAC database的回滚进程。

  11、OCR的管理

  OCR包含了RAC和CRS中cluster和database的重要设置信息。一个cluster中的CRS Instance会每四个小时自动创建一个OCR的备份,并且CRS会报错最近的3个副本。

  CRS Instance也会在每天和每周的开始创建一个OCR的备份,并保存最近的两个版本。尽管不能自定义备份的频度和保存的备份数量,但可以通过ocrconfig -showbackup查看自动保存的备份的文件名称位置。

  默认的自动备份路径是/cdata/目录下。建议将该位置修改到一个被所有nodes共享的位置。具体使用命令ocrconfig -backuploc命令。

  由于OCR信息的重要性,建议手工创建自动产生的物理备份的副本,并使用ocrconfig -export命令产生OCR的逻辑备份。对此命令需要指定文件名作为参数,它产生的是二进制文件,不能进行编辑。

  note:当一个OCR client正在执行时,export OCR操作会返回error。

  对于OCR的恢复,需要执行下面的步骤:

  ①通过时间,找到不一致发生之前的OCR的backup

  ②以单用户模式或是runlevel 1的方式restart所有的nodes

  ③使用下面的命令恢复或是import OCR

  $ ocrconfig –restore /app/oracle/product/10.1.0/crs_1/cdata/jfv_clus/day.ocr

  $ ocrconfig –import /u01/logical_ocr/yesterday

  ④以多用户模式restart所有nodes

  12、voting disk的恢复

  一般,voting disk应该被存储在冗余设备中,避免数据的丢失。但如果不幸丢失了voting disk,如果有backup,可以通过dd命令恢复它。

  应该养成这样的习惯:当CRS安装后立即备份voting disk;当在cluster中增加或是删除nodes后立即备份voting disk。

  如果丢失了voting disk,并没有备份,则只能重新安装CRS。 

阅读(1396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~