在开始之前,建议您先查看 适用于 Oracle 的备份和灾难恢复服务。
您必须先将 Oracle 服务器添加为备份和灾难恢复服务的主机,然后才能备份 Oracle 数据库。为此,请务必参阅备份 Oracle 数据库的前提条件,然后按照以下准备步骤操作。
在 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> (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 磁盘组上的备份和灾难恢复暂存磁盘
ASM diskstring 参数必须设置且不为 null。以 ASM OS 用户身份登录数据库服务器,然后设置 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,请先获取现有 ASM 磁盘的正确 ASM 磁盘字符串值,然后再继续执行备份和灾难恢复保护。Backup and DR 备份会为其备份暂存磁盘添加磁盘字符串路径 (/dev/Backup and DR/asm/*
),以映射到 ASM。
文件系统上的备份和灾难恢复暂存磁盘
如果您要将 Oracle ASM 数据库保护到文件系统,则必须在应用详细信息和设置下将将 ASM 转换为文件系统设置为是。请参阅 Oracle 数据库的应用详细信息和设置。
准备 Oracle 数据库身份验证
只有在您计划使用数据库身份验证时,才需要执行以下额外的准备步骤。如需了解 Oracle 数据库身份验证,请参阅使用数据库身份验证进行备份和灾难恢复。
按照在 Linux 环境中准备 Oracle 数据库中的步骤操作。
创建一个数据库用户账号(如果未提供)以用于备份和灾难恢复备份:
create user act_rman_user identified by <password>;
通过在所有节点上登录
sqlplus
并运行以下命令,向sysdba
授予对所有 RAC 节点的访问权限:grant create session, resource, sysdba to act_rman_user;
对于 Oracle 12c,此角色可以是
sysbackup
,而不是of sysdba
,并且数据库用户名以 # 开头。验证是否已在 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
根据您的环境类型,按照以下说明测试服务名称:
在非 RAC 环境中创建并验证 Oracle 服务名称
Oracle 服务名称仅用于数据库身份验证。无需进行操作系统身份验证。
示例:dbstd
(数据库名称)和 dbstd
(实例名称)
如果 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 数据库的应用详细信息和设置中所述测试数据库的服务名称条目,确保其已配置:
以 Oracle OS 用户身份登录并设置 Oracle 环境:
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbstd
检查数据库用户账号,确保备份和灾难恢复备份可以连接:
sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
在应用详细信息和设置下的“Oracle 服务名称”设置下,提供创建的服务名称 (act_svc_dbstd),如Oracle 数据库的应用详细信息和设置中所述
在 RAC 环境中创建并验证 Oracle 服务名称
Oracle 服务名称仅用于数据库身份验证。无需进行操作系统身份验证。
三节点 RAC 示例:
数据库名称:
dbrac
Instance1 名称:
dbrac1
Instance2 名称:
dbrac2
Instance3 名称:
dbrac3
,数据库保护设置来自 Node3(实例名称dbrac3
):
在位于
$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
测试服务名称:
以 Oracle OS 用户身份登录并设置 Oracle 环境:
TNS_ADMIN=(tnsnames.ora file location) tnsping act_svc_dbrac3
检查数据库用户账号,确保备份和灾难恢复备份可以连接:
sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
在 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)
用户名/密码:数据库用户账号凭据。 为了让此用户账号在 Data Guard 节点上可用并拥有 sysdba 访问权限,必须在主节点上使用 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 备份透明故障切换到其他节点
您计划纳入备份故障切换配置的所有节点上都必须安装并运行备份和灾难恢复代理。保护功能只能从一个节点设置。
在“详细信息和设置”的“集群节点”中,指定 Oracle RAC 环境中的故障切换节点选项:
<Failover choice>:<Node IP>:<Servicename>:<Role>
其中:
故障切换选项:故障切换的节点顺序。
节点 IP:您希望在其中运行备份的节点的 IP 地址
Servicename:为 Backup and DR RMAN 备份在 tnsnames.ora 中创建并指定的服务的名称。这可以是专门为备份和灾难恢复备份创建的新服务,也可以是该节点上数据库的 SID 名称(实例名称)。
角色:F,表示它是故障切换节点
如需在故障切换节点上的 tnsnames.ora 文件 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora) 下创建新的服务名称,请执行以下操作:
Oracle One 节点环境中的示例
RAC One 节点由两个节点组成:
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,备份和灾难恢复备份会跟随它,并从 172.15.157.201(而非 200)开始下一个备份作业。如果备份作业中途发生故障切换,则该作业会失败,下一个作业会使用故障切换节点启动新的备份。
Oracle 环境(而非单个节点)中的示例:
2 个节点 RAC (
dbrac1
,dbrac2
)保护设置使用
dbrac1
中的数据库名称“dbrac”,故障切换设置为dbrac2
节点 2 上的服务名称:
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)
) )
在应用详情和设置下,集群节点条目如下所示:
Failoverchoice:NodeIP:Servicename:Role
1:172.1.1.1:act_svc_node2:F
集群节点条目 F 和 M 的行为
F:故障切换节点,仅在保护节点无法执行备份时参与。
M:维护节点,如果经过验证能够执行备份,则会替换保护节点。
Oracle 归档日志压缩
备份和灾难恢复归档日志备份支持 Oracle 日志备份集压缩。您选择的压缩类型取决于这些 RMAN 配置设置。根据您的应用场景选择一个选项。
压缩比越低,对备份吞吐量的影响就越小。这些最适合 CPU 资源是限制因素的环境。
建议在大多数环境中使用中等压缩。这些算法可提供良好的压缩比和速度组合。
高压缩率会占用大量资源,最适合在网络速度较慢且网络速度是限制因素的情况下进行备份。
默认设置为“基本”。基本级别不需要 Oracle 高级压缩。
如需检查环境中设置的压缩类型,请从 RMAN 提示符运行 show all
命令:
rman target /
show all
配置 Oracle 数据库服务以在多个节点之间进行负载均衡
此过程仅适用于 Oracle ASM 数据库。在本示例中,假设有一个四节点 RAC 环境;节点 3 和 4 将进行负载均衡以供备用。
请参阅:
在 Oracle RAC 节点之间进行负载均衡需要进行 Oracle 数据库身份验证。
配置从多个节点进行并行 RMAN 映像复制
在 RAC 环境中,您可以将备份配置为从多个节点并行运行。
在所有节点上安装备份和灾难恢复代理。
使用“应用详情和设置”部分,将 ASM 磁盘组映射到节点 3 和节点 4。
使用 srvctl 创建一个数据库服务,以便从节点 3 和节点 4 运行。
您可以在应用详情和设置下使用此服务进行指定。在“高级设置”下,选择“频道数量”。RMAN 会在节点 3 和节点 4 之间分配通道。
设置 Oracle 服务名称和 RAC 成员节点。
配置 Oracle 数据库服务以在多个节点之间进行负载均衡
在应用详情和设置中,配置 RAC 成员节点:node3 的 IP 地址和 node4 的 IP 地址。
为维护节点创建数据库服务,以供备份和灾难恢复服务进行备份:
srvctl add service -d <dbname> -s act_service_<dbname> -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname> -s act_service_<dbname>
在备用节点(本例中的
dbinstance3
和dbinstance4
节点)上创建的 Oracle 服务名称的 tns 条目,位于 tnsnames.ora 文件 ($ORACLE_HOME/network/admin/tnsnames.ora 或 $GRID_HOME/network/admin/tnsnames.ora) 下act_service_<dbname> = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <DATABASE NAME>) ) )
测试创建的 servicename:
tnsping actservice
测试 servicename 和用户凭据:
sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
在 Application Details & Settings(应用详细信息和设置)下的 Oracle 服务名称下指定此服务名称。
在受保护的节点(例如节点 3)上创建专用的归档日志备份服务,以用于备份:
srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3> srvctl start service -d <dbname> -s act_arc_service_<dbname>
为在
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>) ) )
测试服务名称:
tnsping act_archservice
在应用详细信息和设置归档日志备份服务名称下指定此服务名称。
修补 Oracle 12c
如果您的 Oracle 12c 安装不包含此补丁(可从 Oracle 支持门户下载),备份和灾难恢复应用感知挂载操作可能会失败:
Oracle 数据库 12c bug# 19404068(针对已创建的控制文件恢复数据库时出现 ORA-1610)
- (补丁 19404068)适用于 Oracle 12.1.0.2.0 的 Linux x86-64
如需查看是否已安装补丁,请运行以下命令:
$cd $ORACLE_HOME/OPatch
$./opatch lsinventory -details
$./opatch lsinventory -details | grep 19404068
后续步骤
在添加 Oracle 主机之前,请继续执行以下操作: