rac 火星舱如何备份oracle_管理RAC环境中的数据备份和恢复

尽管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′;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值