在备份/恢复设备上为 Backup and DR 准备 Oracle 数据库

在开始之前,最好先查看适用于 Oracle 的 Backup and DR。

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

Oracle 数据库的准备过程
步骤 准备流程
1 在 Linux 环境中准备 Oracle 数据库或
在 Windows 环境中准备 Oracle 数据库
2 准备备份 ASM 磁盘组上包含数据文件的 Oracle 数据库
3 准备 Oracle 数据库身份验证
启用数据库块更改跟踪(可选)
从 Oracle Data Guard 节点进行保护
配置 RMAN 备份到其他节点的 RAC 透明故障切换
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 OS 用户身份登录数据库服务器,并设置数据库环境变量:
export ORACLE_HOME=<oracle home path>
# Get this from /etc/oratab
export ORACLE_SID=<database instance name>
export PATH=$ORACLE_HOME/bin:$PATH
 Login to sqlplus:
sqlplus / as sysdba
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
 Note: If archive log mode is not enabled then get archive mode enabled
 before proceeding.
  • 数据库应使用 spfile。验证数据库是否正在使用 spfile 运行:
sqlplus / as sysdba
show parameter spfile
NAME      TYPE   VALUE
------------------ ----------- ------------
spfile      string  +DATA/ctdb/spfilectdb.ora
 Note: If the value is `null_` then
 get the spfile set. Backup and DR supports backing up using pfile as well.
 pfile should be available in default location. For example, a
 Linux `pfile` should be located under `$ORACLE_HOME/dbs`.
  • 对于 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';
 This example shows the configuration set to the local file system.

 In a RAC environment, this must be set to shared ASM Disk Group. To put it
 on the ASM Disk Group, use:

```bash
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+(disk group name)/snap_(database 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)
export PATH=$ORACLE_HOME/bin:$PATH

连接到 sqlplus:

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

如果值的结果为 null,请先获取现有 ASM 磁盘的正确 ASM 磁盘字符串值,然后再继续进行 Backup and DR 保护。Backup and DR 备份会添加其备份暂存磁盘的磁盘字符串路径 (/dev/Backup and DR/asm/*),以映射到 ASM。

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

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

准备 Oracle 数据库身份验证

仅当您计划使用数据库身份验证时,才需要执行以下额外的准备步骤。使用数据库身份验证的 Backup and DR中介绍了 Oracle 数据库身份验证。

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

  2. 创建用于 Backup and DR 备份的数据库用户账号(如果未提供):

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

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

  1. 验证是否已向 RAC 环境中的所有节点授予 sysdba 角色:
sqlplus / as sysasm
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
  1. 根据您的环境类型,按照以下说明测试服务名称:

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

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

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

  1. 如果 Oracle 服务名称未列出,请在位于 $ORACLE_HOME/network/admin 或 $GRID_HOME/network/admin 的 tnsnames.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 数据库的应用详细信息和设置中所述

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

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

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbstd
  1. 检查数据库用户账号,确保 Backup and DR 可以连接:
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
  1. 在应用详细信息和设置下的“Oracle 服务名称”设置下,提供创建的服务名称 (act_svc_dbstd),如 Oracle 数据库的应用详细信息和设置中所述

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

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

三节点 RAC 示例:

  • 数据库名称:dbrac

  • 实例 1 名称:dbrac1

  • Instance2 名称:dbrac2

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

  1. 在 $ORACLE_HOME/network/admin 或 $GRID_HOME/network/admin 的 tnsnames.ora 文件中添加以下条目,以创建服务名称条目:
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
  1. 测试 servicename:

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

TNS_ADMIN=(tnsnames.ora file location)
tnsping act_svc_dbrac3
  1. 检查数据库用户账号,确保 Backup and DR 备份可以连接:
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
  1. 在为 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:在 tnsnames.ora 中为 Backup and DR RMAN 备份创建和指定的服务名称。这可以是为 Backup and DR 备份创建的新专用服务,也可以是该节点上数据库的 SID 名称(实例名称)。

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

如需在故障切换节点上的 tnsnames.ora 文件($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora)下创建新的服务名称,请执行以下操作:

Oracle One Node 环境中的示例

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(dbrac1、dbrac2)

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

  • node2 上的服务名称:act_svc_dbrac2

  • Node2 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)
      ) )

在应用详细信息和设置下,集群节点条目如下:

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. 使用“应用详细信息和设置”设置到节点 3 和节点 4 的 ASM 磁盘组映射。

  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>
  1. 在 tnsnames.ora 文件($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora)中,为在备份节点(此示例中为 dbinstance3 和 dbinstance4 节点)上创建的 Oracle 服务名称添加 tns 条目
act_service_<dbname> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <DATABASE NAME>)
) )
  1. 测试创建的 servicename:
tnsping act_service_<dbname>
  1. 测试服务名称和用户凭据:
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
  1. 在应用详细信息和设置 Oracle 服务名称下指定此服务名称。

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

srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
srvctl start service -d <dbname> -s act_arc_service_<dbname>
  1. 为在 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>)
) )
  1. 测试服务名称:
tnsping act_arch_service_<dbname>
  1. 在应用详细信息和设置归档日志备份服务名称下指定此服务名称。

修补 Oracle 12c

如果您的 Oracle 12c 安装不包含此补丁,则 Backup and DR Application Awareness 装载可能会失败,您可以从 Oracle 支持门户下载该补丁:

Oracle Database 12c Bug# 19404068 (ORA-1610 ON RECOVER DATABASE FOR CREATED CONTROLFILE)

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

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

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

后续步骤

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

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

Oracle DBA 指南