现在的位置: 首页 > 综合 > 正文

RAC 之 RMAN 备份

2013年02月06日 ⁄ 综合 ⁄ 共 4948字 ⁄ 字号 评论关闭

 

这篇主要介绍的是RAC 环境下的RMAN 备份。 关于Oracle 备份与恢复的一些理论知识参考我的Blog

 

      Oracle 备份 恢复 概述

       http://blog.csdn.net/tianlesoftware/archive/2010/04/16/5490733.aspx

 

 

一.     RAC 归档的设置

 

1.1  相关理论知识

RAC 在运行的时候,每个实例都会产生归档日志,所有实例的归档日志集中在一起,才能完整地代表数据库的操作历史,此外,只有进行介质恢复(Media Recovery)时,才会用到归档日志。 进行介质恢复时,才要求在执行恢复操作的那个节点访问所有实例的归档日志。

 

正是因为归档日志有这些特点,所以归档位置的设计也有两种方案:

1)各节点生成的归档放到共享存储上,这样自然可以确保每个节点都能够访问到,比如将归档存放到ORACLEASM,或者是第三方提供的集群文件系统中。 对于这种方法,一些集群的配置比较麻烦,而且也增加了ASM的维护,出现问题也不好处理。

2)各节点除在本地生成归档文件外,另外向其它节点或者说执行备份的节点发送归档日志,以确保执行备份的那台节点能够访问到所有的归档文件。在这种方法中,因为ORACLE 的重做日志发送机制非常灵活,在10g版本中可以同时向10个目标地写入归档(11g增加到了30),所以利用这种特性,将各节点生成的归档发送到执行备份的节点中,来实现该节点能够访问所需的归档文件。

 

在第二种方案中,我们可以在每个节点建2个归档目录,分别存放本地和其他节点节点的归档日志,这里假设是2个节点的RAC.

 

归档位置

实例1

实例2

本地磁盘

Mkdir /rac1_arch

Mkdir /rac2_arch

Mkdir /rac1_arch

Mkdir /rac2_arch

Log_archive_dest_1

Location=’/rac1_arch’

Location=’/rac2_arch’

Log_archive_dest_2

Service=’rac2’

Service=’rac1’

Standby_archive_dest

‘/rac2_arch’

‘/rac1_arch’

 

 

在每个节点上建2个目录: /u02/rac1_arch, /u02/rac2_arch 并赋予读写的权限:

 

[root@rac2 /]# mkdir /u02/rac1_arch

[root@rac2 /]# mkdir /u02/rac2_arch

[root@rac2 /]# chown oracle:oinstall /u02/*

[root@rac2 /]# chmod 777 /u02/*

 

      

1.2  RAC 设置成归档模式

       RAC的归档设置和单实例归档设置差不多。 先将所有实例设置为非OPEN状态,然后在任意一个处于MOUNT状态的实例执行ALTER DATABASE命令,操作成功后,再正常启动其它实例即可。

 

之前整理的一篇RAC 归档切换的文档,不过和今天这个实验不太匹配,就重新在整理下。

Oracle RAC 归档 非归档 切换

http://blog.csdn.net/tianlesoftware/archive/2010/04/20/5501184.aspx

 

 

 

1.2.1 设置归档参数

 

1.2.1.1 设置实例orcl1的参数:

 

SQL> alter system set log_archive_dest_1 = 'LOCATION=/u02/rac1_arch' scope=both sid='orcl1';

System altered.

 

SQL> alter system set log_archive_dest_2 = 'service=orcl2' scope=both sid='orcl1';

System altered.

 

SQL> alter system set standby_archive_dest = '/u02/rac2_arch' scope=both sid='orcl1';

System altered.

 

1.2.1.2 设置实例orcl2的参数:

 

SQL> alter system set log_archive_dest_1 = 'LOCATION=/u02/rac2_arch' scope=both sid='orcl2';

System altered.

 

SQL> alter system set log_archive_dest_2= 'SERVICE=orcl1' scope=both sid='orcl2';

System altered.

 

SQL> alter system set standby_archive_dest = '/u02/rac1_arch' scope=both sid='orcl2';

System altered.

 

 

 

1.2.1.3 2个节点上分别验证参数的状态:

 

SQL> set wrap off

SQL> col dest_name format a20

SQL> select dest_name,status,error from v$archive_dest;

 

DEST_NAME            STATUS    ERROR

-------------------- --------- -------------------------------------------------

LOG_ARCHIVE_DEST_1   VALID

LOG_ARCHIVE_DEST_2   VALID

LOG_ARCHIVE_DEST_3   INACTIVE

LOG_ARCHIVE_DEST_4   INACTIVE

LOG_ARCHIVE_DEST_5   INACTIVE

LOG_ARCHIVE_DEST_6   INACTIVE

LOG_ARCHIVE_DEST_7   INACTIVE

LOG_ARCHIVE_DEST_8   INACTIVE

LOG_ARCHIVE_DEST_9   INACTIVE

LOG_ARCHIVE_DEST_10  INACTIVE

 

10 rows selected.

 

1.2.2 RAC 切换成归档模式

 

1.2.2.1 修改数据库的归档模式

       SQL> alter system set cluster_database=false scope=spfile sid='*';

System altered.

 

1.2.2.2 关闭所有实例

       SQL> shutdown immediate

 

 

1.2.2.3 在任意一个实例上将数据库启动到mount状态,修改数据库归档模式

SQL> startup mount

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1266392 bytes

Variable Size             117443880 bytes

Database Buffers           46137344 bytes

Redo Buffers                2924544 bytes

Database mounted.

 

SQL> alter database archivelog;

Database altered.

 

SQL> alter system set cluster_database=true scope=spfile sid='*';

System altered.

 

         SQL> shutdown immediate

 

1.2.2.4 重启数据库,确定归档生效

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u02/rac1_arch

Oldest online log sequence     54

Next log sequence to archive   55

Current log sequence           55

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u02/rac2_arch

Oldest online log sequence     26

Next log sequence to archive   27

Current log sequence           27

 

 

1.2.2.5 在两个节点分别切换归档日志,并检查对应的目录是否产生归档日志

       SQL> alter system switch logfile;

System altered.

 

SQL> select inst_id,recid,dest_id,name from gv$archived_log ;

  INST_ID      RECID    DEST_ID NAME

---------- ---------- ---------- -----------------------------------------------

         2         12          1 /u02/rac1_arch/1_5_730181171.dbf

         2         13          2 /u01/rac1_arch1_5_730181171.dbf

         2         14          2 /u02/rac2_arch/2_3_730181171.dbf

         2         15          1 /u02/rac1_arch/1_6_730181171.dbf

         2         16          2 /u02/rac1_arch/1_6_730181171.dbf

         2         17          1 /u02/rac1_arch/1_7_730181171.dbf

              ……

         1         12          1 /u02/rac1_arch/1_5_730181171.dbf

         1         13          2 /u01/rac1_arch1_5_730181171.dbf

         1         14          2 /u02/rac2_arch/2_3_730181171.dbf

         1         15          1 /u02/rac1_arch/1_6_730181171.dbf

         1         16          2 /u02/rac1_arch/1_6_730181171.dbf

 

 

提示:RAC 数据库各实例拥有各自的REDO线程,归档文件名的生成规则由LOG_ARCHIVE_FORMAT初始化参数控制,默认情况下是 %t_%s_%r.dbf ,所以不会导致重复的发生。

 

 

注意一个参数:LOG_ARCHIVE_LOCAL_FIRST,用来设置是否首先归档文件到本地,默认为true.

 

LOG_ARCHIVE_LOCAL_FIRST 这个参数是Oracle 10g 新增的,它主要针对Standby环境退出,在Oracle 10g 以前的Standby中,本地和远程的归档都完成后,联机日志文件才可以被重用,在网络速度慢的环境中,远程归档的配置会很大程度的影响节点的处理能力。而设置LOG_ARCHIVE_LOCAL_FIRST=trueOracle 会先进行本地归档,本地归档结束后在进行远程传递,同时使联机日志可以重用,从而减少了网络环境对本地的影响。 如果把这个参数设置为FALSE 则相当于Oracle 10g 之前的方式,这个参数默认是True,如果在应用中遇到找不到归档日志的问题,就可以把这个参数改成FALSE.

 

 

 

二、RAC数据库的RMAN备份

抱歉!评论已关闭.