Oracle

在进行容灾业务配置前,请先检查生产端和灾备端的Oracle数据库环境和存储侧环境是否满足要求。如果不满足要求,请及时调整。

公共检查项目

以下检查项目需要在生产端数据库环境和灾备端数据库环境中进行检查和配置。

当生产端应用为Oracle RHCS集群,如果使用CLVM卷管理配置方式,不支持灾备端单机部署方式。

当主机为AIX操作系统时,如果用户执行rendev命令修改生产端物理卷(PV)的名称,且修改后的PV名称以“/dev/hdisk”开头时,执行容灾测试、计划性迁移或故障恢复操作后,灾备端的设备名称可能会发生变化。

  1. 当Oracle数据库所在主机操作系统为Windows时,请检查Oracle数据库的密码是否满足输入字符要求(支持字符:只能包含字母、数字、~_-#$*)。
  2. 当Oracle数据库所在主机操作系统为Linux、AIX或HP-UX时,数据库所使用的文件系统的挂载点目录不能存在嵌套关系,例如“/testdb/”和“/testdb/database1/”挂载点目录。
  3. 当Oracle数据库所在主机操作系统为RedHat Linux,且主机与存储阵列之间使用FC链路连接时,请检查生产主机和灾备主机上是否已经安装systool软件。

    执行rpm -qa | grep sysfsutil命令,检查主机上是否已经安装systool软件。

    • 如果回显信息中包含“sysfsutils”字样,表明主机上已经安装systool软件。例如回显信息为“sysfsutils-2.0.0-6”。
    • 如果回显信息中未包含“sysfsutils”字样,表明主机上未安装systool软件,请从操作系统的安装光盘中获取该软件包进行安装。

    以主机操作系统为RedHat Linux 6.3 for x86_64,且sysfsutils软件包名称为“sysfsutils-2.1.0-6.1.el6.x86_64.rpm”为例说明,安装软件包命令请以实际为准。

  4. 检查与配置数据库环境变量。

    当对Oracle数据库的环境变量进行设置后,eReplication Agent才能对Oracle数据库的数据一致性提供保障。建议在安装eReplication Agent之前配置环境变量,如果已经安装了eReplication Agent,请在配置环境变量后重新启动eReplication Agent,以使配置生效。

    • 在非Windows环境下Oracle环境变量的配置方法
      1. 以Linux操作系统配置Oracle 12gR1为例,以“root”用户身份登录Linux应用服务器。
      2. 执行su - oracle命令,切换为“oracle”用户。
      3. 执行echo $ORACLE_BASE命令,确认环境变量中已配置ORACLE_BASE。
        oracle@linux:~> echo $ORACLE_BASE 
        /u01/app/oracle
      4. 执行echo $ORACLE_HOME命令,确认环境变量中已配置ORACLE_HOME。
        oracle@linux:~> echo $ORACLE_HOME 
        /u01/app/oracle/product/12.1.0/dbhome_1
      5. 执行echo $PATH命令,确认“ORACLE_HOME/bin”已加入PATH中。
        oracle@linux:~> echo $PATH 
        /u01/app/oracle/product/12.1.0/dbhome_1/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin     
      6. 执行exit命令,退出“oracle”用户。
      7. 执行su - grid命令,切换为“grid”用户。
      8. 执行echo $ORACLE_HOME命令,确认环境变量中已配置ORACLE_HOME。
        grid@linux:~> echo $ORACLE_HOME 
        /u01/app/12.1.0/grid/

        Oracle 11gR2、12c的版本grid用户的环境变量中必须配置ORACLE_HOME。

      9. 执行echo $PATH命令,确认“ORACLE_HOME/bin”已加入PATH中。
        grid@linux:~> echo $PATH 
        /u01/app/12.1.0/grid//bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
      10. 执行exit命令,退出“grid”用户。
      11. 执行su - rdadmin命令,切换为“rdadmin”用户。
      12. 执行vi ~/.profile命令,打开rdadmin用户home目录下的“.profile”文件。
      13. 按“i”进入编辑模式,编辑“.profile”文件。
      14. 将如下内容添加到“.profile”文件中。具体参数说明如表1所示。
        ORA_CRS_HOME=/opt/oracle/product/10g/cluster  
        PATH=$PATH:/bin:/sbin:/usr/sbin 
        export ORA_CRS_HOME PATH
        表1 系统变量

        变量名

        变量值

        说明

        ORA_CRS_HOME

        /opt/oracle/product/10g/cluster

        Oracle的CRS软件安装目录。只有Oracle 11gR2之前版本的RAC环境,并且安装了clusterware才需要配置此环境变量。

        PATH

        PATH=$PATH:/bin:/sbin:/usr/sbin

        Oracle数据库所在主机操作系统的命令目录。

      15. 编辑完成后,按“Esc”键,输入:wq!命令,保存并退出“.profile”文件。

  5. 当Oracle数据库所在主机操作系统为Linux时,请检查UDEV磁盘映射方式。

    UDEV场景下,UDEV磁盘映射方式约束说明如下:

    • 仅支持使用磁盘分区形式进行UDEV磁盘映射。
    • 当使用UDEV映射ASM磁盘时,仅支持直接使用UDEV磁盘作为ASM磁盘组的磁盘。
    • 生产端和灾备端的UDEV配置规则内容必须都在“99-oracle-asmdevices.rules”规则文件中(存放路径为“/etc/udev/rules.d”)。

      配置UDEV磁盘映射有两种方式,以SUSE Linux 10操作系统(磁盘名为“asm1”和“asm2”)为例说明,请参考以下规则内容配置UDEV磁盘映射:

      • 重命名磁盘方式
        KERNEL=="sd*1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="36200bc71001f375519f5d2c0000000f9", NAME="asm1", OWNER="oracle",  
        GROUP="dba", MODE="0660"
      • 创建磁盘链接方式
        KERNEL=="sd*1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="36200bc71001f375519f5d2c0000000f9", SYMLINK+="asm1", OWNER="oracle",  
        GROUP="dba", MODE="0660"

      KERNEL字段必须以通配符方式指定(如KERNEL=="sd*1"),不能指定固定的设备分区名(如KERNEL="sda"),否则将导致UDEV配置的规则不能生效。

  6. 检查数据库认证方式。

    创建Oracle保护组过程中,可以进行认证方式的选择,针对不同的保护对象和不同的RAC主机可以配置不同的认证方式,目前支持数据库认证和操作系统认证两种方式。具体的配置要求如表2所示。

    表2 认证方式配置要求

    认证方式

    要求

    数据库认证

    生产端与灾备端认证方式必须保证一致。

    同一个集群内部,各个主机上的认证方式必须一致。

    同一个保护组内,各个保护对象选择的认证方式保持一致。

    创建保护组时,在eReplication上选择的认证方式必须和实际数据库使用的认证方式保持一致。

    操作系统认证

    针对部署在ASM上的Oracle RAC集群环境,必须要开启操作系统认证,才能在容灾恢复时正常启动备端集群。

    针对部署在ASM上的Oracle单实例数据库,要求:

    • 类UNIX系统中,如果将Oracle的密码文件配置为保存在ASM磁盘组中,则必须开启操作系统认证,或者将密码文件存放在本地文件系统上,否则将导致Oracle保护组对应的恢复计划执行测试、计划性迁移或故障恢复等操作失败。
    • Windows系统中,必须保证操作系统认证开启,否则将导致Oracle保护组对应的恢复计划执行测试、计划性迁移或故障恢复等操作失败。

生产端检查项目

  1. 检查生产端数据库运行模式。

    eReplication Agent对数据库一致性保证实现需要Oracle运行在归档模式下,请检查Oracle数据库是否运行在归档模式下。

    • Windows环境下运行模式的配置方法
      1. 运行sqlplus命令,登录数据库。这里以“sys”用户,密码为“abc”,实例名为“db01”为例。

        命令输入格式和显示结果如下所示:

        C:\Documents and Settings\Administrator>sqlplus /nolog 
         
        SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 3 26 18:09:00 2020 
         
        Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 
         
        SQL> conn sys/abc@db01 as sysdba 
        Connected.
      2. 运行archive log list命令,查看数据库是否为归档模式状态。

        命令输入格式和显示结果如下所示:

        SQL> archive log list; 
        Database log mode            No Archive Mode 
        Automatic archival           Enabled 
        Archive destination          G:\oracle10g\product\10.2.0\db_1\RDBMS 
        Oldest online log sequence   7 
        Current log sequence         9     
        • 如果“Database log mode”的字段值为“Archive Mode”,则说明数据库已处于归档模式。
        • 如果“Database log mode”的字段值为“No Archive Mode”,请参考《Oracle用户文档》将数据库的运行模式改为归档模式。
    • 非Windows环境下运行模式的配置方法
      1. 运行sqlplus命令,登录数据库。这里以“sys”用户,密码为“oracle”,实例名为“verify”为例。

        命令输入格式和显示结果如下所示:

        [oracle@rhcs218 ~]$ sqlplus /nolog 
         
        SQL*Plus: Release 11.2.0.3.0 - Production on Fri Jun 26 10:30:34 2020 
         
        Copyright (c) 1982, 2002, Oracl.  All rights reserved. 
         
        SQL> conn sys/oracle@verify as sysdba 
        Connected.
      2. 运行archive log list命令,查看数据库是否为归档模式状态。

        命令输入格式和显示结果如下所示:

        SQL> archive log list; 
        Database log mode             No Archive Mode 
        Automatic archival            Enabled 
        Archive destination           /oracle/archive 
        Oldest online log sequence    7793 
        Next log sequence to archive  7795   
        Current log sequence          7795     
    • 如果“Database log mode”的字段值为“Archive Mode”,则说明数据库已处于归档模式。
    • 如果“Database log mode”的字段值为“No Archive Mode”,请参考Oracle用户文档将数据库的运行模式改为归档模式。

  2. 检查生产端数据库文件。

    检查数据库的数据文件、日志文件、控制文件是否存放在阵列的LUN上,如果不是则无法进行容灾。建议临时表空间和以上三种文件之一共享LUN,或使用单独的LUN存储。

灾备端检查项目

  1. 检查灾备端数据库环境。

    如果灾备端数据库环境和生产端不一样,请用户自行处理,确保灾备端和生产端具有完全一样的数据库环境。

    灾备端数据库环境要求如表3所示。

    表3 灾备端数据库环境要求

    检查项

    要求

    安装Oracle

    Oracle的操作系统及其版本必须和生产端保持一致。

    Oracle软件的版本必须和生产端保持一致。

    Oracle软件的安装位置必须和生产端保持一致。

    数据库

    数据库认证方式必须和生产端保持一致。

    数据库的名称、数据库的用户名及密码必须和生产端保持一致。

    非Windows操作系统环境(文件系统)

    Oracle用户的ID及其所属组ID必须和生产端保持一致。

    Oracle RAC环境

    SCAN-IP的scan name必须和生产端保持一致。

  2. 灾备端数据库容灾环境搭建。

    以下内容介绍在灾备主机上完成Oracle数据库软件的安装操作后,两种搭建灾备数据库容灾环境的方法。

    Windows操作系统和类UNIX操作系统下,各自的数据库目录对应关系如表4所示。

    表4 不同主机操作系统下Oracle数据库目录说明

    主机操作系统类型

    数据库根目录

    数据库安装目录

    查询方法

    Windows

    %ORACLE_BASE%

    %ORACLE_HOME%

    • 执行echo %ORACLE_BASE%命令,查询Oracle数据库的根目录。
    • 执行echo %ORACLE_HOME%命令,查询Oracle数据库的安装目录。

    类UNIX

    $ORACLE_BASE

    $ORACLE_HOME

    • 执行echo $ORACLE_BASE命令,查询Oracle数据库的根目录。
    • 执行echo $ORACLE_HOME命令,查询Oracle数据库的安装目录。
    • 方法一:通过手工复制方法,将生产端数据库必备文件复制至灾备端(假设数据库实例名为db001)

      复制文件时,为了确保生产端和灾备端文件权限一致,请从生产端Oracle用户目录下复制必备文件至灾备端Oracle用户目录下。

      1. 将生产端Oracle用户指定目录下与数据库实例db001相关的文件复制到灾备端的Oracle用户对应目录下。
        • 对于Windows操作系统,此处的指定目录为“%ORACLE_HOME%\database”。
        • 对于类UNIX操作系统,此处的指定目录为“$ORACLE_HOME/dbs”。
      2. 在灾备端Oracle用户指定目录下创建名为db001的文件夹,参照生产端的结构,在灾备端Oracle用户db001文件夹下创建相同目录结构。
        • 对于Windows操作系统,此处的指定目录为“%ORACLE_BASE%\ADMIN”。
        • 对于Oracle 10g版本,需要在“%ORACLE_BASE%\ADMIN\%DBName%\bdump”目录下创建“alert_%SIDNAME%.ora”的文件;
        • 对于Oracle 11g、12c版本,还需要参考生产端的目录结构“%ORACLE_BASE%\diag\rdbms”创建到下面第二级目录,例如“%ORACLE_BASE%\diag\rdbms\一级目录\二级目录”。
        • 对于类UNIX操作系统,此处的指定目录为“$ORACLE_BASE/admin”。
        • 对于Oracle 10g版本,需要在“$ORACLE_BASE/admin/$dbName/bdump”目录下创建“alert_%SIDNAME%.ora”的文件
        • 对于Oracle 11g、12c版本,还需要参考生产端的目录结构“$ORACLE_BASE/diag/rdbms”,创建到下面第二级目录,例如“$ORACLE_BASE/diag/rdbms/一级目录/二级目录”。
      3. 当灾备端数据库为集群时,需要执行以下两条命令完成数据库和实例的注册。
        • srvctl add database -d {DATABASENAME} -o {ORACLE_HOME}
        • srvctl add instance -d {DATABASENAME} -i {INSTANCENAME} -n {HOSTNAME}

          其中DATABASENAME为数据库名称,ORACLE_HOME为数据库安装目录,INSTANCENAME为数据库实例名称,HOSTNAME为数据库所在主机名称。

        • 针对12C之前的版本,如果灾备端是Oracle RAC环境,则需要通过集群命令停止集群,包括数据库实例,ASM实例等,并检查集群中每一个节点中的数据库实例是否已关闭,检查ASM实例是否已关闭。对于裸设备还需要解除裸设备绑定。
        • 针对12C及之后的版本,需要确保灾备端Oracle集群处于正常运行状态,主机资源周期刷新需要通过srvctl命令查询Oracle应用信息。
      4. 以下场景需要配置pfile文件,具体配置方法请参见Oracle配置(配置pfile文件)
        • 当生产端为Oracle RAC集群,灾备端为单机时,在创建完灾备端数据库后,将生产端Oracle数据库的pfile文件拷贝一份副本,并根据灾备端Oracle单机部署方式替换该副本pfile中的集群配置信息,然后将该副本pfile生成spfile文件并放到灾备端本地磁盘。
        • 当生产端和灾备端的Oracle数据库使用的spfile文件存放在相同位置,且spfile文件使用的存储做了容灾保护时(例如生产端和灾备端使用了相同位置的spfile文件,且数据库的spfile和数据文件存放在同一个ASM磁盘组),在数据同步时灾备端的spfile文件会被生产端的spfile文件覆盖,从而导致灾备端的部分配置数据丢失。建议灾备端的spfile文件存放在灾备主机的文件系统上。
          • 对于Windows操作系统,spfile配置文件位于“%ORACLE_HOME%\database”目录下。
          • 对于类UNIX操作系统,spfile配置文件位于“$ORACLE_HOME/dbs”目录下。
    • 方法二:通过创建数据库的方法,在灾备端生成容灾必备文件
      1. 将未使用的LUN映射给灾备主机,然后在灾备主机侧扫描已映射的LUN。
      2. 如果生产端数据库安装在文件系统上,则需要按照生产端的情况在灾备端创建文件系统,并完成文件系统的挂载。如果生产端数据库使用了ASM,则需要按照生产端的情况创建ASM磁盘组。
      3. 按照生产端的情况创建灾备端Oracle数据库。
      4. 创建完数据库以后,需要关闭灾备端数据库,并解除文件系统或ASM的挂载。
        • 如果数据库使用了ASM,则关闭灾备端数据库后,还需要关闭ASM实例。
        • 针对12C之前的版本,如果灾备端是Oracle RAC环境,则需要通过集群命令停止集群,包括数据库实例,ASM实例等,并检查集群中每一个节点中的数据库实例是否已关闭,检查ASM实例是否已关闭。对于裸设备还需要解除裸设备绑定。
        • 针对12C及之后的版本,需要确保灾备端Oracle集群处于正常运行状态,主机资源周期刷新需要通过srvctl命令查询Oracle应用信息。
      5. 移除灾备端LUN映射。
      6. 以下场景需要配置pfile文件,具体配置方法请参见Oracle配置(配置pfile文件)
        • 当生产端为Oracle RAC集群,灾备端为单机时,在创建完灾备端数据库后,将生产端Oracle数据库的pfile文件拷贝一份副本,并根据灾备端Oracle单机部署方式替换该副本pfile中的集群配置信息,然后将该副本pfile生成spfile文件并放到灾备端本地磁盘。
        • 当生产端和灾备端的Oracle数据库使用的spfile文件存放在相同位置,且spfile文件使用的存储做了容灾保护时(例如生产端和灾备端使用了相同位置的spfile文件,且数据库的spfile和数据文件存放在同一个ASM磁盘组),在数据同步时灾备端的spfile文件会被生产端的spfile文件覆盖,从而导致灾备端的部分配置数据丢失。建议灾备端的spfile文件存放在灾备主机的文件系统上。
          • 对于Windows操作系统,spfile配置文件位于“%ORACLE_HOME%\database”目录下。
          • 对于类UNIX操作系统,spfile配置文件位于“$ORACLE_HOME/dbs”目录下。
      7. 在灾备端创建数据库后,请检查生产端和灾备端的spfile文件名称。

        如果灾备端与生产端的spfile文件名称不同,为避免同步后灾备端数据库被覆盖,需要将灾备端pfile文件中的spfile文件名称修改为与生产端保持一致或将灾备端数据库的spfile文件存放到本地磁盘。具体配置方法请参见Oracle 12.2配置(配置spfile文件)。

存储侧检查项目

对于使用异步复制(SAN)容灾技术的场景,如果数据库配置多组归档日志,要求至少有一组归档日志使用的存储资源配置了远程复制或远程复制一致性组,且不能与数据文件、控制文件、在线日志文件配置在同一个远程复制一致性组中。

各容灾技术对存储侧环境要求说明如表5所示。

表5 各容灾技术对存储侧环境要求

容灾技术

约束和要求

同步/异步复制(SAN)

  • 当基于存储阵列远程复制实现容灾保护时,应用使用的存储阵列必须已经创建了一致性复制关系,即:
    • 当使用存储阵列保护时,应用使用的LUN已经创建了远程复制,且远程复制状态正常。
    • 如果使用了多个LUN,所对应的远程复制已经加入到同一个一致性组中。如果仅使用了一个存储(LUN),则无需将该存储所在的远程复制加入一致性组。
    • 对于T系列V2R2及其更高版本、18000系列存储,提供了自动添加主机与存储映射的功能,只需要保证存储与主机的启动器连接正常,系统会自动在存储上创建对应的主机、主机组、LUN组和映射视图。
    • 对于S5000系列、T系列V1,需要先将灾备物理主机的启动器与存储上的逻辑主机建立映射关系,如果是集群环境,该逻辑主机需要添加到主机组中。
    • 对于T系列V2及其更高版本、18000系列存储,灾备主机在存储阵列上只能归属于一个主机组,且该主机组只能归属于同一个映射视图。同时,受保护的应用使用的存储LUN,其对应的远程复制从LUN,只能归属于同一个LUN组,且该LUN组与该主机组必须归属于同一个映射视图中。
    • 如果使用的存储阵列为T系列V200R001C00版本,创建映射视图后,需要修改映射视图的属性,取消勾选“为主机启用带内命令”。
  • 当灾备端应用环境搭建完成后,需要将应用的数据文件、控制文件、日志文件所在存储LUN或卷的主机映射解除。
  • 请检查灾备主机上需要恢复的Oracle数据库使用的所有文件系统是否已经解除挂载(umount)。
  • 请在DeviceManager软件上检查灾备端数据库所使用的远程复制对应的从LUN没有被映射到任何主机/主机组/映射视图。
  • 如果灾备端主机为AIX系统,还需要检查以下项目:
    • 请检查灾备主机上需要恢复的数据库使用逻辑卷(LV)所在的卷组(VG)信息是否已经被删除。
    • 请检查灾备主机上需要恢复的数据库使用的物理卷(PV)以及其对应的设备(hdiskx)是否已经被删除。

SAN&NAS一体化异步复制

  • 当基于存储阵列远程复制实现容灾保护时,应用使用的存储阵列必须已经创建了一致性复制关系,即:
    • 当使用存储阵列保护时,应用使用的LUN已经创建了远程复制,且远程复制状态正常。
    • 如果使用了多个LUN,所对应的远程复制已经加入到同一个一致性组中。如果仅使用了一个存储(LUN),则无需将该存储所在的远程复制加入一致性组。
    • 对于T系列V2R2及其更高版本、18000系列存储,提供了自动添加主机与存储映射的功能,只需要保证存储与主机的启动器连接正常,系统会自动在存储上创建对应的主机、主机组、LUN组和映射视图。
    • 对于S5000系列、T系列V1的存储,需要先将灾备物理主机的启动器与存储上的逻辑主机建立映射关系,如果是集群环境,该逻辑主机需要添加到主机组中。
    • 对于T系列V2及其更高版本、18000系列存储,灾备主机在存储阵列上只能归属于一个主机组,且该主机组只能归属于同一个映射视图。同时,受保护的应用使用的存储LUN,其对应的远程复制从LUN,只能归属于同一个LUN组,且该LUN组与该主机组必须归属于同一个映射视图中。
    • 如果使用的存储阵列为T系列V200R001C00版本,创建映射视图后,需要修改映射视图的属性,取消勾选“为主机启用带内命令”。
  • 当灾备端应用环境搭建完成后,需要将应用的数据文件、控制文件、日志文件所在存储LUN或卷的主机映射解除。
  • 请检查灾备主机上需要恢复的Oracle数据库使用的所有文件系统是否已经解除挂载(umount)。
  • 请在存储阵列管理软件上检查灾备端数据库所使用的远程复制对应的从LUN没有被映射到任何主机/主机组/映射视图。
  • 如果灾备端主机为AIX系统,还需要检查以下项目:
    • 请检查灾备主机上需要恢复的数据库使用逻辑卷(LV)所在的卷组(VG)信息是否已经被删除。
    • 请检查灾备主机上需要恢复的数据库使用的物理卷(PV)以及其对应的设备(hdiskx)是否已经被删除。

版权所有 © 华为技术有限公司