【IT168 技术】Oracle Data Guard 是作为企业版的一个完全集成的功能提供的,是一款完全免费的数据库。目前有很多的企业都在使用这款免费的数据库,还有很多企业有实用的欲望。那么我们就来深入讲解Oracle Data Guard 作为一款免费的企业数据库是如何使用的。
什么是 Oracle Data Guard ?
Oracle Data Guard 是管理、监控和自动化软件的基础架构,它创建、维护和监控一个或多个备用数据库,以保护企业数据结构不受故障、灾难、错误和崩溃的影响。
Data Guard 使备用数据库保持为与生产数据库在事务上一致的副本。这些备用数据库可能位于距生产数据中心数千英里的远程灾难恢复站点,或者可能位于同一城市、同一校园乃至同一建筑物内。当生产数据库由于计划中断或意外中断而变得不可用时,Data Guard 可以将任意备用数据库切换到生产角色,从而使与中断相关的停机时间减到最少,并防止任何数据丢失。
作为 Oracle 数据库企业版的一个特性推出的 Data Guard 能够与其他的 Oracle 高可用性 (HA) 解决方案(如真正应用集群 (RAC) 和恢复管理器 (RMAN))结合使用,以提供业内前所未有的高水平数据保护和数据可用性。
Oracle Data Guard 功能
Oracle Data Guard 包括一个生产数据库,也称为主数据库,以及一个或多个备用数据库,这些备用数据库是与主数据库在事务上一致的副本。Data Guard 利用重做数据保持这种事务一致性。当主数据库中发生事务时,则生成重做数据并将其写入本地重做日志文件中。通过 Data Guard,还将重做数据传输到备用站点上,并应用到备用数据库中,从而使备用数据库与主数据库保持同步。Data Guard 允许管理员选择将重做数据同步还是异步地发送到备用站点上。
备用数据库的底层技术是 Data Guard 重做应用(物理备用数据库)和 Data Guard SQL 应用(逻辑备用数据库)。物理备用数据库在磁盘上拥有和主数据库逐块相同的数据库结构,并且使用 Oracle 介质恢复进行更新。逻辑备用数据库是一个独立数据库,它与主数据库包含相同的数据。它使用 SQL 语句进行更新,其相对优势是能够并行用于恢复以及诸如报表、查询等其他任务。
Data Guard 简化了主数据库和选定的备用数据库之间的转换和故障切换,从而减少了由计划停机和计划外故障所导致的总停机时间。
主数据库和备用数据库以及它们的各种交互可以使用 SQL*Plus 来进行管理。为了获得更简便的可管理性,Data Guard 还提供了一个分布式管理框架(称为 Data Guard Broker),它不但自动化了 Data Guard 配置的创建、维护和监控,并对这些操作进行统一管理。管理员可以使用 Oracle Enterprise Manager 或 Broker 自己的专用命令行界面 (DGMGRL) 来利用 Broker 的管理功能。
Oracle Data Guard 的好处
灾难恢复和高可用性 — Data Guard 提供了一个高效和全面的灾难恢复和高可用性解决方案。易于管理的转换和故障切换功能允许主数据库和备用数据库之间的角色转换,从而使主数据库因计划的和计划外的中断所导致的停机时间减到最少。
完善的数据保护 — 使用备用数据库,Data Guard 可保证即使遇到不可预见的灾难也不会丢失数据。备用数据库提供了防止数据损坏和用户错误的安全保护。主数据库上的存储器级物理损坏不会传播到备用数据库上。同样,导致主数据库永久损坏的逻辑损坏或用户错误也能够得到解决。最后,在将重做数据应用到备用数据库时会对其进行验证。
有效利用系统资源 — 备用数据库表使用从主数据库接收到的重做数据进行更新,并且可用于诸如备份操作、报表、合计和查询等其他任务,从而减少执行这些任务所必需的主数据库工作负载,节省宝贵的 CPU 和 I/O 周期。使用逻辑备用数据库,用户可以在模式中不从主数据库进行更新的表上执行数据处理操作。逻辑备用数据库可以在从主数据库中对表进行更新时保持打开,并可同时对表进行只读访问。最后,可以在维护的表上创建额外索引和物化视图,以获得更好的查询性能和适应特定的业务要求。
灵活的数据保护功能,从而在可用性与性能要求之间取得平衡 — Oracle Data Guard 提供了最大保护、最高可用性和最高性能等模式,来帮助企业在系统性能要求和数据保护之间取得平衡。
自动间隔检测及其解决方案 — 如果主数据库与一个或更多个备用数据库之间的连接丢失(例如,由于网络问题),则在主数据库上生成的重做数据将无法发送到那些备用数据库上。一旦重新建立连接,Data Guard 就自动检测丢失的存档日志序列(或间隔),并将必要的存档日志自动传输到备用数据库中。备用数据库将重新与主数据库同步,而无需管理员的任何手动干预。
简单的集中式管理 — Data Guard Broker 使一个 Data Guard 配置中的多个数据库间的管理和操作任务自动化。Broker 还监控单个 Data Guard 配置内的所有系统。管理员可以使用 Oracle Enterprise Manager 或 Broker 自己专用的命令行界面 (DGMGRL) 来利用这个集成的管理框架。
与 Oracle Data Guard 数据库集成 — Oracle Data Guard 是作为 Oracle 数据库(企业版)的一个完全集成的功能提供的,无需任何额外费用。
ORACLE DATA GUARD 进程结构
如下图所示,Oracle Data Guard 使用 Oracle 数据库例程的几个进程来实现灾难恢复和高可用性所必需的自动化。
在主数据库上,Oracle Data Guard 使用日志写入器进程 (LGWR) 或归档器进程 (ARCH) 收集事务重做数据,并将其传输到备用数据库中;使用获取存档日志进程 (FAL) 提供一个客户服务器机制,用于在主数据库和备用数据库之间出现通信中断之后将存档日志发送到备用数据库中,以实现自动填充间隔和重新同步
在备用数据库上,Oracle Data Guard 使用远程文件服务器 (RFS) 进程从主数据库接收重做记录;使用管理恢复进程 (MRP) 将重做信息应用到物理备用数据库中;使用逻辑备用进程 (LSP) 将经过 SQL 转换的重做信息应用到逻辑备用数据库中。
如果启用了 Data Guard Broker,Oracle Data Guard 还使用 Data Guard Broker Monitor (DMON) 进程将主数据库和备用数据库作为一个统一的配置进行管理和监控
主要技术组件
Data Guard 配置
一个 Data Guard 配置包括一个主数据库和最多九个备用数据库。主数据库和备用数据库可以运行在单个节点上或一个真正应用集群 (RAC) 环境中。备用数据库使用 Oracle 网络服务通过基于 TCP/IP 的标准网络(如局域网 (LAN)、城域网 (MAN)、广域网 (WAN))连接到主数据库。对数据库所处位置没有限制,只要它们能互相通信就行。不过,对于灾难恢复,建议将备用数据库装载在地理上与主站点隔开的站点上。
Oracle Data Guard要求主系统和备用系统上的操作系统结构相同。因此,如果主数据库是在 Intel 结构上运行 Linux 操作系统,则其所有备用数据库也必须在 Intel 结构上运行 Linux 操作系统 — 例如,它们不能是 Windows 系统。此外,必须在一个 Data Guard 配置中的主数据库和所有备用数据库上安装相同版本的 Oracle Data Guard 数据库企业版。
重做应用和 SQL 应用
备用数据库最初是从主数据库的一个备份副本创建的。一旦创建了备用数据库,Data Guard 自动将主数据库重做数据传输给备用系统,然后将重做数据应用到备用数据库中,从而使备用数据库保持为与主数据库在事务上一致的副本。
Data Guard 提供了两种方法将这些重做数据应用到备用数据库中,并使之与主数据库在事务上保持一致。这些方法与 Oracle Data Guard支持的两种类型的备用数据库对应:
重做应用,用于物理备用数据库
SQL 应用,用于逻辑备用数据库
请注意,如图 2 所示,就从主数据库进行的数据传输而言,这两种类型的备用数据库之间没有差别。一旦重做数据到达备用服务器,这两种类型的备用数据库在将重做数据应用到备用数据库的方式上就存在差异了。
物理备用数据库 — 重做应用
通过使用 Oracle Data Guard介质恢复应用从主数据库接收到的重做数据,物理备用数据库与主数据库保持同步。它在物理上与主数据库逐块相同,因而数据库模式(包括索引)是相同的。
重做应用如何工作
主数据库上的一个日志切换将触发备用数据库上的一个日志切换,从而使备用数据库上的归档器进程将当前的备用重做日志文件归档到备用数据库上的一个存档日志中。随后,Data Guard 重做应用使用一个专用进程(称为管理的恢复进程 (MRP))读取存档日志,并将重做数据应用到物理备用数据库中。如果启用了 Oracle Database 10g 中的 Oracle Data Guard 的新功能—实时应用,则 MRP 将在 RFS 进程写满当前的备用重做日志文件时直接从其中读取重做数据。
通过加载物理备用数据库并使用以下命令,可以在该数据库上启动 MRP(从而应用重做数据):
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
介质恢复进程可以并行运行,以获得 Oracle Data Guard 重做应用的非常好的性能。在 Oracle Data Guard 10g 之前的版本中,这需要在上述 RECOVER MANAGED STANDBY DATABASE 命令中使用 PARALLEL 子句。在 Oracle Data Guard 10g 中,MRP 可以在启动(无需 PARALLEL 子句)时自动确定并行恢复进程的非常好的数量,这个数字视备用服务器上可用的 CPU 数量而定。
物理备用数据库可以以只读方式打开,并且可以在其打开时对其运行查询,但无法在其以只读方式打开的同时运行恢复。在备用数据库以只读方式打开时,传送给它的重做数据将在备用站点上累积而不应用。不过,可以随时在物理备用数据库上恢复操作,并自动应用累积的重做数据。这允许物理备用数据库以一个序列运行,这个序列可能包括在恢复中运行一段时间,然后以只读方式打开来运行报表,接着重新运行恢复来应用尚未应用的重做数据。
要以只读方式打开物理备用数据库,则需使用以下命令在备用数据库上取消恢复:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
然后可以只读方式打开数据库:
ALTER DATABASE OPEN;
物理备用数据库提供了以下好处:
灾难恢复和高可用性
物理备用数据库实现了一个健全而高效的灾难恢复和高可用性解决方案。易于管理的转换和故障切换功能允许主数据库和物理备用数据库之间的简单角色转换,从而使主数据库因计划的和计划外的中断所导致的停机时间减到最少。
数据保护
使用物理备用数据库,Oracle Data Guard 可确保即使在遇到不可预见的灾难时也不会丢失数据。物理备用数据库支持主数据库支持的所有数据类型以及 DDL 和 DML 操作。它还提供了防止数据损坏和用户错误的安全保护。主数据库上的存储器级物理损坏不会传播到备用数据库上。同样,导致主数据库永久损坏的逻辑损坏或用户错误也能够得到解决。最后,在将重做数据应用到备用数据库时对其进行验证。
减少主数据库的工作负载 — 可以以只读方式打开物理备用数据库,来生成报表和进行查询。此外,利用恢复管理器 (RMAN),可以利用物理备用数据库来为生产数据库创建备份,从而从生产系统中节省宝贵的 CPU 周期和 I/O 周期。RMAN 可以在物理备用数据库执行恢复时或以只读方式打开时执行这种备份操作。
性能
物理备用数据库所用的重做应用技术使用低级恢复机制来应用更改,这种机制绕过了所有 SQL 级代码层,因此是最有效的应用更改机制。这使得重做应用技术成为一种在数据库之间传播更改的极其有效的机制。
Oracle Data Guard 在逻辑备用数据库 — SQL 应用
尽管数据的物理组织和结构可能不同,但逻辑备用数据库包含与主数据库相同的逻辑信息。SQL 应用技术将从主数据库接收到的重做数据转换成 SQL 语句,然后在备用数据库上执行 SQL 语句,以使逻辑备用数据库与主数据库保持同步。从而,在将 SQL 应用到逻辑备用数据库上的同时,可以访问逻辑备用数据库来进行查询和报表操作。
由于在Oracle Data Guard 中使用 SQL 语句更新逻辑备用数据库,因此它保持以读写模式打开,而从主数据库中更新的表可以同时用于诸如报表、合计、查询等其他任务如。.还可通过在维护的表上创建额外的索引和物化视图来优化这些任务。逻辑备用数据库可以承载多个数据库模式,用户可以对这些模式中不从主数据库进行更新的表上执行普通的数据处理操作。