了解为灾难恢复配置备用数据库
Oracle Data Guard 可确保驻留在 Oracle Database 中的企业数据的高可用性,数据保护和灾难恢复。Oracle Data Guard 提供一组全面的服务,这些服务用于创建、维护、管理和监视一个或多个备用数据库,以使生产 Oracle 数据库在发生灾难和数据损坏后能够生存。
Oracle Data Guard 将这些备用数据库作为生产数据库的副本进行维护。如果生产数据库因计划内或计划外停机而变得不可用,则 Oracle Data Guard 可以将任何备用数据库切换到生产角色,从而最大程度地减少与停机关联的停机时间。
体系结构
此体系结构显示具有将重做数据传输到备用数据库的主数据库的 Oracle Data Guard 配置。备用数据库位于灾难恢复和备份操作的主数据库的远程位置。
插图 dataguard-dr-db.png 的说明
Oracle Data Guard 使用重做传输服务和应用服务来管理重做数据的传输、重做数据的应用以及数据库角色的更改。
此体系结构支持以下 Oracle Data Guard 组件:
- 重做传输服务
重做传输服务控制将重做数据从生产数据库自动传输到一个或多个归档目标。
重做传输服务执行以下任务:
- 将重做数据从主系统传输到配置中的备用系统。
- 管理因网络故障而解决归档重做日志文件中的任何差距的过程。
- 自动检测备用系统上缺少的或损坏的归档重做日志文件,并自动从主数据库或其他备用数据库检索替换的归档重做日志文件。
- 应用服务
应用服务会自动在备用数据库上应用重做数据,以便与主数据库保持一致。
重做数据从主数据库传输,并写入备用数据库上的备用重做日志。重做数据直接从备用重做日志文件应用,因为它们是使用实时应用填充的。应用服务还允许对数据进行只读访问。
- 角色转换使用 Oracle Data Guard,您可以使用切换或故障转移操作将数据库角色从备用数据库更改为主数据库,或者从主数据库更改为备用数据库。Oracle Data Guard 简化角色转换并自动执行故障转移。
- 切换是主数据库与其备用数据库之一之间的角色转换。切换可确保不会丢失数据。此操作通常用于主系统的计划内维护。在切换期间,主数据库转换为备用数据库角色,备用数据库转换为主数据库角色。
- 故障转移是指主数据库不可用的情况。仅当主数据库发生故障时才执行故障转移,并且故障转移会导致备用数据库转换为主数据库角色。数据库管理员可以配置 Oracle Data Guard 以确保不会丢失数据。
配置 Oracle Data Guard 时涉及多个手动步骤,包括但不限于以下步骤:
- 使用建议的参数准备主数据库
- 在主和备用环境中准备 TNS 别名
- 将物理备用数据库创建为主数据库的复制
- 配置 Data Guard
这些手动步骤在多个 Oracle 文档中得到了广泛介绍。本手册提供了一组脚本,您可以使用自动执行其中的大多数操作。这些脚本通过为现有主数据库设置备用数据库来帮助配置 Oracle Data Guard。这些脚本使用 restore from service
Oracle Recovery Manager (RMAN) 功能和 Oracle Data Guard 中介。
准备
使用本文档中提供的脚本配置 Oracle Data Guard 之前,请查看以下假设和要求:
-
主数据库已存在。
-
具有或没有现有数据库的备用节点已存在。
注意:
如果备用位置已有数据库,则脚本将在重新创建备用数据库之前将其删除。 -
使用数据库的监听程序端口,主数据库与备用数据库之间存在互连。
- 对于单实例数据库,主数据库主机与备用数据库监听程序的 IP 和端口之间必须存在双向连接。
- 对于 Oracle Real Application Clusters (Oracle RAC) 数据库,主数据库主机与备用数据库的扫描和 VIP IP 和端口之间必须存在双向连接。
脚本执行连接检查,但您可以使用命令
nc -vw 5 -z IP PORT
验证远程连接。 -
Oracle Automatic Storage Management (Oracle ASM) 用于数据文件、控制文件、联机重做日志和归档重做日志。
- 对于单实例数据库,密码文件和
spfile
可以位于常规文件系统或 Oracle ASM 中。 - 对于 Oracle RAC 数据库,密码文件和
spfile
必须位于 Oracle ASM 中。
- 对于单实例数据库,密码文件和
- 主数据库和备用数据库由 Oracle Clusterware 管理(必须安装 Oracle Grid Infrastructure,因为单个拓扑和 Oracle RAC 拓扑都使用
srvctl
)。 - 由于使用了 Oracle Managed Files,因此必须在主数据库中使用相应的 Oracle ASM 磁盘组位置(例如
+DATA
或+RECO
)定义数据库参数db_create_file_dest
、db_create_online_log_dest_1
和db_recovery_file_dest
。 - 关系数据库管理系统 (RDBMS) 软件所有者(例如
oracle
用户)在其配置文件中设置所需的 Oracle 环境变量(ORACLE_HOME、LD_LIBRARY_PATH、PATH、ORACLE_UNQNAME 和 ORACLE_SID)。 - 假设使用的是对称拓扑(即,如果主数据库是单数据库,则备用数据库是单数据库;如果主数据库是 Oracle RAC 数据库,则备用数据库也是 Oracle RAC 数据库)。
- 如果数据库是 Oracle RAC,则假定每个 Oracle RAC 具有 2 个节点。
- 这些脚本适用于为尚未具有备用数据库的主数据库配置备用数据库。
- 这些脚本还可用于向现有 Oracle Data Guard 添加新的其他备用数据库。对于此方案,必须在属性文件中使用属性
ADDITIONAL_STANDBY=YES
。在这种情况下,新备用数据库将添加到现有 Data Guard 中介配置中。
关于脚本功能
以下是脚本的功能:
- 脚本是偶然的:在出现错误时可以重新执行。
- 操作系统用户名(例如
oracle
和grid
)以及文件夹(Database home
和Grid home
)是可配置的。 - Oracle 和 Grid OS 用户可以是相同的用户或不同的用户。
- 数据库文件的透明数据加密 (Transparent Data Encryption,TDE)是可选的:脚本对两种情况都有效(TDE 和无 TDE)。
注意:
将执行对称配置:如果主数据库使用 TDE,则备用数据库将配置为 TDE;如果主数据库不使用 TDE,则备用数据库将不使用 TDE。 - 支持只读 Oracle 主目录 (ROOH)。这些脚本准备在具有 ROOH 和 “传统”Oracle 主目录的环境中自动工作。
- 脚本对 Oracle RAC 和单实例环境都有效(在对称拓扑中)。
- 脚本以 12c(12.2)、18c、19c 和 21c RDBMS 版本进行验证。
- 在 Oracle Cloud Infrastructure(数据库系统)和内部部署环境中验证脚本。
- 已验证脚本以配置混合 Oracle Data Guard,其中主数据库为内部部署数据库,备用数据库为 Oracle Cloud Infrastructure 中的数据库系统。
关于脚本文件
以下是此解决方案中使用的脚本文件的说明:
- 1_prepare_primary_maa_parameters.sh
连接到主数据库并使用 Oracle Data Guard 的建议 Oracle Maximum Availability Architecture (MAA) 参数进行配置。它创建备用重做日志文件,设置
DB_BLOCK_CHECKSUM
、DB_FLASHBACK_RETENTION_TARGET
等的值。此脚本仅执行一次,无论主数据库是 Oracle Real Application Clusters (Oracle RAC) 还是单个实例数据库。 - 2_dataguardit_primary.sh
为 Oracle Data Guard 准备主主机。它将所需的 TNS 别名添加到
tnsnames.ora
文件,检查与远程备用数据库的连接,如果尚未设置网络加密,则配置网络加密,并生成包含主密码文件和 Transparent Data Encryption (TDE) wallet(如果使用)的输出 tar 文件。 - create_pw_tar_from_asm_root.sh
此脚本并非始终是必需的。仅当主密码文件存储在 Oracle Automatic Storage Management (Oracle ASM) 中时才需要该文件。它使用口令文件创建输出 tar 文件。
- 3_dataguardit_standby_root.sh
准备新的备用主机并使用
restore from service
Oracle Recovery Manager (RMAN) 功能和 Oracle Data Guard 中介创建备用数据库。如果这些主机中存在现有数据库(工作数据库或由于以前的脚本执行尝试失败),则脚本将在将新数据库重新创建为备用数据库之前将其删除。 - DG_properties.ini
这是必须使用环境的特定值定制的属性文件。它由主数据库和备用数据库中的所有脚本使用。
关于必需产品和角色
对于主数据库系统和备用数据库系统,此解决方案需要以下角色:
产品名称:角色 | 要求 ... |
---|---|
Oracle Database:sys |
运行所有脚本 |
Oracle Database 主机(主):具有执行权限的 oracle OS 用户
|
运行以下脚本:
|
Oracle Database 主机(主要):root |
在 ASM 中存储主口令文件时运行以下脚本:create_pw_tar_from_asm_root.sh |
Oracle Database 主机(辅助主机):root |
运行以下脚本:
|
要满足您的需求,请参阅 Oracle 产品、解决方案和服务。