数据库管理员的职责
数据库管理员 (DBA) 的主要责任是向用户提供企业数据。
-
安装、 升级、 和修补 Oracle 数据库软件
- 设计数据库, 包括确定需求、 创建逻辑设计 (概念模型) 、 和物理数据库设计
-
创建 Oracle 数据库
- 开发和测试备份和恢复策略,定期备份 Oracle 数据库,并在发生故障的情况下恢复它们
-
配置网络环境,使客户端能连接到数据库
-
启动和关闭数据库
-
管理数据库存储
-
管理用户和安全
-
管理数据库对象, 如表、 索引、 和视图
-
监视和优化数据库性能
- 针对任何严重的数据库错误,进行调查、 收集诊断数据、并报告给Oracle 支持服务
-
评价和测试新的数据库功能
另见:
-
《Oracle Database 2 Day DBA》 介绍了 DBA 的任务
-
《Oracle Database Administrator’s Guide》以便更深入地介绍DBA概念和任务
数据库管理员的工具
Oracle 提供了几种工具,用于管理数据库。
Oracle 企业管理器
Oracle 企业管理器 (企业管理器) 是一个基于web 的系统管理工具,提供对Oracle数据库、Exadata数据库机、融合中间件、Oracle应用程序、服务器、存储和非Oracle硬件和软件的管理。
Oracle Enterprise Manager Cloud Control
Oracle Enterprise Manager Cloud Control(Cloud Control)是一个基于web的界面,它为管理员提供跨Oracle技术栈和非 Oracle 组件的完整监控。
有时,快速应用程序通知(FAN)的组件可能不可用或出现性能问题。在本例中,Cloud Control 显示自动生成的警报,以便管理员可以采取适当的恢复操作。
Cloud Control 的组成部分包括:
-
Oracle管理服务(OMS)
OMS特性是一组J2EE应用程序,它呈现用于 Cloud Control 的接口,与所有Oracle管理代理一起处理监视信息,并使用Enterprise Manager存储库作为其持久数据存储。
-
Oracle管理代理
这些代理是部署在每个受监视主机上的进程,用于监视主机上的所有目标,将此信息传递给OMS,并维护主机及其目标。
-
Oracle管理存储库
存储库是Oracle数据库中的模式,其中包含关于 Cloud Control 管理的管理员、目标和应用程序的所有可用信息。
另见:
-
《Oracle Database Administrator’s Guide》学习如何使用 Cloud Control 管理数据库
-
Cloud Control 的在线帮助
Oracle Enterprise Manager Database Express 12c
Oracle Enterprise Manager Database Express (EM Express) 是一个内置在Oracle数据库中的web管理产品。它不需要特殊的安装或管理。
EM Express 包含 Cloud Control 中的关键性能管理和基本管理页面。这些网页包括:
-
数据库家目录
-
实时 SQL 监控
-
ASH 分析
您可以通过EM Express控制台在线访问这些特性,并通过Active Reports技术离线访问这些特性。从体系结构的角度来看,EM Express没有中间层或中间件组件,这就确保了它在数据库服务器上的开销可以忽略不计。
使用EM Express,您可以执行管理任务,比如管理用户安全性和管理数据库内存和存储。您还可以查看关于数据库的性能和状态信息。
另见:
《Oracle Database 2 Day + Performance Tuning Guide》学习如何使用EM Express管理数据库
SQL*Plus
SQL*Plus 是一个包含在每个 Oracle 数据库安装中的交互式和批处理查询工具。
它具有一个当连接到数据库时作为客户端的命令行用户接口。SQL*Plus 有其自己的命令和环境。它使您能够输入和执行 SQL、PL/SQL、SQL*Plus、 和操作系统命令来执行任务, 如:
-
对查询结果进行格式化设置、执行计算、存储、并打印
-
检查表和对象定义
-
开发和运行批处理脚本
-
管理数据库
另见:
《SQL*Plus User's Guide and Reference》了解 SQL*Plus 的更多信息
数据库安装和配置工具
Oracle 提供了一些工具来简化安装和配置 Oracle 数据库软件的任务。
下表描述了支持的工具。
表 18-1 用于数据库安装和配置的工具
工具 | 描述 | 详见 |
---|---|---|
Oracle 通用安装程序 (OUI) |
OUI 是一个图形用户界面实用程序,使您能够查看、安装和卸载 Oracle 数据库软件。 联机帮助可引导您完成安装。
| 在线帮助指导您完成安装 |
数据库升级助手 (DBUA) |
DBUA 以交互方式引导您将数据库升级和配置为新的发行版。 DBUA 自动执行与升级相关的所有任务,而在以前这通常是手动执行的。DBUA 会为表空间和联机重做日志等配置选项提出建议。
| 《Oracle Database 2 Day DBA》学习如何使用 DBUA 来升级数据库。 |
数据库配置助手 (DBCA) |
DBCA 提供了一个图形界面和引导工作流以创建和配置数据库。此工具使您能够从 Oracle 提供的模板创建数据库, 或创建您自己的数据库和模板。
| 《Oracle Database Administrator’s Guide》了解如何使用 DBCA 创建一个数据库。 |
Oracle 网络配置和管理工具
Oracle 网络服务提供企业范围的分布式异构计算环境中的连接解决方案。Oracle 网络是 Oracle 网络服务的一个组件,使一个网络会话能从客户端应用程序连接到数据库。
可以使用以下工具来配置和管理 Oracle 网络服务:
-
Oracle 网络管理器
此工具使您可以为本地客户端或服务器主机上的一个 Oracle Home 配置 Oracle 网络服务。 您可以使用 Oracle 网络管理器来配置命名、命名方法、概要文件和监听器。您可以使用 Oracle 企业管理器控制台来启动 Oracle 网络管理器, 或作为一个独立的应用程序来启动。 -
Oracle 网络配置助理
此工具在软件安装过程中自动运行。该助手使您能够在安装过程中配置基本网络组件,包括监听器名称及协议地址、命名方法、tnsnames.ora 文件中的网络服务名称和目录服务器的使用。 -
监听器控制实用程序
监听器控制实用程序使您可以配置监听器,以接收客户端连接。您可以通过企业管理器或作为一个独立的命令行应用程序来访问该实用程序。 -
Oracle 连接管理器控制实用程序
此命令行实用程序使您能够管理一个 Oracle 连接管理器,它是一个路由器,通过它,一个客户端的连接请求能被中转到下一个跃点,或直接连到数据库。 可以使用实用程序命令在一个或多个 Oracle 连接管理器上执行基本的管理功能。另外,您可以查看和更改参数设置。
另见:
数据移动和分析工具
Oracle 数据库包括了几个实用程序来辅助数据移动和分析。
表 18-2 数据移动和分析任务
任务 | 详见 |
---|---|
将数据从操作系统文件加载到 Oracle 数据库表 | |
将数据和元数据从一个数据库移动到另一个数据库 | |
通过 SQL 接口查询重做日志文件 | |
管理 Oracle 数据库诊断数据 |
另见:
-
"Backup and Recovery"了解与备份和恢复相关的工具
-
《Oracle Database Utilities》了解 DBVERIFY 和 DBNEWID
SQL*Loader
SQL*Loader 将数据从称为数据文件的外部文件加载到数据库表中。它有一个功能强大的数据分析引擎, 对数据文件中的数据格式几乎没什么限制。
-
将数据从多个数据文件加载到多个表
您将要加载的数据存储在 SQL*加载器的数据文件中。 SQL*加载器控制文件是一个文本文件,包含一些 DDL 指令,被 SQL * 加载器用来确定在哪里可以找到数据、如何对数据进行分析和解释、将数据插入到何处等。 -
控制加载操作的各个方面
例如,您可以有选择地加载数据、指定数据字符集、使用 SQL 函数操作数据、在指定列中生成唯一的连续键值等等。您还可以生成复杂的错误报告。 -
使用常规路径、直接路径或外部表加载
常规路径加载通过执行 INSERT SQL 语句来填充表。相比之下,直接路径加载通过格式化数据块和将他们直接写入数据库文件,消除了很多数据库开销。直接写入对高水位(HWM)以上的块进行操作,直接写入磁盘,从而绕过了数据库缓冲区高速缓存。直接读取操作直接将数据从磁盘读入 PGA,同样绕过了缓冲区高速缓存。
外部表加载为数据文件中包含的数据创建一个外部表。load 执行 INSERT 语句将数据文件中的数据插入到目标表中。
您还可以使用 SQL*Loader express 模式,当您在 SQL*Loader 命令中指定表参数时,该模式将被激活,如下面的示例所示:
% sqlldr hr table=employees
不解析控制文件,这使得 SQL*Loader 更容易使用。SQL*Loader 使用表列定义来确定输入数据类型,而不是解析控制文件。SQL*Loader 做了几个默认假设,包括字符集、字段分隔符以及数据、日志和坏文件的名称。您可以使用命令行参数覆盖许多缺省值。
另见:
-
《Oracle Database Utilities》了解 SQL*Loader
Oracle 数据泵导出和导入
这项技术是以下 Oracle 数据库数据移动工具的基础:
-
数据泵导出(导出)
导出是一个实用程序,用于将数据和元数据卸载到一组称为转储文件集的操作系统文件。转储文件集是一个或多个二进制文件, 其中包含表数据、 数据库对象的元数据、 和控制信息等。 -
数据泵导入(导入)
导入是一个实用程序,用于将一个导出的转储文件集加载到数据库中。你也可以使用导入直接将数据从一个源数据库加载到目标数据库,而不需要中间文件, 这使得导出和导入操作可以同时运行,最小化了总运行时间。
Oracle 数据泵由下列几个不同部分组成:
-
命令行客户端 expdp 和 impdp
这些客户端调用 DBMS_DATAPUMP 包,以执行 Oracle 数据泵操作。
-
DBMS_DATAPUMP PL/SQL 包,也称为数据泵 API
此 API 提供了高速的导入和导出功能。
-
DBMS_METADATA PL/SQL 包,也称为元数据 API
所有加载和卸载元数据的进程都会使用此 API,以 XML 形式存储对象的定义。
下图显示了 SQL Oracle 数据泵如何与 SQL*Loader 和外部表集成。如图所示,SQL*Loader 与外部表 API 和数据泵 API 集成,以将数据加载到外部表 。如Oracle Enterprise Manager Cloud Control (Cloud Control) 和移动表空间可以使用 Oracle 数据泵基础设施。
另见:
-
《Oracle Database Utilities》关于 Oracle 数据泵概述
-
《Oracle Database PL/SQL Packages and Types Reference》关于 DBMS_DATAPUMP 和 DBMS_METADATA 的说明
Oracle LogMiner
Oracle LogMiner 使您能够通过 SQL 接口查询重做日志文件。
- 查明某个数据库逻辑损坏是何时开始发生的,如一些应用程序级别的错误
-
检测用户错误
-
确定你必须要执行哪些操作,以进行事务级别的细粒度恢复
-
使用趋势分析,以确定哪些表上的更新和插入最多
- 通过 LogMiner 针对重做日志文件全面的关系接口,分析系统行为和审核数据库使用
另见:
《Oracle Database Utilities》了解 LogMiner 的更多信息
ADR 命令解释器 (ADRCI)
ADRCI 是一个命令行实用程序,使您可以调查问题、查看健康检查报告、和将首次故障诊断数据打包并上传到 Oracle 支持。
另见:
-
《Oracle Database Utilities》和《Oracle Database Administrator’s Guide》关于ADR 和 ADRCI 的详细信息
数据库管理员的主题
备份和恢复
另见:
-
《Oracle Database Backup and Recovery User's Guide》关于备份和恢复的概念和任务
-
《Oracle Database Platform Guide for Microsoft Windows》了解如何使用Volume Shadow Copy Service (VSS) 应用程序备份和恢复Microsoft Windows上的数据库
备份和恢复技术
您可以使用Recovery Manager或用户管理技术来备份、恢复和恢复Oracle数据库。
两种方法的主要区别如下:
-
恢复管理器(RMAN)
RMAN 是一个与 Oracle 数据库集成的 Oracle 数据库实用程序,用于执行备份和恢复操作,包括在每个被备份的数据库的控制文件中维护一个历史备份元数据的存储库。 RMAN 还可以在一个不同的数据库中维护一个称为恢复目录的集中化的备份存储库。RMAN 是一个Oracle 数据库功能,不需要单独安装。RMAN 与 Oracle 安全备份集成,提供可靠的、集中的磁带备份管理,以保护文件系统数据和 Oracle 数据库文件。Oracle 安全备份 SBT 接口使您能够使用 RMAN 将数据库文件备份到磁带或基于互联网的网络服务(如亚马逊 S3),或反之从其中还原数据文件。Oracle 安全备份支持 SAN 和 SCSI 环境中的几乎每种磁带驱动器和磁带库。 -
用户管理技术
作为 RMAN 的替代方法,您可以使用操作系统命令如 Linux dd 来备份和还原文件,和用 SQL*Plus 命令进行介质恢复。尽管由于 RMAN与 Oracle 数据库集成在一起并简化了管理而被作为推荐的方式,但Oracle 仍完全支持用户管理的备份和恢复。
另见:
-
《Oracle Database Backup and Recovery User’s Guide》有关备份和恢复解决方案的概述
-
《Oracle Secure Backup Administrator’s Guide》有关Oracle安全备份的概述
RMAN 体系结构
Cloud Control 为 RMAN 提供了一个图形化的前端和调度工具。输入作业参数,然后指定作业调度。Cloud Control 在指定的时间或指定的重复间隔运行 RMAN,执行备份和恢复操作。Cloud Control 通过一组向导提供对RMAN的访问。这些向导将根据对数据库、可用备份和数据恢复目标的分析,引导您完成各种恢复过程。
通过使用 Cloud Control,您可以执行本文档中描述的更简单的恢复和恢复场景。您还可以使用更复杂的恢复和恢复技术,如时间点恢复和Oracle闪回操作,这些技术允许有效地修复媒体故障和用户错误。使用 Cloud Control 通常比 RMAN 命令行客户机更简单。
另见:
-
《Oracle Database 2 Day DBA》了解如何使用企业管理器执行备份和恢复
-
《Oracle Database Administrator’s Guide》关于备份和恢复解决方案概述
数据库备份
数据库备份可以是物理的或逻辑的。
另见:
整体和部分数据库备份
一致和不一致的备份
整体数据库备份可能是一致的或不一致的。
另见:
-
《Oracle Database Backup and Recovery User’s Guide》了解不一致备份的更多信息
备份集和映像拷贝
RMAN BACKUP 命令生成映像拷贝或备份集。
备份类型区别如下:
-
映像拷贝
映像拷贝是对磁盘上的数据文件、控制文件或归档重做日志文件按位进行复制的副本。可以使用操作系统实用程序或 RMAN 创建物理文件的映像拷贝,并且可以使用任一工具来还原它们。 -
备份集
RMAN 也可以按称为备份集的专有格式来创建备份。备份集包含一个或多个数据文件、归档重做日志文件、 控制文件、 或服务器参数文件中的数据。备份集的最小单位是一个称为备份片的二进制文件。备份集是 RMAN 可以将备份写入顺序设备(如磁带驱动器) 的唯一形式。备份集使磁带设备能够使数据流连续不断。例如,RMAN 可以将多个来自慢速、中速、快速的磁盘的数据块混合到一个备份集,使得磁带设备有一个稳定的数据块输入流。 映像拷贝比较适合用于磁盘,因为您可以进行增量更新,还可以对其进行就地恢复。
另见:
《Oracle Database Backup and Recovery User's Guide》了解备份集和映像拷贝的更多信息
数据修复
虽然有好多个问题都可以导致数据库停止正常运行或影响其 I/O 操作,只有一些问题需要DBA的介入和数据修复。
在下列情况下,通常需要进行数据修复:
-
介质故障
当数据库之外的某个问题导致数据库无法读取或写入文件时,将发生介质故障。典型的介质故障包括数据文件头崩溃、数据文件被覆盖、删除或损坏等物理故障。介质故障不像用户错误或应用程序错误那么常见,但一个完备的恢复策略对此必须要有所准备。 -
用户错误
一个用户或应用程序可能会对数据库做出不正确的更改,如错误的更新、删除了某个表的内容或删除了某些数据库对象。一个好的备份和恢复策略,使你仅用最小的 DBA 工作量,且仅对数据库可用性造成最小的影响,就可以将您的数据库返回到所需的状态。
另见:
Oracle 闪回技术
-
闪回数据库
在非CDB中,您可以将 Oracle 数据库倒回到一个之前的时间,以纠正逻辑数据损坏或用户错误引起的问题。闪回数据库也可以用于辅助数据卫士、数据恢复顾问、和同步克隆数据库。闪回数据库不还原文件或执行介质恢复,因此您不能使用它来纠正磁盘崩溃之类的介质故障。
-
闪回 PDB
在多租户容器数据库(CDB)中,可以在不影响其他PDB的情况下回滚可插入数据库(PDB)。您还可以创建一个PDB恢复点,并将PDB回滚到这个恢复点,而不影响其他PDB。
-
闪回表
您可以使用单个 SQL 语句将表倒回到一个指定的时间点。您可以在数据库处于联机状态时,将表数据及其关联的索引、触发器和约束一起还原,以撤消对指定表的更改。闪回表不能解决磁盘破坏之类的物理损坏或数据段和索引不一致等问题。 -
闪回删除
您可以撤消 DROP TABLE 操作的影响。闪回删除比基于时间点的恢复之类的机制快得多,而且也不会导致最近事务丢失或停机时间。
另见:
-
《Oracle Database Backup and Recovery User’s Guide》了解闪回功能的更多信息
-
《Oracle Database SQL Language Reference》 和《Oracle Database Backup and Recovery Reference》了解 FLASHBACK DATABASE 语句
数据恢复顾问
使用Data Recovery Advisor诊断数据故障,为您的环境提供最佳修复选项,并执行和验证修复。
另见:
《Oracle Database Backup and Recovery User’s Guide》学习如何使用数据恢复顾问
块介质恢复
块损坏即一个数据块的格式不能被 Oracle 辨识,或其内容在内部不一致。如果仅几个块已损坏,则块恢复可能比数据文件恢复更为可取。
另见:
-
《Oracle Database Backup and Recovery User’s Guide》了解如何执行数据块介质恢复
数据文件恢复
与自动将更改应用于在线文件的实例恢复不同,介质恢复必须由用户调用,并且将归档重做日志文件应用于已还原的备份。数据文件介质恢复只可以对脱机数据文件、或未被任何实例打开的数据库中的数据文件进行操作。
基于是否应用了所有的更改,数据文件的介质恢复有不同的情况:
-
完全恢复
完全恢复将归档和联机日志中所包含的所有重做更改应用于备份。通常,您在介质故障损坏了数据文件或控制文件之后,执行完整的介质恢复。您可以对数据库、表空间或数据文件执行完全恢复。 -
不完全恢复
不完全恢复,也称为基于时间点的数据库恢复,会导致一个非当前的数据库版本。在这种情况下,您没有应用已还原备份之后生成的所有重做。通常,在发生了用户错误,而又不能使用闪回数据库来解决时,你可以执行基于时间点的数据库恢复。要执行不完全恢复,必须从某个你所要恢复到的目标时间之前创建的备份中还原所有数据文件,并在完成恢复后,使用 RESETLOGS 选项打开数据库。重置日志会创建一个新的从 1 开始的日志序列流。表空间时间点恢复 (TSPITR) 功能允许您将一个或多个表空间恢复到早于数据库的其余部分中的某个时间点。
零数据丢失恢复设备
云级零数据丢失恢复设备(通常称为恢复设备)是一个工程系统,它可以显著降低企业中所有Oracle数据库的数据丢失和备份开销。
与RMAN集成后,该恢复设备使用云规模、容错硬件和存储为大量数据库部署集中备份和恢复策略。恢复设备不断验证备份的可恢复性。
恢复设备的优点
集中式恢复设备执行大多数数据库备份和恢复处理,从而提高备份的存储利用率、性能和可管理性。
主要好处如下:
-
消除数据丢失
使用以下技术,恢复设备消除了数据中心中大多数数据库所经历的数据丢失,使用技术如下:
-
从受保护数据库的SGA到恢复设备的重做更改的连续传输,称为实时重做传输
-
复制到远程恢复设备
-
由集中恢复设备进行的自动磁带备份
-
端到端数据库块验证
-
-
最小的备份开销
通过将工作转移到恢复设备来最小化数据库服务器上的备份开销,恢复设备管理统一磁盘池中多个数据库的备份。RMAN增量永久备份策略涉及将初始级别 0 备份到恢复设备,随后的所有增量备份都在级别1。通过将 0 级备份和 1 级备份结合起来,恢复设备创建一个虚拟的完全备份。恢复设备不断地在块级压缩、重复删除和验证备份。
-
改善端到端数据保护可视性
Cloud Control 为恢复设备管理的备份生命周期提供完整的端到端视图,从启动 RMAN 备份到将备份存储在磁盘、磁带或复制到下游恢复设备。安装 Enterprise Manager for Zero Data Loss Recovery Appliance 插件(恢复设备插件)可以进行监视和管理。
-
云级别的保护
恢复设备可扩展到支持数十、数百或数千个数据库。架构的主要组成部分如下:
-
恢复设备通过保护策略简化管理,保护策略为与策略关联的每个数据库定义一个强制的恢复窗口目标。保护策略通过将数据库分组到具有共享特征的层来提高可管理性。
-
使用保护策略,恢复设备根据每个受保护数据库的恢复窗口目标管理备份存储空间。这种面向数据库的细粒度空间管理方法不需要像第三方设备那样在存储卷级别管理空间。
-
通过以简单的模块化方式添加计算和存储资源,恢复设备可以伸缩,以适应备份流量、存储使用和数据库数量的增加。
-
恢复设备环境
受保护的数据库是将数据备份到恢复设备的客户机数据库。
下图显示了一个示例环境,其中包括六个受保护的数据库和两个恢复设备。每个数据库都使用零数据丢失恢复设备备份模块(恢复设备备份模块)进行备份。这个模块是oracle提供的SBT库,RMAN 使用它将备份通过网络传输到恢复设备。
位于每个恢复设备上的恢复设备元数据数据库,管理存储在恢复目录中的元数据。所有发送备份到恢复设备的受保护数据库都必须使用此恢复目录。备份位于恢复设备存储位置,这是一组 Oracle ASM 磁盘组。
管理员使用 Cloud Control 来管理和监视环境。Cloud Control 为每个数据库提供了整个备份生命周期的“单窗格”视图,备份备份是位于磁盘、磁带、还是其他恢复设备上。
另见:
《Zero Data Loss Recovery Appliance Administrator's Guide》以获得对该产品的全面介绍
内存管理
图 18-5 显示内存管理选项的决策树。以下各节说明详细信息的选项。
另见:
"Memory Architecture"了解 SGA 和 PGA 的更多信息
自动内存管理
SGA 可以包含内存列存储(IM 列存储)或 memoptimize 池,两者都是可选的。无论使用哪种内存管理方法,都要使用 INMEMORY_SIZE 初始化参数来调整 IM 列存储的大小,使用 MEMOPTIMIZE_POOL_SIZE 初始化参数来调整 memoptimize 池的大小。内存列存储大小 memoptimize 池包含在内存目标中,但是不受自动调整大小算法的管理。例如,如果您将 MEMORY_TARGET 设置为 5 GB,将 INMEMORY_SIZE 设置为 1 GB,那么整个内存目标为 5 GB(而不是 6 GB),并且 INMEMORY_SIZE 始终为 1 GB。
另见:
SGA 共享内存管理
您可以手动控制SGA的大小,可以使用自动共享内存管理设置SGA大小,也可以手动调优SGA组件。
-
自动共享内存管理
此模式使您能够对 SGA 的大小执行更直接的控制,并且当自动内存管理处于禁用状态时它是缺省的。数据库将总 SGA 优化到这个目标大小, 并动态调整 SGA 组件的大小。如果您使用的是服务器参数文件,那么即使经历实例关闭, Oracle 数据库也能记住自动调整的组件大小。 -
手动共享内存管理
在此模式下,由你设置各个 SGA 组件的大小,并在使用过程中不断手动地调整个别 SGA 组件。您可以完全控制个别 SGA 组件大小。 当自动内存管理和自动共享内存管理都被禁用时,数据库会缺省使用这种模式。
另见:
-
《Oracle Database Administrator’s Guide》了解共享内存管理
-
我的Oracle支持笔记1269139.1了解更多关于手动模式下自动调整大小的信息:
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1269139.1
实例的 PGA 内存管理
PGA内存管理可以采用以下模式:
-
自动PGA内存管理
当自动内存管理被禁用,且 PGA_AGGREGATE_TARGET 设置为非零值时,数据库将使用自动 PGA 内存管理。在此模式下,由 PGA_AGGREGATE_TARGET 指定实例 PGA 的目标大小。数据库则将实例 PGA 优化到这一目标大小,并动态调整各个 PGA 的大小。如果您未显式设置一个目标大小, 则数据库将自动配置一个合理的默认值。PGA_AGGREGATE_LIMIT 初始化参数动态地为 PGA 内存设置一个实例范围的硬限制。因为参数响应不断变化的内存条件,所以不需要显式地设置参数值。默认情况下,PGA_AGGREGATE_LIMIT 设置为以下较大的值:
-
2 GB
-
PGA_AGGREGATE_TARGET初始化参数设置的200%
-
(进程初始化参数设置值)* 3 MB
后台进程定期将 PGA 大小与 PGA_AGGREGATE_LIMIT 设置的限制进行比较。如果达到或超过此限制,则此进程将使用最不可调优的 PGA 内存终止对会话的调用。如果这些会话仍然没有释放足够的内存,那么它们也将被终止。
-
-
手动 PGA 内存管理
当自动内存管理被禁用,且 PGA_AGGREGATE_TARGET 设置为 0 时,数据库将默认为手动 PGA 管理。以前版本的 Oracle 数据库要求 DBA 为每种类型的 SQL 操作(例如,排序或哈希联接) 手动指定最大工作区大小。这种技术被证明是非常困难的,因为工作负荷总是在变化。虽然 Oracle 数据库支持手动 PGA 内存管理方法,但 Oracle强烈建议使用自动内存管理。
另见:
《Oracle Database Performance Tuning Guide》了解 PGA 内存管理
内存管理方法总结
内存管理可以是自动的,也可以是手动的。
下表包括INMEMORY_SIZE初始化参数和MEMOPTIMIZE_POOL_SIZE初始化参数。两者都控制可选的内存区域。
表 18-3 内存管理方法
实例 | SGA | PGA | 描述 | 初始化参数 |
---|---|---|---|---|
Auto | n/a | n/a |
数据库基于单个实例目标大小,来优化实例的大小。
| 你设置:
|
n/a | Auto | Auto |
数据库基于一个 SGA目标大小,来自动优化 SGA 的大小。
数据库基于一个 PGA目标大小,来自动优化 PGA 的大小。
| 你设置:
数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您可以手动设置此参数。 |
n/a | Auto | Manual |
数据库基于一个 SGA目标大小,来自动优化 SGA 的大小。
您可以手动控制 PGA,设置每种类型的 SQL 操作的最大工作区大小。
| 你设置:
|
n/a | Manual | Auto |
你可以通过设置单个组件大小,手动控制 SGA。
数据库基于一个 PGA 目标大小,来自动优化 PGA 的大小。
| 你设置:
数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您可以手动设置此参数。 |
n/a | Manual | Manual |
您必须手动配置各个 SGA 组件的大小。
您可以手动控制 PGA,设置每种类型的 SQL 操作的最大工
作区大小。
| 您必须手动配置 SGA 组件大小。你设置:
|
另见:
《Oracle Database Administrator’s Guide》因为自动内存管理不是在所有平台上都可用
资源管理与任务调度
Oracle Database 提供了一些工具来帮助您管理资源和调度任务,以减少对用户的影响。
数据库资源管理器
Oracle 数据库资源管理器(资源管理器)提供对分配给用户帐户、应用程序和服务的数据库资源的细粒度控制。资源管理器主要扮演一个看门人的角色,减慢一些作业的运行速度,这样其他作业就可以运行得更快。
DBMS_RESOURCE_MANAGER PL/SQL包解决了许多操作系统无法很好管理的资源分配问题,包括:
-
开销过多
-
调度效率低
-
资源分配不合理
-
无法管理特定于数据库的资源
资源管理器通过给予数据库在硬件资源分配方面更多的控制,以及数据库内工作的优先级。你可以基于会话属性将会话分组,然后将资源分配到这些组,以优化硬件利用率。可以使用资源管理器设置PDB内存消耗的限制。
资源管理器可以解决的一个问题是失控查询,它可以使用SQL monitor进行监视。资源管理器使您能够指定阈值来标识和响应失控的SQL语句。例如,可以为使用者组中的每个前台进程指定 CPU 时间、运行时间、物理或逻辑 I/O 和 PGA 使用阈值。作为响应,资源管理器可以切换到较低优先级的使用者组,终止SQL语句,或者记录阈值冲突。
另见:
-
《Oracle Database Administrator's Guide》有关使用资源管理器的信息
-
《Oracle Database PL/SQL Packages and Types Reference》了解如何使用DBMS_RESOURCE_MANAGER PL/SQL包
Oracle 调度器
-
基于时间或事件安排作业执行
-
以一种符合您的业务需求的方式来安排作业处理
-
管理和监控作业
-
在集群环境中执行和管理作业
性能诊断和调优
常见问题包括:
-
CPU 瓶颈
-
内存结构大小不足
-
I/O 容量问题
-
效率低下或高负载的 SQL 语句
-
优化 SQL 语句之后,意外的性能退化
-
并发和争用问题
-
数据库配置问题
总的优化目标通常是缩短响应时间、提高吞吐量、或二者兼备。一个具体的、可测量的目标可能是:"将指定的 SELECT 语句的响应时间减少到 5 秒以下"。这一目标是否可以实现取决于一些 DBA 可能或不能控制的因素。一般情况下,调整是通过尽可能以最有效的方式使用数据库资源,以实现具体、可测量的和可实现的优化目标而所作的努力。
-
执行优化前准备
-
定期地、主动地调整数据库
-
当用户报告性能问题时,反应性地优化数据库
-
确定、调整、并优化高负载的 SQL 语句
另见:
《Oracle Database 2 Day + Performance Tuning Guide》和《Oracle Database SQL Tuning Guide》了解如何实现 Oracle 性能方法
数据库自我监控
自动工作负载存储库(AWR)
自动工作负载存储库 (AWR) 是一个历史性能数据的存储库,其中包括针对系统、会话、单个 SQL 语句、段和服务的累积统计信息。
自动数据库诊断监视器(ADDM)
通过使用 AWR (Automatic Workload Repository) 中捕获的统计信息,ADDM 自动、主动地诊断数据库的性能并确定如何解决已发现的问题。您也可以手动运行 ADDM。
自动数据库诊断监视器(ADDM)是 Oracle 数据库中内置的自我诊断顾问。
活动会话历史(ASH)
活动会话历史 (ASH) 每秒对活动的数据库会话进行采样,并将样本数据写入内存和持久性存储。 ASH 是数据库自我管理框架的一个组成部分, 对于诊断性能问题很有用。
-
分析未能被 Automatic Database Diagnostic Monitor (ADDM) 发现的短暂性能问题
- 对特定范围和特定目标,按各种维度或其组合进行性能分析,如时间、会话、模块、动作或 SQL ID 等
应用程序与 SQL 优化
Oracle 数据库完全自动化 SQL 调整过程。
解释计划的声明
EXPLAIN PLAN语句等工具使您能够查看优化器选择的执行计划。
EXPLAIN PLAN 显示指定 SQL 查询的查询计划(如果它现在在当前会话中执行)。其他工具包括 Oracle Enterprise Manager 和 SQL*Plus AUTOTRACE 命令。
另见:
Optimizer Statistics Advisor
Optimizer Statistics Advisor 是一种诊断软件,它分析您当前如何收集统计信息、现有统计信息收集作业的有效性以及收集的统计信息的质量。使用与自动数据库诊断监视器(ADDM)、SQL Performance Analyzer 和其他 Advisor 相同的 Advisor 框架。
Optimizer Statistics Advisor 提供以下优势,超过传统的方法,它依赖于最佳实践:
-
提供易于理解的报告
-
提供脚本来实现必要的修复,而不需要更改应用程序代码
-
每天在维护窗口中运行一次名为 AUTO_STATS_ADVISOR_TASK 的预定义任务
-
在 DBMS_STATS 包中提供一个 API,使您能够手动创建和运行任务,在数据字典视图中存储发现和建议,为任务生成报告,并在必要时实现更正
-
与现有工具集成,如 Oracle Enterprise Manager (Enterprise Manager)
Optimizer Statistics Advisor 维护规则,这些规则是 oracle 提供的标准,Advisor 根据这些标准执行检查。这些规则包含基于当前特性集的 Oracle 最佳实践。如果最佳实践随着版本的不同而变化,那么 Optimizer Statistics Advisor 规则也会发生变化。通过这种方式,Advisor 总是提供最新的建议。
Optimizer Statistics Advisor 检查统计收集过程,然后生成一份关于违反规则的调查结果报告。如果 Advisor 提出建议,并且根据这些建议提出操作,那么您可以自动实现这些操作,或者生成可编辑的、可执行的PL/SQL脚本。
Advisor 任务在维护窗口中自动运行,但也可以按需运行。
另见:
-
《Oracle Database SQL Tuning Guide》了解有关 Optimizer Statistics Advisor 的更多信息
-
《Oracle Database PL/SQL Packages and Types Reference》了解 DBMS_STATS 包
SQL 优化顾问
用于自动SQL调优的接口是SQL 优化顾问,它在系统维护窗口期间作为一个维护任务自动运行。
SQL 优化顾问建议分为以下几类:
-
统计分析
-
SQL 概要
-
访问路径分析
-
SQL 结构分析
SQL Access Advisor
使用 SQL Access Advisor 帮助您分析SQL查询,并确定优化模式对象或调优查询的方法。
您可以使用向导或 DBMS_ADVISOR 包从 Enterprise Manager 运行 SQL Access Advisor。DBMS_ADVISOR 包含了一组可从任何 PL/SQL 程序调用的分析和建议函数和过程。
SQL计划管理
通过使用SQL计划管理来管理SQL执行计划,仅执行测试和验证的计划。
SQL计划管理是一种预防性机制,它使优化器能够自动管理执行计划,确保数据库只使用经过验证的计划。该机制可以构建 SQL 计划基线,这是一组可重复 SQL 语句的一个或多个可接受计划。基线的效果是优化器将其选择限制在基线中已验证的计划中。
从 Oracle Database 12c 开始,数据库可以使用自适应SPM。SPM Evolve Advisor 每天在计划维护窗口中运行,对所有未接受的计划进行排序,然后在窗口中执行尽可能多的计划的测试执行。SPM Evolve Advisor 在 SQL 计划基线中选择成本最低的可接受计划,与每个未接受的计划进行比较。如果未接受的计划比现有的已接受的计划执行得足够好,则 Advisor 将接受该计划。如果没有,Advisor 将该计划视为不接受,并更新最后一个经过验证的日期。
另见: