数据库安全性概述
通常, 数据库安全涉及用户身份验证、 加密、 访问控制、 和监控等。
用户账户
每个 Oracle 数据库都有一个有效数据库用户的列表。
一般来说,数据库访问控制包括限制数据访问和数据库活动。例如,可以限制用户查询指定的表或执行指定的数据库语句。
另见:
-
"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 角色的常见用途
Description of "Figure 17-1 Common Uses for Roles"
另见:
-
《Oracle Database Security Guide》了解将角色用于安全
-
《Oracle Database Administrator’s Guide》学习如何管理角色
权限分析
权限分析机制根据指定的条件捕获数据库的权限使用情况。
通过这种方式,您可以捕获运行应用程序模块或执行特定SQL语句所需的特权。例如,您可以找到用户在特定数据库会话期间行使的特权。
在生产数据库中,权限与角色、角色与角色、角色与用户之间的关系可能很复杂。权限分析使您能够识别在复杂系统中不必要授予的权限。根据对捕获结果的分析,您可以删除不必要的授权或重新配置权限授权,以使数据库更加安全。
另见:
《Oracle Database Security Guide》学习权限分析。
用户概要文件
另见:
-
"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 数据库加密是使用一个安全密钥和加密算法,将数据转换为不可读格式的过程。
网络加密
当数据通过网络在客户端和服务器之间进行传输时对其进行加密被称为网络加密。
透明数据加密
Oracle 高级安全的透明数据加密,可以加密个别表列或表空间。
另见:
《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 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) 使您能够执行行级和列级安全性。
另见:
《Oracle Database Security Guide》
Oracle 标签安全 (OLS)
Oracle Label Security (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 和数据库防火墙
高可用性的概述
可用性是指应用程序、 服务、 或功能按用户要求的可用程度。
高可用性和计划外停机时间
站点故障
另见:
-
《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 的更多信息
数据损坏
数据损坏的一个例子是卷管理器错误,它会导致磁盘读或写错误。数据损坏很少见,但可以对数据库、甚至对业务造成灾难性影响。
-
丢失写问题的解决方案
当 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 闪回提供了快速分析和修复人为错误的 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
高可用性和计划内停机时间
系统和数据库变更
-
数据库动态重配置
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 的更多信息
数据变更
- 执行表在线重定义,使您能够进行表结构修改,而不会显著影响表的可用性
-
创建、分析、并重新组织索引
-
移动表分区
另见:
-
"Indexes and Index-Organized Tables"
-
"Overview of Partitions"
-
《Oracle Database Administrator’s Guide》了解如何在线更改数据结构
应用程序变更
表 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 网格计算环境
Description of "Figure 17-2 Grid Computing Environment"
另见:
http://www.gridforum.org/
了解全球网格论坛(GGF)标准组织
数据库服务器网格
Oracle 集群件是一个软件,它使多个服务器能够共同协作,如同是一台服务器一样。每个服务器看起来像一台独立服务器。然而,每个服务器都有额外的进程与其它服务器互相通信,使得各个独立的服务器可以一起工作,犹如它们是一台服务器一样。Oracle 集群件提供了所有运行该集群所需的功能,包括节点成员资格和消息服务。
另见:
-
《Oracle Real Application Clusters Administration and Deployment Guide》了解如何管理 Oracle RAC数据库
-
《Oracle Clusterware Administration and Deployment Guide》学习如何管理和部署 Oracle 集群件
可扩展性
另见:
-
《Oracle Real Application Clusters Administration and Deployment Guide》了解有关缓存融合的更多信息
-
《Oracle Database Installation Guide》为您的平台学习如何使用网格命名服务启用网格即插即用
-
《Oracle Clusterware Administration and Deployment Guide》有关配置网格命名服务以启用网格即插即用的更多信息,请参阅
容错能力
在高可用性体系结构中,容错是针对体系结构中的组件故障提供的保护。
故障切换可能在网格中的任何节点上发生。在极端情况下,即使除了一个节点之外的所有结点都处于关闭状态, Oracle RAC 系统仍能提供数据库服务。这种体系结构允许将一组节点透明地联机或脱机以进行维护,而集群中的其余部分仍然继续提供数据库访问。
另见:
-
"Database Resident Connection Pooling"
-
《Oracle Real Application Clusters Administration and Deployment Guide》了解自动工作负载管理
服务
服务与数据库资源管理器集成,这使您能够限制实例中服务可以使用的资源。此外,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集群部署的信息
数据库存储网格
另见:
-
"Oracle Automatic Storage Management (Oracle ASM)"
-
《Oracle Automatic Storage Management Administrator's Guide》关于集群化的 Oracle ASM 的详细信息
数据仓库和商业智能概述
数据仓库和 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"
另见:
《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 使用临时区域及数据集市的数据仓库体系结构
Description of "Figure 17-5 Architecture of a Data Warehouse with a Staging Area and Data Marts"
另见:
《Oracle Database Data Warehousing Guide》了解转换机制
提取、转换,和加载 (ETL) 概述
-
可传输表空间
你可以在不同体系结构的计算机和操作系统之间传输表空间。可传输表空间是在两个 Oracle 数据库之间移动大量数据的最快方法。 -
表函数
表函数可以生成一个行集作为输出,也可以接受一个行集作为输入。表函数提供执行流水线和并行转换的支持,它使用 PL/SQL、C、Java实现,而无需使用中间临时表。 -
外部表
外部表使你可以直接以并行方式对外部数据进行连接操作,而不需要先将它加载到数据库中。因此,外部表使得加载阶段和转换阶段可以平滑对接。 -
表压缩
为减少磁盘和内存的使用,您可以使用一种压缩的格式来存储表和分区表。使用表压缩功能通常可以改进只读操作和执行更快的查询。
另见:
-
"Table Compression"
-
"Overview of External Tables"
-
《Oracle Database Data Warehousing Guide》关于 ETL 的概述
-
《Oracle Database Administrator's Guide》
商业智能
商业智能即分析组织信息以作为做出业务决策的辅助手段。
分析型 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 具有以下主要特点:
- 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
另见:
-
"Overview of Distributed Transactions"
-
《Oracle Database Administrator’s Guide》了解如何管理分布式事务
数据库链接
图 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)
消息入队和出队
高级队列将用户消息存储为称为队列的抽象存储单元。
入队是生产者将消息放入队列的过程。 出队是消费者从队列检索消息的过程。
对显式出队的支持使得开发人员能使用 XStream 和 Oracle GoldenGate 来可靠地交换消息。它们也可以通过利用 Oracle GoldenGate 的变化捕获和传播特征,将更改通知到应用程序。
图 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》