当前位置: 代码迷 >> 综合 >> Oracle 19c Concepts(17):Topics for Database Administrators and Developers
  详细解决方案

Oracle 19c Concepts(17):Topics for Database Administrators and Developers

热度:12   发布时间:2024-01-06 06:11:58.0

数据库安全性概述

通常, 数据库安全涉及用户身份验证、 加密、 访问控制、 和监控等。

用户账户

每个 Oracle 数据库都有一个有效数据库用户的列表。

数据库包含几个默认账户,其中包括缺省的管理帐户。您可以根据需要创建用户帐户。您还可以配置应用程序用户来访问Oracle数据库。

若要访问数据库,用户必须提供有效的用户名称和身份验证凭据。 该凭据可能是一个密码、 Kerberos 票证、 或公钥基础结构 (PKI) 证书。您可以配置数据库安全,以在失败登录尝试次数超限时锁定帐户。

一般来说,数据库访问控制包括限制数据访问和数据库活动。例如,可以限制用户查询指定的表或执行指定的数据库语句。

另见:

  • "SYS and SYSTEM Schemas"

  • 《Oracle Database Administrator’s Guide》了解管理用户帐户

  • 《Oracle Database Real Application Security Administrator's and Developer's Guide》了解如何配置应用程序用户

权限

用户权限是指运行特定 SQL 语句的权利。

权限可以分为以下几类:

  • 系统权限

    这是在数据库中执行特定操作或在任何特定类型的对象上执行操作的权限。 例如, CREATE USER 和 CREATE SESSION 是系统权限。

  • 对象权限

    这是在一个对象上执行指定的操作的权限,例如, 查询 employees 表。权限类型是由数据库定义的。

对用户的授权是由其他用户来授予的。管理员应该向用户授予权限,使他们可以完成其工作所需的任务。良好的安全实践包括, 仅将权限授予给需要该权限的用户, 使其能完成必要的工作。

另见:

  • 《Oracle Database Reference》要了解SESSION_PRIVS视图

角色

角色是您授予用户或其他角色的一组命名的相关权限。 角色有助于管理数据库应用程序或用户组的权限。

图 17-1 描述了角色的常见用途。 角色 PAY_CLERK、 MANAGER 和 REC_CLERK 被分配给不同的用户。应用程序角色 ACCTS_PAY 包括执行 ACCTS_PAY 应用程序的权限,该角色被分配给具有 PAY_CLERK 和 MANAGER 角色的用户。应用程序角色 ACCTS_REC 包括执行 ACCTS_REC 应用程序的权限,该角色被分配给具有 REC_CLERK 和 MANAGER 角色的用户。

图 17-1 角色的常见用途


Description of "Figure 17-1 Common Uses for Roles"

另见:

  • 《Oracle Database Security Guide》了解将角色用于安全

  • 《Oracle Database Administrator’s Guide》学习如何管理角色

权限分析

权限分析机制根据指定的条件捕获数据库的权限使用情况。

通过这种方式,您可以捕获运行应用程序模块或执行特定SQL语句所需的特权。例如,您可以找到用户在特定数据库会话期间行使的特权。

在生产数据库中,权限与角色、角色与角色、角色与用户之间的关系可能很复杂。权限分析使您能够识别在复杂系统中不必要授予的权限。根据对捕获结果的分析,您可以删除不必要的授权或重新配置权限授权,以使数据库更加安全。

另见:

《Oracle Database Security Guide》学习权限分析。

用户概要文件

在系统资源相关上下文中,概要文件是一个资源限制和密码参数的命名集合,用于限制某个用户的数据库和实例资源的使用情况。 

概要文件可以限制用户的并发会话数、每个会话可用的 CPU 处理时间和可用的逻辑 I/O 量。例如,clerk 概要文件可能会限制用户对文书工作所需的系统资源。

概要文件为共享一组属性的多个用户提供了一个单一参照点。您可以将一个概要文件分配给一组用户, 而将一个默认概要文件分配给所有其它用户。每个用户在任何一个时间点最多被分配一个概要文件。

另见:

  • "Buffer I/O"

  • 《Oracle Database Security Guide》了解如何使用概要文件来管理资源

  • Oracle Database SQL Language Reference for  CREATE PROFILE syntax and semantics

数据库身份验证

在 Oracle 数据库中,数据库身份验证是用户提供对数据库的验证凭据, 而数据库验证该凭据并决定是否允许访问的过程。

身份验证建立了进行进一步互操作的信任关系。身份验证通过将访问和操作与特定的身份链接, 以达到问责跟踪的能力。

Oracle 数据库提供了以下不同的身份验证方法:

  • 通过数据库进行身份验证

    Oracle 数据库可以使用密码、 Kerberos 票证、 或 PKI 证书对用户进行身份验证。 Oracle 还支持 RADIUS 兼容设备用于其他形式的身份验证,包括生物特征识别等。 身份验证的类型必须在 Oracle 数据库中创建用户时指定。

  • 通过操作系统进行身份验证

    某些操作系统允许 Oracle 数据库使用他们所维护的信息来对用户进行身份验证。在经过操作系统认证后, 用户可以在不指定用户名称或密码的情况下连接到数据库。

非管理数据库用户帐户不能执行数据库操作,例如关闭或启动数据库。这些操作需要 SYSDBA、SYSOPER、SYSBACKUP 或 SYSDG 权限

另见:

  • "Connection with Administrator Privileges"

  • 《Oracle Database Security Guide》了解有关身份验证方法

  • 《Oracle Database Administrator’s Guide》了解有关管理身份验证的知识

加密

Oracle 数据库加密是使用一个安全密钥和加密算法,将数据转换为不可读格式的过程。

加密通常用于满足如那些与支付卡行业数据安全标准 (PCI DSS) 或违反通知法相关的法规遵从性要求。例如, 信用卡号码、 社会安全号码、 或病人的健康信息等必须被加密。

网络加密

当数据通过网络在客户端和服务器之间进行传输时对其进行加密被称为网络加密。

当信息在网络上传输时, 入侵者可以使用网络数据包嗅探器捕获信息,然后将其假脱机到一个文件以便作案。对网络上的数据进行加密能防止这类活动。

透明数据加密

Oracle 高级安全的透明数据加密,可以加密个别表列或表空间。

当用户将数据插入到加密列时,数据库自动加密列数据。当用户选择加密列时,其数据被解密。这种形式的加密是透明的, 提供高的性能,也很容易实现。

透明数据加密包括工业标准的加密算法, 如高级加密标准 (AES) 和内置的密钥管理。

另见:

《Oracle Database Advanced Security Guide》

Oracle Data Redaction

Oracle Data Redaction 是 Oracle Advanced Security 的一部分,它允许屏蔽低特权用户或应用程序查询数据。当用户查询数据时,修订(redaction)会实时发生。

数据修订支持以下修订函数类型:

  • 完整的数据修订

    在这种情况下,数据库编辑表或视图中指定列的全部内容。例如,姓氏的 VARCHAR2 列显示一个空格。

  • 部分数据修订

    在这种情况下,数据库编辑显示输出的部分内容。例如,应用程序可以将以1234结尾的信用卡号表示为xxxx-xxxx-xxxx-1234。您可以使用正则表达式进行全部和部分修订。正则表达式可以根据搜索模式编辑数据。例如,可以使用正则表达式修改特定的电话号码或电子邮件地址。

  • 随机数据修订

    在这种情况下,根据列的数据类型,数据库将数据显示为随机生成的值。例如,数字 1234567 可以显示为 83933895。

数据修订不是一个全面的安全解决方案。例如,它不能阻止直接连接的特权用户对经过编辑的数据执行推理攻击。这种攻击识别经过编辑的列,通过消除过程,通过重复猜测存储值的SQL查询,尝试返回实际数据。为了检测和防止特权用户的推断和其他攻击,Oracle 建议将 Oracle 数据修订与相关的数据库安全产品(如Oracle Audit Vault和数据库防火墙)和Oracle数据库Vault相匹配。

数据修订工作如下:

  • 使用DBMS_REDACT包为指定的表创建修订策略。

  • 在策略中,指定预定义的修订函数。

  • 数据库是否显示列的实际值或修改后的值取决于策略。如果对数据进行了修订,则修订发生在显示给用户之前的顶级选择列表中。

下面的示例添加了一个完整的数据修订策略来修订 hr.employees 表的 employee ID (employee_id)列:

BEGINDBMS_REDACT.ADD_POLICY(
object_schema    => 'hr'
,  object_name      => 'employees'
,  column_name      => 'employee_id'
,  policy_name      => 'mask_emp_ids'
,  function_type    => DBMS_REDACT.FULL
,  expression       => '1=1'
);
END;
/

在前面的示例中,计算结果为 true 的表达式设置,将修订应用于未授予 EXEMPT REDACTION POLICY 特权的用户。

另见:

  • 《Oracle Database Advanced Security Guide》了解数据修订

  • 《Oracle Database PL/SQL Packages and Types Reference》了解DBMS_REDACT

取向Orientation

Oracle数据库提供了许多技术来控制对数据的访问。本节总结了其中的一些技术。

Oracle 数据库保险库

Oracle 数据库保险库用于限制特权用户访问应用程序数据。 

从 Oracle Database 12c 开始,Oracle Database Vault 扩展了标准的数据库审计数据结构。此外,如果迁移到统一审计,则数据库将审计记录写到 Oracle 安全文件中的统一审计跟踪中,该文件集中了 Oracle 数据库的审计记录。

你可以使用 Oracle 数据库保险库来控制在何时、 何处、 以及如何访问数据库、 数据、 和应用程序。 这样,您可以解决常见的安全问题,如防护内部威胁、 遵从法规要求、 和强制执行职责分离。

为了让 Oracle Database Vault 管理员负责,数据库强制审计对 Oracle Database Vault 元数据所做的配置更改。这些更改包括创建、修改和删除任何与 Oracle Database Vault 相关的强制、授予和撤销受保护的角色,以及对组件(如Oracle数据泵和作业调度程序)的授权。

另见:

  • 《Oracle Database Vault Administrator’s Guide》

  • 《Oracle Database Security Guide》了解Oracle Database Vault 审计与Oracle数据库本地审计的集成

虚拟私有数据库 (VPD)

虚拟私有数据库 (VPD) 使您能够执行行级和列级安全性。

安全策略建立了保护数据库遭受意外或恶意的数据破坏或损坏数据库基础结构的方法。

当基于权限和角色的安全保护仍显得过于粗放时,VPD 是很有用的。例如,您可以允许所有用户访问 employees 表,但可以创建安全策略,以限制用户仅能访问同一所在部门中的雇员。

实际上,当在 SQL 语句所涉及的表、视图、或同义词上应用了一个 Oracle VPD 安全策略时, 数据库会将一个动态的 WHERE 子句添加到 SQL 语句。WHERE 子句只允许其凭据通过了安全策略的用户访问受保护的数据。

另见:

《Oracle Database Security Guide》

Oracle 标签安全 (OLS)

Oracle Label Security (OLS) 是一种安全选项,使您能够使用安全标签来指定数据分类和控制访问。您可以为数据或用户分配一个标签。

当标签被分配给数据时,可以作为一个隐藏列附加到现有表,对现有 SQL 提供了透明性。 例如,包含高度敏感数据的行可以被标记为 HIGHLY SENSITIVE, 而较不敏感的行可以标记为 SENSITIVE 等等。当用户尝试访问数据时, OLS 比较数据标签与用户标签,并确定是否可以访问。与 VPD 不同, OLS 提供了一个立即可用的安全策略, 和用于定义、 存储标签的元数据存储库。

如果启用了统一审计,那么数据库将提供一个基于策略的框架来配置和管理审计选项。您可以为不同类型的操作(包括OLS操作)分组审计选项,并将它们保存为审计策略。然后,您可以启用或禁用策略来强制执行基础审计选项。

无论何时创建一个OLS策略,数据库都会将该策略的标签列添加到数据库审计跟踪表中。OLS审计可以将审计记录(包括OLS管理员操作的记录)写入统一审计跟踪。

另见:

  • "Unified Audit Trail"

  • 《Oracle Label Security Administrator's Guide》

数据访问监控

Oracle 数据库提供了多种工具和技术,用于监视用户活动。Auditing is the primary mechanism for monitoring data access.

数据库审计

数据库审计,是对选定用户的数据库操作进行监视和记录。

您可以配置一个统一的审计策略来审计以下内容:

  • SQL 语句、系统权限、模式对象和角色 (作为直接授予它们的一组系统特权)

  • 管理用户和非管理用户

  • 应用程序上下文值

    应用程序上下文是指定名称空间中的一对属性名-值。应用程序在数据库上执行操作之前设置各种上下文。例如,应用程序存储指示应用程序事件状态的模块名和客户机ID等信息。应用程序可以配置上下文,以便将有关上下文的信息附加到审计记录中。

  • 为实际应用程序安全性、Oracle Database Vault、Oracle标签安全性、Oracle数据泵和Oracle SQL*Loader直接路径事件创建策略

统一审计跟踪可以捕获 Recovery Manager 事件,您可以在UNIFIED_AUDIT_TRAIL数据字典视图中查询这些事件。您不能为 Recovery Manager 事件创建统一的审计策略。

您还可以使用细粒度审计来审计特定的表列,并在策略创建期间关联事件处理程序。对于统一的细粒度审计,您可以创建策略来测试捕捉表上特定数据库操作的条件或活动发生的时间。例如,您可以审计晚上9点以后访问的表。

审计原因包括:

  • 为当前行动建立未来的问责制

  • 根据用户(或其他用户,如入侵者)的责任,阻止他们采取不适当的行动

  • 调查、监视和记录可疑活动

  • 处理遵从性的审计需求

从 Oracle Database 12c 开始,当使用统一审计时,默认情况下启用了数据库审计。您可以通过启用审计策略来控制数据库审计。但是,在使用统一审计之前,必须将数据库迁移进它。

另见:

  • 《Oracle Database Security Guide》有关统一审计的详细资料

  • 《Oracle Database Upgrade Guide》学习如何迁移到统一审计

审计政策

您可以使用一条SQL语句创建一个指定了一组审计选项且命名统一的审计策略。这些选项可以指定要在数据库中审计的系统特权、操作或角色。

在审计策略中,您可以选择设置一个条件,该条件可以针对每个语句进行评估,一次针对会话,或一次针对数据库实例。事件的审计取决于对适用审计策略的条件的评估结果。如果条件的值为 true,则数据库生成审计记录。

下面的示例创建一个策略,来审计 hr.employees 表上的活动。除非用户从可信终端 term1 和 term2 登录:

CREATE AUDIT POLICY EmployeesTableAuditACTIONS update ON hr.employees, delete ON hr.employeesWHEN SYS_CONTEXT ("userenv", "hostname") NOT IN("term1","term2") EVALUATE PER SESSION;

以下声明支持用户 hr 和 hrvp 的策略:

AUDIT POLICY EmployeesTableAudit BY hr, hrvp;

您可以将统一的审计策略应用于任何数据库用户,包括 SYSDBA、SYSOPER 等管理用户。但是,审计策略只能在使用 ALTER DATABASE OPEN 语句打开数据库之后才能读取。因此,来自管理用户的顶级操作总是被审计,直到数据库打开。数据库打开后,审计策略配置就生效了。

当启用统一审计时,数据库将自动审计对审计设置的更改。数据库还审计数据库实例的启动和关闭。

另见:

《Oracle Database Security Guide》学习如何管理审计政策

审计管理员角色

要执行审计,必须授予您适当的系统特权。

Oracle 数据库提供了以下系统提供的审计管理员角色:

  • AUDIT_ADMIN

    UDIT_ADMIN角色管理数据库的审计设置。具有此角色的用户具有以下特权:

    • Create、alter 和 drop 审计策略,包括细粒度审计策略

    • 为每个业务需求启用或禁用审计策略

    • 查看审核记录

    • 管理和清理审计跟踪

  • AUDIT_VIEWER

    AUDIT_VIEWER 角色适用于只需要查看和分析数据的用户。具有此角色的用户仅有权查看审计跟踪内容。

另见:

《Oracle Database Security Guide》了解更多有关审计的知识

统一的审计跟踪

审计记录对于检测和识别未经授权的数据访问是必不可少的。

Oracle数据库可以为指定的事件配置审计。如果事件发生在用户会话期间,则数据库生成审计记录。

审计跟踪是存储审计记录的位置。Oracle 数据库 12c 中新增的统一审计跟踪为来自各种审计类型的审计记录提供了统一的存储。您必须手动地从以前版本的传统审计跟踪迁移到统一审计。

审计包括标准审计和细粒度审计,还包括以下事件的审计,包括管理用户执行这些事件:

  • Oracle Data Pump

  • SQL*Loader direct path loads

  • Oracle Database Vault

  • Oracle Label Security

  • Recovery Manager

  • Real Application Security

统一审计跟踪是只读的,并存储在AUDSYS模式中。默认情况下,SYSAUX表空间存储来自所有源的审计记录。可以使用DBMS_AUDIT_MGMT包提供一个新的表空间。

UNIFIED_AUDIT_TRAIL 视图从审计跟踪中检索审计记录,并以表格形式显示它们。APPLICATION_CONTEXTS 列存储配置的应用程序上下文属性的值。您可以使用 AUDIT 语句在审计记录中包含上下文属性的值。例如,下面的语句从 userenv 命名空间捕获模块和 CLIENT_INFO 属性:

AUDIT CONTEXT NAMESPACE userenv ATTRIBUTES MODULE, CLIENT_INFO BY hr;

根据被审计的组件(如Oracle Database Vault),可以使用其他与审计跟踪相关的统一视图。

另见:

  • 《Oracle Database Security Guide》了解统一审计跟踪

  • 《Oracle Database Upgrade Guide》学习如何迁移数据库以使用统一审计

  • 《Oracle Database Reference》了解UNIFIED_AUDIT_TRAIL视图

企业管理器的审计支持

Oracle Enterprise Manager (Enterprise Manager)允许您执行大多数与审计相关的任务。

任务包括:

  • 启用和禁用审计

  • 在审计语句和模式对象时管理对象

    例如, 企业管理器使您能够显示和搜索当前被审计的语句、权限、和对象。

  • 查看和配置与审计相关的初始化参数

  • 显示审计报告

另见:

企业管理器在线帮助

Oracle 审计保险库和数据库防火墙

Oracle 审计保险库和数据库防火墙 (Oracle AVDF) 为数据库提供了第一道防线,并合并来自数据库、操作系统和目录的审计数据。

基于 SQL 语法的引擎在未到达数据库之前监视和阻止未经授权的 SQL 流量。对于遵从性报告和告警,Oracle AVDF将来自网络的数据库活动数据与详细的审计数据结合起来。您可以定制审计和监视控件,以满足企业安全需求。

另见:

《Oracle Database Security Guide》了解其他安全资源,如 Oracle Audit Vault 和数据库防火墙

高可用性的概述

可用性是指应用程序、 服务、 或功能按用户要求的可用程度。

例如, 一个在线图书销售商使用的 OLTP 数据库是可用的, 客户可以访问它并作出购买决定。 可靠性、 可恢复性、 及时检错、 和连续操作是高可用性的主要特征。

在数据库环境中的高可用性的重要性, 取决于停机时间的成本。 停机时间是某种资源不可用的时间。停机时间可被归类为计划内的或计划外的。设计高度可用环境时面临的主要挑战, 是检查造成停机时间的所有可能的原因, 并制定一个计划来应对他们。

高可用性和计划外停机时间

Oracle 数据库提供了高可用性解决方案,以防止、 容忍、 并减少所有类型的计划外故障所造成的停机时间。

站点故障

站点故障, 即当某个事件发生, 使得整个应用程序或其大部分停止处理或慢到一个不可接受的服务级别。

站点故障可能会影响一个数据中心的所有处理, 或一个数据中心所支持的应用程序的一个子集。示例包括持续的整个站点电源或网络故障、 使数据中心无法操作的自然灾难、 或对操作或站点的恶意攻击。

针对站点故障保护的最简单形式是使用 RMAN 创建数据库备份,并将它们存储到异地。您可以将数据库还原到另一台主机。然而,这种技术可能非常耗时,并且备份可能不是最新的。 在 Data Guard 环境中维护一个或多个备用数据库,使您可以在生产站点出现故障时, 仍能提供连续的数据库服务。

另见:

  • 《Oracle Database Backup and Recovery User’s Guide》关于 RMAN 备份和恢复解决方案的信息

  • 《Oracle Data Guard Concepts and Administration》有关备用数据库的简介

计算机故障

运行数据库的系统由于被关闭或不再可访问而变得不可用时,会发生计算机故障停机。

计算机故障的例子包括硬件和操作系统故障。下表的 Oracle 特性能防止计算机故障, 或有助于对其采取适当的响应:

表 17-1 防止电脑故障

特性 描述 详见

企业网格

在 Oracle 真正应用程序群集 (Oracle RAC) 环境中, Oracle 数据库运行在集群中的两个或多个系统上,并同时访问一个共享的数据库。单个数据库系统跨越多个硬件系统,但对于数据库应用程序来说,仍然只是一个单一数据库。

"Overview of Grid Computing"

Oracle 数据卫士

数据卫士使您可以维护一个生产数据库的副本, 称为备用数据库,它可以驻留在不同的大洲, 也可以位于相同的数据中心。如果主数据库由于停机而不可用时,则数据卫士可以将任何备用数据库切换为主数据库角色, 将停机时间降至最低。

Oracle Data Guard Concepts and Administration

全局数据服务

全局数据服务框架自动化并集中配置、维护和监视数据库云。全局数据服务支持云提供的服务的负载平衡和故障转移。从本质上讲,全局数据服务提供了一组数据库,其优点与 Oracle Real Application Clusters (Oracle RAC) 提供单个数据库相同。

Oracle Database Global Data Services Concepts and Administration Guide

快速启动故障恢复

计划外停机时间的一个常见原因是系统故障或崩溃。 Oracle 数据库的快速启动故障恢复技术自动限定数据库实例恢复时间。 

Oracle Database Performance Tuning Guide

存储故障

当包含一些或所有数据库内容的存储, 由于已关闭或不再可访问而变得不可用时,会发生存储故障停机。存储故障的例子包括磁盘驱动器或存储阵列故障。

下表显示了除 Oracle 数据卫士之外的存储故障。

表 17-2 存储故障的解决

解决 描述 详见

Oracle 自动存储管理 (Oracle ASM)

ASM 是一个卷管理器和一个文件系统,用于支持单实例 Oracle 数据库和 Oracle RAC 配置的 Oracle 数据库文件。ASM 是 Oracle 推荐的存储管理解决方案,它提供了传统卷管理器和文件系统的替代方案。

"Oracle Automatic Storage Management (Oracle ASM)"

备份和恢复

恢复管理器 (RMAN) 实用程序可以备份数据、将数据还原到之前的一个备份、将数据更改恢复到故障发生前的时间。

"Backup and Recovery"

另见:

《Oracle Automatic Storage Management Administrator's Guide》了解 Oracle ASM 的更多信息

数据损坏

当硬件、软件或网络组件导致读写已损坏的数据时,就会发生数据损坏。

数据损坏的一个例子是卷管理器错误,它会导致磁盘读或写错误。数据损坏很少见,但可以对数据库、甚至对业务造成灾难性影响。

除了数据卫士和恢复管理器,Oracle 数据库还支持针对下列形式数据损坏的保护:

  • 丢失写问题的解决方案

    当 I/O 子系统在未发生写操作却认为数据块已完成时,就会发生写操作丢失。在后续读取块时,I/O子系统返回数据块的旧版本,该数据块可能用于更新数据库的其他块,从而破坏数据库。Oracle数据库解决方案如下:

    • 使用备用数据库丢失写保护

      在 Oracle 数据库 11g 中引入的标准丢失写保护中,可以在主数据库和备用数据库上启用 DB_LOST_WRITE_PROTECT 初始化参数。每个数据库记录在线重做日志中读取的缓冲区缓存块。当备用数据库在托管恢复期间应用 redo 时,它读取相应的块,并将 scn 与 redo 日志中的 scn 进行比较,从而检测差异。

    • 使用影子表空间丢失写保护

      对于影子丢失的写保护,创建一个影子表空间。影子表空间包含一个简短的描述记录(包括SCN),用于跟踪数据文件中的每个数据块。

      如果启用了影子丢失写保护(ALTER DATABASE ENABLE LOST WRITE TRACKING),并且数据库更新了跟踪的数据块,那么数据库将 SCN 写入对应的影子表空间。当读取被跟踪的数据块时,数据库查找影子条目,然后将其与被跟踪的数据块进行比较。如果影子条目的SCN大于跟踪的块,则发生了写操作丢失。

      影子丢失写保护的优点是无需使用备用数据库就可以检测丢失的写。此外,由于备用丢失写保护固有的延迟,当检测到丢失写时,此块可能已经损坏了数据库的其他部分。为了防止数据损坏,影子丢失写保护在使用之前检测丢失的写。

  • 数据块损坏检测

    块损坏即是一个数据块不是一种可识别的 Oracle 格式,或其内容在内部不一致。包括 RMAN 的几个数据库组件和工具, 可以将检测损坏的块,并将其记录到 V$DATABASE_BLOCK_CORRUPTION 中。如果环境使用 Active Data Guard 备用数据库,则可以自动修复损坏。
  • 数据恢复顾问

    数据恢复顾问是一个 Oracle 工具,它可以自动诊断数据故障、确定和提供适当的修复选项,并在用户的请求下执行修复。

  • 事务保护和应用程序连续性

    数据库会话中断,无论是计划中的还是计划外的,都可能使最终用户不确定其工作的状态。在某些情况下,用户可以重新提交提交的事务,从而导致逻辑数据损坏。事务保护提供事务幂等性,这使数据库能够保存一个保证的提交结果,指示事务是否提交并完成。应用程序连续性(包括事务保护)允许应用程序在发生可恢复错误后对数据库重播事务,并在事务停止的地方继续执行。

另见:

  • "Overview of Transaction Guard"

  • 《Oracle Database Backup and Recovery User’s Guide》关于 RMAN 备份和恢复解决方案的信息

人为错误

当某些意外的或恶意的操作,导致数据库中的数据产生逻辑损坏或变得不可用时,会发生人为错误停机。 基于受影响的数据的数量及其重要性, 人为错误停机的服务级别影响可会显著不同。

很多研究表明,人为错误是造成停机时间的最大原因。Oracle 数据库提供了功能强大的工具,以帮助管理员快速诊断,并从这些错误中恢复。它还包括了使最终用户能够从问题中恢复而不需要管理员介入的功能。

针对人为错误,Oracle 数据库建议下列形式的保护:

  • 限制用户访问:

    防止错误的最佳方法是限制用户对数据和服务的访问。 Oracle 数据库提供了广泛的安全工具,通过进行用户身份验证,然后让管理员仅授予用户为执行其任务所需的权限,来控制用户对应用程序数据的访问。

  • Oracle 闪回技术

    Oracle 闪回技术是 Oracle 数据库中的一系列纠正人为错误的功能。Oracle 闪回提供了快速分析和修复人为错误的 SQL 接口。例如,您可以执行:

    • 细粒度的精确分析,并修复局部损坏

    • 快速纠正更大范围的破坏

    • 在行、事务、表、表空间和数据库级别进行恢复

  • Oracle LogMiner

    Oracle LogMiner是一个关系工具,允许使用SQL读取、分析和解释在线文件。

另见:

  • "Oracle LogMiner"

  • "Overview of Database Security"
  • 《Oracle Database Backup and Recovery User’s Guide》《Oracle Database Development Guide》了解 Oracle 闪回功能的更多信息

  • 《Oracle Database Utilities》了解 Oracle LogMiner

高可用性和计划内停机时间

计划内的停机时间对于公司运营可能同样是具有破坏性的,特别是在支持多个时区用户的全球性企业中。在这种情况下,设计一个系统以尽量减少例行操作、定期维护和新的部署等造成的计划内停机是很重要的。

系统和数据库变更

计划内系统变更发生在执行例行和定期的维护操作和新的部署时,如在数据库的组织数据结构之外, 执行预定的操作环境变更。

示例包括添加或删除 CPU 和集群节点(节点是一个数据库实例所驻留的计算机)、升级系统硬件或软件以及迁移系统平台等。

Oracle 数据库提供了动态资源调配作为计划内系统和数据库变更的解决方案:

  • 数据库动态重配置

    Oracle 数据库动态适应各种硬件和数据库配置变更,包括从 SMP 服务器添加和删除处理器,和使用 Oracle ASM 添加和删除存储阵列。例如,Oracle 数据库监视操作系统,以侦测 CPU 数量的变化。如果CPU_COUNT 初始化参数设置为默认值,则数据库工作负荷可以动态地利用新添加的处理器。

  • 自动优化内存管理

    Oracle 数据库使用非集中化的策略,在每个 SGA 和 PGA 子组件中释放或获取内存。Oracle 数据库通过提示操作系统将内存颗粒传输到需要它的组件来自动优化内存。

  • 自动分布数据文件、控制文件和在线重做日志文件

    Oracle ASM 通过自动将数据文件、控制文件和日志文件分布到所有可用的磁盘,从而自动简化其布局。

另见:

  • "Memory Management"

  • 请参阅 《Oracle Automatic Storage Management Administrator's Guide》了解 Oracle ASM 的更多信息

数据变更

当需要更改 Oracle 数据库对象的逻辑结构或物理组织时,将发生计划内数据变更。这些变更的主要目的,是提高性能或可管理性。示例包括重定义表、添加表分区和创建或重新生成索引。

Oracle 数据库通过在线重组织和重定义来进行数据变更,将停机时间降至最低。这种体系结构使您可以在打开数据库时执行以下任务:

  • 执行表在线重定义,使您能够进行表结构修改,而不会显著影响表的可用性

  • 创建、分析、并重新组织索引

  • 移动表分区

另见:

  • "Indexes and Index-Organized Tables"

  • "Overview of Partitions"

  • 《Oracle Database Administrator’s Guide》了解如何在线更改数据结构

应用程序变更

计划内应用程序变更可能包括更改数据、 模式和程序。这些更改的主要目的是提高性能、可管理性和功能。例如,应用程序升级。

Oracle 数据库支持以下解决方案,以尽量减少对应用程序的数据库对象进行变更所需的应用程序停机时间。

表 17-3 最小化停机时间的解决方案

解决方案 描述 详见

滚动数据库补丁更新

Oracle 数据库支持将补丁以滚动方式应用到 Oracle RAC 系统中的多个节点。

 

滚动数据库发布更新

Oracle 数据库支持以滚动的方式安装数据库软件升级和应用补丁集——几乎没有数据库停机时间 ——通过使用数据卫士 SQL 应用和逻辑备用数据库。

Oracle Database Upgrade Guide

基于版本的重定义

基于版本的重定义, 可以在应用程序正在使用时, 使您能够升级应用程序的数据库对象,从而最小化或消除停机时间。 Oracle 数据库通过在一个称为版本的私有环境中更改(重定义)数据库对象来完成这项任务。

Oracle Database Development Guide

具有默认 WAIT 选项的 DDL

DDL 命令需要在内部结构上获取独占锁 (见"DDL Locks")。在以前的版本中, 如果 DDL 命令无法获取锁,则它们将会失败。 使用指定了 WAIT 选项的 DDL 可以解决此问题。

 

创建处于禁用状态的触发器

您可以创建一个处于禁用状态的触发器,使您能够在启用触发器之前确保您的代码编译成功。

Oracle Database PL/SQL Language Reference

网格计算概述

网格计算是一种计算体系结构, 能有效地将大量服务器和存储集中到一个灵活的、 随需而变的资源池,以满足整个企业的计算需要。 

数据库服务器网格将一批低端服务器互连,以运行一个或多个数据库。 数据库存储网格将一批低成本模块化存储阵列合并到一起, 供数据库服务器网格中的计算机访问。

使用数据库服务器网格和存储网格,您可以构建一个系统资源池。您可以根据业务优先级, 动态分配和释放这些资源。

图 17-2 说明了企业网格计算环境中的数据库服务器网格和数据库存储网格。

图 17-2 网格计算环境


Description of "Figure 17-2 Grid Computing Environment"

另见:

http://www.gridforum.org/了解全球网格论坛(GGF)标准组织

数据库服务器网格
Oracle 真正应用集群(Oracle RAC)使相互连接的多个实例能对一个Oracle 数据库进行共享访问。这些实例通过互连连接在一起。

在 Oracle RAC 环境中,Oracle 数据库运行在集群中的两个或多个系统上,并发访问一个共享的数据库。Oracle RAC 通过提供跨越多个低成本服务器的单个数据库, 而对应用程序显示为一个单一、 统一的数据库系统,形成一个数据库服务器网格。

Oracle 集群件是一个软件,它使多个服务器能够共同协作,如同是一台服务器一样。每个服务器看起来像一台独立服务器。然而,每个服务器都有额外的进程与其它服务器互相通信,使得各个独立的服务器可以一起工作,犹如它们是一台服务器一样。Oracle 集群件提供了所有运行该集群所需的功能,包括节点成员资格和消息服务。

另见:

  • 《Oracle Real Application Clusters Administration and Deployment Guide》了解如何管理 Oracle RAC数据库

  • 《Oracle Clusterware Administration and Deployment Guide》学习如何管理和部署 Oracle 集群件

可扩展性

在数据库服务器网格中,随着容量需求的增加,Oracle RAC 使您能够将节点添加到集群。

在 Oracle RAC 中实施缓存融合技术,使您能够扩展容量,而不更改您的应用程序。因此,您可以以增量方式扩展系统, 以节省成本,和消除将较小的单节点系统替换为较大的系统的需要。

你可以以增量方式将节点添加到集群中,而不是用更大的节点替换现有系统。网格即插即用简化了从群集中添加和删除节点,使得在动态资源调配环境中部署集群变得更加容易。网格即插即用还使数据库和服务能以一种独立于位置的方式来管理。SCAN 使客户端能够连接到数据库服务,而不用考虑其在网格中的位置。

另见:

  • 《Oracle Real Application Clusters Administration and Deployment Guide》了解有关缓存融合的更多信息

  • 《Oracle Database Installation Guide》为您的平台学习如何使用网格命名服务启用网格即插即用

  • 《Oracle Clusterware Administration and Deployment Guide》有关配置网格命名服务以启用网格即插即用的更多信息,请参阅

容错能力

在高可用性体系结构中,容错是针对体系结构中的组件故障提供的保护。

Oracle RAC 体系结构的关键优势是由多个节点提供的固有的容错能力。因为物理节点独立运行,一个或多个节点的故障不会影响集群中的其他节点。

故障切换可能在网格中的任何节点上发生。在极端情况下,即使除了一个节点之外的所有结点都处于关闭状态, Oracle RAC 系统仍能提供数据库服务。这种体系结构允许将一组节点透明地联机或脱机以进行维护,而集群中的其余部分仍然继续提供数据库访问。

Oracle RAC 提供与 Oracle 客户端和连接池的内置集成。有了这一功能,应用程序可以立即从终止该连接的池得到任何故障通知。应用程序可以避免等待 TCP 超时,并可以立即采取适当的恢复操作。Oracle RAC 将监听器与Oracle 客户端和连接池集成,以创建优化的应用程序吞吐量。Oracle RAC 可以基于在事务中的负载, 平衡集群工作量。

另见:

  • "Database Resident Connection Pooling"

  • 《Oracle Real Application Clusters Administration and Deployment Guide》了解自动工作负载管理

服务

Oracle RAC 支持服务, 它可以将数据库工作负荷分组,并将工作路由到被指定来提供服务的最佳实例。

一个服务代表具有共同属性、性能阈值和优先级的应用程序工作负载。你定义服务来执行任务,并将业务策略应用于这些服务, 如为高峰处理时间分配节点,或自动处理服务器故障。使用服务可以确保系统资源在需要的地方和需要的时候被使用,以实现业务目标。

服务与数据库资源管理器集成,这使您能够限制实例中服务可以使用的资源。此外,Oracle调度程序作业可以使用服务运行,而不是使用特定的实例。

See Also:

  • "Database Resource Manager"

  • 《Oracle Database Administrator’s Guide》了解数据库资源管理器和Oracle调度程序

Oracle Flex 集群

从Oracle Database 12c开始,您可以在大型集群中配置Oracle集群和Oracle Real应用程序集群。

这些被称为 Oracle Flex 集群的大型集群包含两种类型的节点,它们被安排在中心和辐条(hub-and-spoke)架构中:中心节点和叶节点。集线器节点紧密连接,可以直接访问共享存储,并充当一个或多个叶子节点的锚。叶节点与集线器节点松散连接,可能无法直接访问共享存储。

另见:

  • 《Oracle Clusterware Administration and Deployment Guide》了解更多关于Oracle Flex集群的信息

  • 《Oracle Grid Infrastructure Installation and Upgrade Guide》了解更多关于Oracle Flex集群部署的信息

数据库存储网格

DBA 或存储管理员可以使用 Oracle ASM 接口,来指定数据库存储网格内 ASM 应跨所有服务器和存储平台来管理的磁盘。 ASM 对磁盘空间进行分区,并将数据均匀分布在为 ASM 提供的多个磁盘上。此外,当从数据库存储网格的存储阵列中添加或删除磁盘时, ASM 会自动重新分布数据。

另见:

  • "Oracle Automatic Storage Management (Oracle ASM)"

  • 《Oracle Automatic Storage Management Administrator's Guide》关于集群化的 Oracle ASM 的详细信息

数据仓库和商业智能概述

数据仓库是一个关系数据库,它是为查询和分析设计的,而不是为事务处理设计的。

例如, 数据仓库可能会跟踪历史股票价格或所得税记录。一个数据仓库通常包含来自历史事务的数据,但它也可以包含来自其他源的数据。

数据仓库环境包括一个关系数据库和几个工具。一个典型的环境包括一个 ETL 解决方案、OLAP 引擎、Oracle 仓库生成器、客户端分析工具和其他收集数据并将其提交给用户的应用程序。

数据仓库和 OLTP

介绍数据仓库的常见方式是引用威廉 · 伊曼提出的数据仓库特征

其特点如下:

  • 面向主题

    数据仓库使您能够按照主题(如销售)定义数据库。

  • 集成的

    数据仓库必须将来自不同来源的数据, 以一致的格式存放。他们必须解决命名冲突和度量单位之间不一致等问题。当它们达成此目标时,就可以说它们是集成的。

  • 非易失的

    数据仓库的目的是使您能够分析发生了什么。因此,数据已进入仓库后,数据不应更改。

  • 随时间变化的

    数据仓库的重点是随时间的变化。

数据仓库和 OLTP 数据库有不同的要求。例如,为发现业务中的趋势,数据仓库必须保持大量数据。而另一方面是,需要定期将历史数据从 OLTP 系统移动到存档,以维持良好的性能。表 17-4 列出了数据仓库和 OLTP 之间的差异。

表 17-4 数据仓库和 OLTP 系统

特性 数据仓库 OLTP

工作负载

设计为适应即席查询。你可能不能预先知道您的数据仓库的工作量, 因此它应被优化, 以能很好地执行各种可能的查询。

只支持预定义的操作。您的应用程序可能需要被专门调整或设计,以支持这些操作。

数据修改

通过使用大容量数据修改技术的 ETL 过程来定期更新。数据仓库的最终用户不会直接更新数据库。

单个 DML 语句通常是由最终用户发出的。OLTP 数据库始终处于最新状态,并反映每个业务事务的当前状态。

模式设计

使用反规范化,或部分反规范化模式(如星型模式),以优化查询性能。

使用完全规范化模式,以优化 DML 性能,并保证数据一致性。

典型操作

典型的查询扫描数以千计或数以百万计的行。例如,用户可能要求上个月所有客户的总销售额。

典型的操作仅访问个别记录。例如,用户可能检索某个单一客户的当前订单。

历史数据

存储数月或数年的数据,以支持历史分析。

只存储几周或几个月的数据。根据需要保留历史数据以满足当前的事务要求。

另见:

  • 《Oracle Database Data Warehousing Guide》有关数据库仓库的更详细说明

  • 《Oracle Database VLDB and Partitioning Guide》关于 OLTP 系统更详细的说明

数据仓库体系结构

数据仓库及其体系结构基于不同的业务需求而变化。

数据仓库体系结构 (基本)

在简单的数据仓库体系结构中,最终用户直接访问从多个源系统传输到数据仓库中的数据。

下图显示了一个简单的体系结构

图 17-3 数据仓库的体系结构


Description of "Figure 17-3 Architecture of a Data Warehouse"

上图显示了元数据、传统 OLTP 系统的原始数据和汇总数据。汇总是一个聚合视图, 通过预先计算昂贵的联接和聚合操作,并将结果存储在表中,以提高查询性能。例如,汇总表可能包含按区域和产品的销售总和。汇总也称为物化视图。

另见:

《Oracle Database Data Warehousing Guide》了解基本的物化视图

数据仓库体系结构(使用临时区域)

一些数据仓库使用临时区域,临时区域是数据进入仓库前进行预处理的地方。临时区域简化了构建汇总和管理仓库的任务。

下图描绘了一个工作区域。

图 17-4 使用临时区域的数据仓库体系结构


Description of "Figure 17-4 Architecture of a Data Warehouse with a Staging Area"

另见:

《Oracle Database Data Warehousing Guide》了解不同的传输机制

数据仓库体系结构 (使用临时区域和数据集市)

您可能希望为您组织内的不同工作组定制仓库体系结构。你可以通过将仓库中的数据传输到数据集市来实现这个目标,数据集市是一些为特定业务或项目设计的独立数据库。通常,数据集市包括许多汇总表。

图 17-5 将购买、销售、和库存信息分隔为独立的数据集市。金融分析师可以在这些数据集市中查询有关采购和销售的历史信息。

图 17-5 使用临时区域及数据集市的数据仓库体系结构


Description of "Figure 17-5 Architecture of a Data Warehouse with a Staging Area and Data Marts"

另见:

《Oracle Database Data Warehousing Guide》了解转换机制

提取、转换,和加载 (ETL) 概述

从源系统中提取数据并将其添加到仓库的过程通常称为 ETL:提取、转换、和加载。ETL 指的是一个广泛的过程,而不是三个明确的步骤。

在一个典型场景中,从一个或多个业务系统中提取数据,然后物理地传送到目标系统或中间系统进行处理。依赖于传输的方法,在此过程中可能发生某些转换。例如,一个通过网关直接访问远程目标的 SQL 语句,可以连接两个列,来作为 SELECT 语句的一部分。

Oracle 数据库本身不是一个 ETL 工具。然而,Oracle 数据库提供了一套丰富的功能可供 ETL 工具(如 Oracle 仓库生成器和定制的 ETL 解决方案)来使用。Oracle 数据库所提供的 ETL 功能包括:

  • 可传输表空间

    你可以在不同体系结构的计算机和操作系统之间传输表空间。可传输表空间是在两个 Oracle 数据库之间移动大量数据的最快方法。

  • 表函数

    表函数可以生成一个行集作为输出,也可以接受一个行集作为输入。表函数提供执行流水线和并行转换的支持,它使用 PL/SQL、C、Java实现,而无需使用中间临时表。

  • 外部表

    外部表使你可以直接以并行方式对外部数据进行连接操作,而不需要先将它加载到数据库中。因此,外部表使得加载阶段和转换阶段可以平滑对接。

  • 表压缩

    为减少磁盘和内存的使用,您可以使用一种压缩的格式来存储表和分区表。使用表压缩功能通常可以改进只读操作和执行更快的查询。

另见:

  • "Table Compression"

  • "Overview of External Tables"

  • 《Oracle Database Data Warehousing Guide》关于 ETL 的概述

  • 《Oracle Database Administrator's Guide》

商业智能

商业智能即分析组织信息以作为做出业务决策的辅助手段。

分析应用程序和商业智能的操作,主要是对层次结构进行上卷和下钻,以及比较聚合值等操作。Oracle 数据库提供了支持商业智能操作的几种技术。

分析型 SQL

Oracle 数据库为执行分析型操作引入了许多 SQL 操作。这些操作包括分级、浮动平均值、累积求和、比对报告、同期比较。 

例如 Oracle 数据库支持以下形式的分析型 SQL。

表 17-5 分析 SQL

分析SQL 的类型 描述 详见

聚合 SQL

聚合函数为一组行(而非单个行)返回单个结果行, 比如 COUNT。聚合是数据仓库的重要功能。为了提高在仓库中的聚合性能,数据库提供对 GROUP BY 子句进行扩展,使得查询和报表更容易和更快。

《Oracle Database Data Warehousing Guide》了解聚合。

分析 SQL

MAX之类的分析函数聚合一组行(称为窗口)以返回多个行作为结果集。Oracle 使用一系列分析函数,具有高级的 SQL 分析处理能力。例如,这些分析函数使您能够计算分级、分位点、和移动窗口。

《Oracle Database Data Warehousing Guide》了解用于分析和报表的 SQL

SQL 建模

使用 MODEL 子句,你可以从查询结果中创建一个多维数组,并将规则应用于此数组以计算新值。 例如,你可以按国家对销售视图中的数据进行分区,为每个国家定义一个规则,并按这些规则执行一个模型计算。一个规则可能会计算在 2008 年某种产品的销售额, 以及在 2006 年和 2007 年的销售总额。

《Oracle Database Data Warehousing Guide》了解 SQL 建模。

另见:

《Oracle Database SQL Language Reference》了解 SQL 函数

分析视图

分析视图扩展了数据集的内容,简化了业务智能应用程序的开发。

分析视图具有以下特点:

  • 数据使用层次和维度概念来组织。

  • 连接、聚合和度量计算规则嵌入到分析视图中。

  • 可以使用SQL DDL在数据库中的现有表、视图和其他对象上分层。

  • 可以使用简单的SQL查询。

另见:

《Oracle Database Data Warehousing Guide》有关分析视图的概述
OLAP

Oracle 联机分析处理 (OLAP) 提供原生的多维存储,和跨多个维度分析数据时的快速响应。OLAP 使分析师在交互式会话期间进行复杂、迭代的查询时,能快速获得答案。

Oracle OLAP 具有以下主要特点:

  • Oracle OLAP 与数据库集成,使您可以使用标准的 SQL 管理、查询、和报表工具。

  • OLAP 引擎在 Oracle 数据库内核中运行。

  • 维度对象以其原生的多维格式存储在 Oracle 数据库中。

  • 数据立方体和其他维度对象,在 Oracle 数据字典中是以一级数据对象表示的。

  • 通过对 Oracle 数据库用户和角色授予和撤消权限,数据安全以标准的方式进行管理。

Oracle OLAP 简单而强大:一个数据库、标准的管理和安全、和标准接口和开发工具。

另见:

  • "OLAP"

  • "Overview of Dimensions"

  • 《Oracle OLAP User's Guide》关于 Oracle OLAP 的概述

Oracle 高级分析

Oracle 高级分析选项将 Oracle 数据库扩展为一个用于大数据分析的全面高级分析平台。

Oracle 高级分析提供预测分析、数据挖掘、文本挖掘、统计分析、高级数值计算和数据库中的交互式图形。

Oracle 数据挖掘

在商业智能中,数据挖掘是使用复杂的数学算法来分割数据并评估未来事件的概率。

数据挖掘的典型应用包括呼叫中心、自动取款机、电子商务关系管理(ERM)和业务规划。Oracle 数据挖掘使数据分析师能够快速分析数据,锁定最佳客户,打击欺诈,并找到重要的关联和模式,帮助他们的企业更好地竞争。

Oracle 数据挖掘提供了作为原生 SQL 函数运行的数据挖掘算法,用于高性能的数据库模型构建和模型部署。Oracle 数据挖掘可以挖掘表、视图、星型模式、事务数据和非结构化数据。

Oracle 数据挖掘支持 PL/SQL API 和用于模型评分的 SQL 函数。因此,Oracle 数据库为应用程序开发人员提供了一个基础设施,以便与数据库应用程序无缝集成数据挖掘。

Oracle 数据挖掘是一个SQL开发人员扩展,它为Oracle数据挖掘提供了一个GUI。

另见:

《Oracle Data Mining Concepts》

Oracle R Enterprise

R 是统计计算和图形的开源语言和环境。Oracle R Enterprise 为企业和大数据做好准备。

针对涉及大量数据的问题,Oracle R Enterprise 将 R 集成到Oracle 数据库中。您可以运行 R 命令和脚本,以便对存储在 Oracle 数据库中的数据进行统计和图形化分析。您还可以开发、改进和部署 R 脚本,利用数据库的并行性和可伸缩性来自动化数据分析。数据分析人员可以在一个步骤中运行 R 包并为分析应用程序开发 R 脚本,而不需要学习SQL。

另见:

《Oracle R Enterprise User’s Guide》

Oracle 信息集成概述

随着组织的发展,在多个数据库和应用程序之间共享信息变得越来越重要。

共享信息的基本方法如下所示:

  • 整合

    您可以将信息整合到一个单一的数据库, 这消除了进一步集成的需要。Oracle RAC、网格计算、和 Oracle VPD 可以使您能够将信息整合到一个单一的数据库。

  • 联邦

    可以保持信息分散化,并提供将信息结成联邦的工具,这使其看起来像一个单一的虚拟数据库。

  • 共享

    您可以共享信息,允许您将信息维护在多个数据存储和应用程序中。

本节着重于联邦和共享信息的 Oracle 解决方案。

联邦访问

联邦访问的基础是分布式环境,这是一个完全不同的系统无缝地相互通信的网络。

环境中的每个系统称为一个节点。用户直接连接到的系统称为本地系统。由该用户访问的额外系统是远程系统。

分布式环境使应用程序能够在本地和远程系统之间访问和交换数据。所有数据都可以同时访问和修改。

分布式 SQL

分布式 SQL 同步访问和更新分布在多个数据库中的数据。分布式的 Oracle数据库系统对用户可能是透明的,使其看起来像是一个单一的 Oracle 数据库。

分布式 SQL 包括分布式查询和分布式事务。 Oracle 分布式数据库体系结构提供了查询和事务的透明性。 例如, 标准 DML 语句就像他们在非分布式数据库环境中一样正常工作。此外,应用程序使用标准的 SQL 语句 COMMIT、 SAVEPOINT、和 ROLLBACK 来控制事务。

另见:

  • "Overview of Distributed Transactions"

  • 《Oracle Database Administrator’s Guide》了解如何管理分布式事务

数据库链接

数据库链接是两个物理数据库之间的一个连接,它使客户机能将其作为一个逻辑数据库来访问。 

Oracle 数据库使用数据库链接来使一个数据库上的用户能够访问另一个远程数据库中的对象。本地用户可以访问到远程数据库的一个链接,而不用成为远程数据库上的一个用户。

如图 17-6 中的例子所示,用户 hr 访问在远程数据库上具有全局名称 hq.example.com 的 employees 表。employees 同义词隐藏了远程模式对象的标识和位置。

图 17-6 数据库链接


Description of "Figure 17-6 Database Link"

另见:

《Oracle Database Administrator’s Guide》了解数据库链接

信息共享

整合的核心是在企业中的应用程序之间共享数据。

Oracle GoldenGate

Oracle GoldenGate是一个异步的、基于日志的实时数据复制产品。

Oracle GoldenGate 在异构数据库、硬件和操作系统环境之间实时移动大量事务性数据,影响很小。它优化了实时信息访问和可用性,因为它:

  • 支持包含Oracle数据库和非Oracle数据库的异构混合的复制

  • 维护关键任务系统的持续可用性,从而最小化计划维护期间的停机时间

  • 支持跨企业的实时数据集成

  • 自动配置分片表中分片之间的双向复制

典型的环境包括捕获、泵和传输过程。每个进程都可以在大多数流行的操作系统和数据库上运行,包括 Oracle 数据库和非 Oracle 数据库。可以复制部分或全部数据。这些流程中的任何数据都可以针对异构环境和不同的数据库模式进行操作。

Oracle GoldenGate支持多主机复制、中心辐射式部署、数据整合和数据转换。因此,Oracle GoldenGate使您能够确保您的关键系统全天候运行,并且相关数据分布在整个企业中,以优化决策。

另见:

  • 《Oracle Sharding Guide》学习如何使用Oracle分片

  • http://www.oracle.com/technetwork/middleware/goldengate/documentation/index.html

Oracle 流高级队列 (AQ)

Oracle 流高级队列 (AQ) 是一个与 Oracle 数据库集成的、健壮且功能丰富的消息队列系统。

当一个组织具有多个必须相互通信的不同系统时,消息环境可以提供一种在这些系统之间传输关键信息的标准的、 可靠的方法。

一个示例用例是在总部 Oracle 数据库中录入订单的业务。当输入一个订单时,业务使用 AQ 将订单 ID 和订单日期发送到仓库中的数据库。这些消息提醒仓库中的雇员注意有关的订单,使他们可以填写订单并发运货物。

消息入队和出队

高级队列将用户消息存储为称为队列的抽象存储单元。 

入队是生产者将消息放入队列的过程。 出队是消费者从队列检索消息的过程。

对显式出队的支持使得开发人员能使用 XStream 和 Oracle GoldenGate 来可靠地交换消息。它们也可以通过利用 Oracle GoldenGate 的变化捕获和传播特征,将更改通知到应用程序。

图 17-7 显示了一个示例应用程序,它通过高级队列明确地将消息入队和出队,使其能够与使用不同消息系统的合作伙伴共享信息。入队后,消息能够被转换,且在出队之前传播到伙伴应用程序。

图 17-7 Oracle 数据消息队列


Description of "Figure 17-7 Oracle Message Queuing"
Oracle 数据库高级队列特性

Oracle 数据库高级队列支持消息队列系统的所有标准功能。

功能包括:

  • 异步应用程序集成

    Oracle 流高级队列提供了几种方法可以将消息入队。捕获进程或同步捕获可以隐式捕获消息,或者应用程序和用户也可以显式捕获消息。

  • 可扩展的集成体系结构

    许多应用程序都与一个以 Oracle 数据库为中心的分布式中心辐射模型相集成。Oracle 数据库上的分布式应用程序与同一中心的队列进行通信。多个应用程序共享同一队列,消除了添加队列以支持其他应用程序的需要。

  • 异构应用程序集成

    Oracle 数据库 AQ 为应用程序提供全面的 Oracle 类型系统的能力。它包括对标量数据类型、可继承的 Oracle 数据库对象类型、针对 XML 数据的 XMLType 及其他运算符、以及 ANYDATA 的支持。

  • 遗留应用程序集成

    Oracle 消息网关将 Oracle 数据库应用程序与其他消息队列系统(如Websphere MQ和Tibco)集成在一起。

  • 基于标准的 API 支持

    Oracle Database AQ支持行业标准 API:SQL、JMS和SOAP。使用SQL所做的更改将作为消息自动捕获。

另见:

《Oracle Database Advanced Queuing User's Guide》

  相关解决方案