为 Backup and DR Service 准备 Oracle 数据库

在开始之前,最好先查看 Backup and DR Service for Oracle

在备份 Oracle 数据库之前,您必须将 Oracle 服务器添加为 Backup and DR Service 的主机。为此,请务必参阅备份 Oracle 数据库的前提条件,然后按照以下准备步骤操作。

Oracle 数据库的准备程序
步骤 准备步骤
1 在 Linux 环境中准备 Oracle 数据库
在 Windows 环境中准备 Oracle 数据库
2 准备备份数据文件位于 ASM 磁盘组中的 Oracle 数据库
3 准备 Oracle 数据库身份验证
启用数据库块更改跟踪(可选)
防止来自 Oracle Data Guard 节点的攻击
将 RMAN 备份配置为透明故障切换到其他节点
Oracle 归档日志压缩
配置 Oracle 数据库服务以在多个节点之间实现负载均衡
修补 Oracle 12c

在 Linux 环境中准备 Oracle 数据库

在保护 Oracle 数据库之前,或者在数据库保护作业失败时,请确保 Oracle 数据库服务器上的以下设置正确无误。

  • 要保护的每个 Oracle 数据库都必须处于正常运行状态。例如:

    database: actdb
    #ps -ef | grep pmon | grep -i actdb
    oracle   27688     1  0  2015 ?        00:26:24 ora_pmon_actdb
    
  • 数据库必须以归档日志模式运行。如需验证数据库是否以归档日志模式运行,请以 Oracle 操作系统用户身份登录数据库服务器,并设置数据库环境变量:

    export ORACLE_HOME=<oracle home path>
    (get this from /etc/oratab)
    export ORACLE_SID=<database instance name> (you can get this through
    ps -ef | grep pmon)
    export PATH=$ORACLE_HOME/bin:$PATH
    

    登录 sqlplus:

    #sqlplus / as sysdba
    #SQL> archive log list;
    Database log mode   Archive Mode
    Automatic archival        Enabled
    Archive destination        +FRA
    Oldest online log sequence     569
    Next log sequence to archive   570
    Current log sequence        570
    #SQL>
    
  • 数据库应使用 spfile。验证数据库是否正在运行,且使用的是 spfile

    #sqlplus / as sysdba
    SQL> show parameter spfile
    NAME      TYPE   VALUE
    ------------------ ----------- ------------
    spfile      string  +DATA/ctdb/spfilectdb.ora
    
  • 对于 Oracle RAC 数据库,快照控制文件必须位于共享磁盘下。对于 ASM 下的 Oracle RAC 数据库,快照控制文件必须位于共享磁盘下。

    如需检查这一点,请连接到 RMAN 并运行 show all 命令。如有必要,请进行配置:

        rman target /
    

    然后在 RMAN 中:

       show all
    

    对于 db_unique_name 为 CTDB 的数据库,RMAN 配置参数如下:

    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/mnt/ctdb/snapcf_ctdb.f';
    

    此示例展示了设置为本地文件系统的配置。

    在 RAC 环境中,此设置必须为共享 ASM 磁盘组。如需将其放在 ASM 磁盘组上,请使用:

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DG name>/snap_<DB name>.f';
    

准备备份数据文件位于 ASM 磁盘组中的 Oracle 数据库

ASM 磁盘组上的 Backup and DR 暂存磁盘

必须设置 ASM diskstring 参数,且该参数不得为 null。以 ASM 操作系统用户身份登录到数据库服务器,并设置 ASM 环境变量:

    # export ORACLE_HOME=(oracle ASM home path)
    (get this from /etc/oratab)
    #export ORACLE_SID=(ASM instance name) (you
    can get this through ps ?ef | grep pmon)
    #export PATH=$ORACLE_HOME/bin:$PATH

连接到 sqlplus

    #sqlplus / as sysasm
    #sql> show parameter asm_diskstring
    NAME      TYPE   VALUE
    ------------------- ----------- ------------------------------
    asm_diskstring      string  ORCL:*, /dev/sdt1, /dev/sdu1

如果价值的结果为 null,则在继续进行 Backup and DR 保护之前,获取现有 ASM 磁盘的正确 ASM 磁盘字符串值。Backup and DR 备份会将其备份暂存磁盘的磁盘字符串路径 (/dev/Backup and DR/asm/*) 添加到 ASM 的映射中。

文件系统上的 Backup and DR 暂存磁盘

如果您要将 Oracle ASM 数据库保护到文件系统,则必须在应用详细信息和设置下将将 ASM 转换为文件系统设置为。 请参阅适用于 Oracle 数据库的应用详细信息和设置

准备 Oracle 数据库身份验证

只有在您计划使用数据库身份验证时,才需要执行以下额外的准备步骤。有关 Oracle 数据库身份验证的说明,请参阅使用数据库身份验证的 Backup and DR

  1. 按照在 Linux 环境中准备 Oracle 数据库中的步骤操作。

  2. 如果未提供,请为 Backup and DR 备份创建数据库用户账号:

    create user act_rman_user identified by <password>;
    
  3. 通过登录到所有节点并运行以下命令,向所有 RAC 节点授予 sysdba 访问权限:sqlplus

    grant create session, resource, sysdba to act_rman_user;
    

    对于 Oracle 12c,此角色可以是 sysbackup 而不是 of sysdba,并且数据库用户名以 # 开头。

  4. 验证是否已在 RAC 环境中的所有节点上授予 sysdba 角色:

    #sqlplus / as sysasm
    # sql> select * from gv$pwfile_users;
    INST_ID USERNAME SYSDB SYSOP SYSAS
    ---------- --------------  ----- ----- -----
    1 SYS TRUE TRUE FALSE
    2 SYS TRUE TRUE FALSE
    1 ACT_RMAN_USER TRUE TRUE FALSE
    2 ACT_RMAN_USER TRUE TRUE FALSE
    
  5. 根据您的环境类型,按照以下说明测试服务名称:

在非 RAC 环境中创建并验证 Oracle 服务名称

Oracle 服务名称仅用于数据库身份验证。不需要用于操作系统身份验证。

示例: 数据库名称:dbstd, 实例名称:dbstd

  1. 如果 Oracle 服务名称未列出,请在位于 $ORACLE_HOME/network/admin$GRID_HOME/network/admintnsnames.ora 文件中添加以下条目,以创建服务名称条目:

    act_svc_dbstd =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST
    = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = dbstd)
    ) )
    

    如果 tnsnames.ora 文件位于非标准位置,请在Oracle 数据库的应用详细信息和设置中所述的应用详细信息和设置下提供该文件的绝对路径。

  2. 测试数据库的服务名称条目,确保其已配置:

    以 Oracle 操作系统用户身份登录并设置 Oracle 环境:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbstd
    
  3. 检查数据库用户账号,确保 Backup and DR 备份可以连接:

    sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
    
  4. Oracle 数据库的应用详细信息和设置中所述的应用详细信息和设置下的“Oracle 服务名称”设置中,提供创建的服务名称 (act_svc_dbstd)

在 RAC 环境中创建并验证 Oracle 服务名称

Oracle 服务名称仅用于数据库身份验证。不需要用于操作系统身份验证。

三节点 RAC 示例:

  • 数据库名称:dbrac

  • 实例 1 名称:dbrac1

  • 实例 2 名称:dbrac2

  • 实例 3 名称:dbrac3,数据库保护是从节点 3(实例名称 dbrac3)设置的:

  1. tnsnames.ora 文件中(位于 $ORACLE_HOME/network/admin$GRID_HOME/network/admin)添加以下条目,以创建服务名称条目:

    act_svc_dbrac3 =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = dbrac3)
    (SERVICE_NAME = dbrac)
    ) ) )
     Where:
     HOST = This can be SCAN IP in a RAC environment or VIP or IP of the node 3 database server.
    SERVICE_NAME = database name
    INSTANCE_NAME = database instance name on node3
    
  2. 测试服务名称:

    以 Oracle 操作系统用户身份登录并设置 Oracle 环境:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbrac3
    
  3. 检查数据库用户账号,确保 Backup and DR 备份可以连接:

    sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
    
  4. 适用于 Oracle 数据库的应用详细信息和设置中所述的应用详细信息和设置下的“Oracle 服务名称”设置中,提供创建的服务名称 (act_svc_dbrac3)。

    如果 tnsnames.ora 文件位于非标准位置,请在Oracle 数据库的应用详细信息和设置中所述的应用详细信息和设置下的 Oracle TNS_Admin 路径设置中提供 tnsnames.ora 文件的绝对路径。

启用数据库块更改跟踪(可选)

数据库更改块跟踪的相关信息请参阅 Oracle 数据库块更改跟踪 (BCT)

如需检查数据库块更改跟踪是否已启用,请执行以下操作:

sqlplus / as sysdba

在 SQL 提示符下:

select * from v$block_change_tracking;

如果未启用数据库块更改跟踪,请从 sqlplus 启用数据库块更改跟踪:

使用 ASM 磁盘组

sqlplus / as sysdba

在 SQL 提示符下:

alter database enable block change tracking using file '+<ASM Disk Group Name>/<database name>/<dbname>.bct';

使用文件系统

sqlplus / as sysdba

在 SQL 提示符下:

alter database enable block change tracking using file '$ORACLE_HOME/dbs/<dbname>.bct';

从 Oracle Data Guard 节点进行保护

您可以从主数据库节点或 Oracle Data Guard 备用节点保护 Oracle 数据库。如果保护是从 Oracle Data Guard 节点设置的,请务必在管理控制台中的“应用详细信息和设置”下设置主节点凭据。

对于数据库身份验证(仅限 Linux)

  • 用户名/密码:数据库用户账号凭据。 为了使此用户账号在具有 sysdba 访问权限的 Data Guard 节点上可用,必须在主节点上使用 sysdba 权限创建此用户(请参阅“创建具有 sysdba 访问权限的备份用户账号”)。 然后,必须将主节点(位于 $ORACLE_HOME/dbs/ 下)中的密码文件复制到 Data Guard 节点。

用于操作系统身份验证

  • 用户名/密码:在操作系统身份验证下,不需要 sysdba 权限。此数据库用户账号需要 connect, alter system 权限。 为了使此用户账号在 Data Guard 节点上可用,必须在主节点上创建此用户。

如果用户没有 sysdba 角色,则需要 grant connect, alter system, select on dba_tablespaces

如需授予这些权限,请在 SQL 提示符下执行以下操作:

    grant connect, alter system, select on dba_tablespaces to act_rman_user;
  • Oracle Data Guard 主节点服务名称:这是在 Data Guard 节点上配置的 tnsnames.ora 文件中的服务名称,用于从备用节点连接到主节点。如果从 Data Guard 备用节点配置备份,则需要 Oracle Data Guard 主节点服务名称才能进行操作系统和数据库身份验证。

如需详细了解所有详细信息和设置,请参阅适用于 Oracle 数据库的应用详细信息和设置

数据库节点 操作系统身份验证 数据库身份验证
主要 无需数据库凭据。 需要数据库凭据。如果未选择任何角色,则使用 sysdba。
待机 即使使用操作系统身份验证,也需要数据库凭据(用于连接到主数据库以切换日志)。 数据库凭据不需要具有 sysdba/sysbackup 角色。 如果使用 sysdba/sysbackup 账号,请在“应用详情和设置”中设置数据库中的用户角色 需要数据库凭据。 数据库凭据必须具有 sysdba 或 sysbackup 角色,并且数据库中的用户角色必须在应用详情和设置中设置为 sysdba 或 sysbackup。 如需设置数据库身份验证,请参阅为 Oracle 服务器启用数据库身份验证

配置 RMAN 备份到其他节点的 RAC 透明故障切换

您计划纳入备份故障切换配置的所有节点上都必须安装并运行 Backup and DR 代理。 保护功能只能从一个节点进行设置。

在“详细信息和设置”>“集群节点”中,指定 Oracle RAC 环境中的故障切换节点选择:

    <Failover choice>:<Node IP>:<Servicename>:<Role>

其中:

  • 故障切换选择:故障切换时节点的顺序。

  • 节点 IP:您希望备份运行的节点的 IP 地址

  • Servicename:为 Backup and DR RMAN 备份创建并在 tnsnames.ora 中指定的服务名称。这可以是为 Backup and DR 备份创建的新专用服务,也可以是相应节点上数据库的 SID 名称(实例名称)。

  • 角色:F,表示它是故障切换节点

在故障切换节点上的 tnsnames.ora 文件($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora)下创建新的服务名称

Oracle 单节点环境中的示例

RAC One Node 由两个节点组成:

172.15.157.200
172.15.157.201

它有一个数据库 OneN,在任何给定时间只能在一个节点上运行。OneN 受 172.15.157.200 的保护,集群节点设置指定为 1:172.15.157.201:OneN:F

如果 OneN 故障转移到 172.15.157.201,Backup and DR 备份会跟随它,并从 172.15.157.201(而不是 200)开始下一个备份作业。如果故障切换发生在备份作业的中间,则该作业会失败,下一个作业会使用故障切换节点来启动新的备份。

Oracle 环境中的示例(非单节点):

  • 2 节点 RAC(dbrac1dbrac2

  • 保护功能已设置为使用 dbrac1 中的数据库名称“dbrac”,并且故障切换将设置为 dbrac2

  • 节点 2 上的服务名称:act_svc_dbrac2

  • 节点 2 IP 或扫描 IP:172.1.1.0

act_svc_node2 =

  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.0)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (INSTANCE_NAME = dbrac2)
  (SERVICE_NAME = dbrac)
  ) )

应用详情和设置下,集群节点条目如下所示:

Failoverchoice:NodeIP:Servicename:Role

1:172.1.1.1:act_svc_node2:F

集群节点条目 F 和 M 的行为

F:故障切换节点,仅在保护节点不执行备份时参与。

M:维护节点,如果验证通过,则替换保护节点以执行备份。

Oracle 归档日志压缩

Backup and DR 归档日志备份支持 Oracle 日志备份集压缩。您选择的压缩类型取决于这些 RMAN 配置设置。请根据您的使用情形选择一个选项。

  • 较低的压缩比对备份吞吐量的影响最小。这些配置最适合 CPU 资源是限制因素的环境。

  • 建议在大多数环境中使用中等压缩。这些格式在压缩比和速度方面实现了良好的平衡。

  • 高压缩比会消耗大量资源,最适合在网络速度较慢的情况下进行备份,因为此时的限制因素是网络速度。

默认设置为“基本”。基本版不需要 Oracle 高级压缩。

如需检查环境中设置的压缩类型,请在 RMAN 提示符下运行 show all 命令:

rman target /

    show all

配置 Oracle 数据库服务,以在多个节点之间实现负载均衡

此过程仅适用于 Oracle ASM 数据库。在此示例中,假设有一个四节点 RAC 环境;节点 3 和 4 将进行负载均衡以用于备份。

请参阅:

在 Oracle RAC 节点之间进行负载均衡需要 Oracle 数据库身份验证。

配置来自多个节点的并行 RMAN 映像复制

在 RAC 环境中,您可以配置备份以从多个节点并行运行。

  1. 在所有节点上安装 Backup and DR 代理。

  2. 使用应用详情和设置,将 ASM 磁盘组映射到节点 3 和节点 4。

  3. 使用 srvctl 创建一个数据库服务,以便从节点 3 和节点 4 运行。

  4. 您可以使用此服务在应用详情和设置中指定。 在“高级设置”下选择频道数量(频道数)。RMAN 在节点 3 和节点 4 之间分配通道。

  5. 设置 Oracle 服务名称和 RAC 成员节点。

配置 Oracle 数据库服务,以在多个节点之间实现负载均衡

  1. 应用详情和设置中配置,RAC 成员节点:node3 的 IP 和 node4 的 IP。

  2. 为维护节点创建数据库服务,以供 Backup and DR 用于备份:

    srvctl add service -d <dbname> -s act_service_<dbname>
    -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname>
    -s act_service_<dbname>
    
  3. 在 tnsnames.ora 文件($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora)下,为在备份节点(本例中为 dbinstance3dbinstance4 节点)上创建的 Oracle 服务名称添加 tns 条目

    act_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = <DATABASE NAME>)
    ) )
    
  4. 测试已创建的服务名称:

    tnsping actservice

  5. 测试服务名称和用户凭据:

    sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
    
  6. 应用详细信息和设置的“Oracle 服务名称”下指定此服务名称。

  7. 在受保护的节点(例如节点 3)上创建专用的归档日志备份服务,以用于备份:

    srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
    srvctl start service -d <dbname> -s act_arc_service_<dbname>
    
  8. tnsnames.ora 文件($ORACLE_HOME/network/admin/tnsnames.ora$GRID_HOME/network/admin/tnsnames.ora)下添加为创建的归档日志备份服务名称的 tns 条目

    act_arc_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = <node 3 instance>)
    (SERVICE_NAME = act_arc_service_<dbname>)
    ) )
    
  9. 测试服务名称:

    tnsping act_arch服务

  10. 应用详细信息和设置归档日志备份服务名称下指定此服务名称。

修补 Oracle 12c

如果您的 Oracle 12c 安装不包含此补丁(可从 Oracle 支持门户下载),则备份和灾难恢复应用感知装载可能会失败:

Oracle 数据库 12c Bug# 19404068(针对创建的控制文件运行 RECOVER DATABASE 时出现 ORA-1610)

  • (补丁 19404068) Linux x86-64,适用于 Oracle 12.1.0.2.0

如需查看补丁是否已安装,请运行以下命令:

    $cd $ORACLE_HOME/OPatch
    $./opatch lsinventory -details
    $./opatch lsinventory -details | grep 19404068

后续步骤

在添加 Oracle 主机之前,请继续执行以下操作:

  1. (可选)将 Oracle Direct NFS 与 Backup and DR 搭配使用
  2. Oracle 补丁和已知问题

Oracle DBA 指南