Oracle 19c Concepts(18):Concepts for Database Administrators

2023-10-22 00:38

本文主要是介绍Oracle 19c Concepts(18):Concepts for Database Administrators,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库管理员的职责

数据库管理员 (DBA) 的主要责任是向用户提供企业数据。

DBA 必须与开发人员紧密合作,确保他们的应用程序有效利用了的数据库,并与系统管理员紧密合作,以确保物理资源足够且被高效地使用。

Oracle 数据库管理员负责了解 Oracle 数据库体系结构和数据库的工作方式。数据库管理员可能需要执行下列任务:

  • 安装、 升级、 和修补 Oracle 数据库软件

  • 设计数据库, 包括确定需求、 创建逻辑设计 (概念模型) 、 和物理数据库设计

  • 创建 Oracle 数据库

  • 开发和测试备份和恢复策略,定期备份 Oracle 数据库,并在发生故障的情况下恢复它们

  • 配置网络环境,使客户端能连接到数据库

  • 启动和关闭数据库

  • 管理数据库存储

  • 管理用户和安全

  • 管理数据库对象, 如表、 索引、 和视图

  • 监视和优化数据库性能

  • 针对任何严重的数据库错误,进行调查、 收集诊断数据、并报告给Oracle 支持服务

  • 评价和测试新的数据库功能

用户的类型及其角色和责任取决于数据库环境。 一个小型数据库可能会只有一个 DBA。 而一个非常大的数据库可能会在几个专家之间划分 DBA 职责,例如安全人员、 备份操作员、 和应用程序管理员等。

另见:

  • 《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 以交互方式或以批处理方式生成报表,并将结果输出到文本文件、屏幕、或在互联网上浏览的 HTML 文件。您还可以使用动态 HTML 输出工具生成报表。

另见:

《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 连接管理器上执行基本的管理功能。另外,您可以查看和更改参数设置。

另见:

  • "The Oracle Net Listener"

  • "Overview of Oracle Net Services Architecture"

  • 《Oracle Database Net Services Administrator's Guide》了解 Oracle 网络服务工具的更多信息

数据移动和分析工具

Oracle 数据库包括了几个实用程序来辅助数据移动和分析。

例如,您可以使用数据库实用程序:

表 18-2 数据移动和分析任务

任务 详见

将数据从操作系统文件加载到 Oracle 数据库表

"SQL*Loader"

将数据和元数据从一个数据库移动到另一个数据库

"Oracle Data Pump Export and Import"

通过 SQL 接口查询重做日志文件

"Oracle LogMiner"

管理 Oracle 数据库诊断数据

"ADR Command Interpreter (ADRCI)"

其他任务,包括使用 DBVERIFY 对脱机数据库或数据文件执行物理数据结构完整性检查,或使用 DBNEWID 实用程序更改一个操作数据库的数据库标识符 (DBID) 或数据库名称。

另见:

  • "Backup and Recovery"了解与备份和恢复相关的工具

  • 《Oracle Database Utilities》了解 DBVERIFY 和 DBNEWID

SQL*Loader

SQL*Loader 将数据从称为数据文件的外部文件加载到数据库表中。它有一个功能强大的数据分析引擎, 对数据文件中的数据格式几乎没什么限制。

您可以使用 SQL*加载器执行如下任务:

  • 将数据从多个数据文件加载到多个表

    您将要加载的数据存储在 SQL*加载器的数据文件中。 SQL*加载器控制文件是一个文本文件,包含一些 DDL 指令,被 SQL * 加载器用来确定在哪里可以找到数据、如何对数据进行分析和解释、将数据插入到何处等。

  • 控制加载操作的各个方面

    例如,您可以有选择地加载数据、指定数据字符集、使用 SQL 函数操作数据、在指定列中生成唯一的连续键值等等。您还可以生成复杂的错误报告。

  • 使用常规路径、直接路径或外部表加载

    常规路径加载通过执行 INSERT SQL 语句来填充表。相比之下,直接路径加载通过格式化数据块和将他们直接写入数据库文件,消除了很多数据库开销。直接写入对高水位(HWM)以上的块进行操作,直接写入磁盘,从而绕过了数据库缓冲区高速缓存。直接读取操作直接将数据从磁盘读入 PGA,同样绕过了缓冲区高速缓存。

    外部表加载为数据文件中包含的数据创建一个外部表。load 执行 INSERT 语句将数据文件中的数据插入到目标表中。

一个典型的 SQL*加载器会话,以一个 SQL*加载器控制文件和一个或多个数据文件作为输入。其输出是一个 Oracle 数据库、日志文件、一个不正确的文件,和一个可能会有的丢弃文件。下图显示了一个典型的 SQL*加载器会话。

图 18-1 SQL*Loader 会话


Description of "Figure 18-1 SQL*Loader Session"

您还可以使用 SQL*Loader express 模式,当您在 SQL*Loader 命令中指定表参数时,该模式将被激活,如下面的示例所示:

% sqlldr hr table=employees

不解析控制文件,这使得 SQL*Loader 更容易使用。SQL*Loader 使用表列定义来确定输入数据类型,而不是解析控制文件。SQL*Loader 做了几个默认假设,包括字符集、字段分隔符以及数据、日志和坏文件的名称。您可以使用命令行参数覆盖许多缺省值。

另见:

  • "Overview of External Tables"

  • "Character Sets"

  • 《Oracle Database Utilities》了解 SQL*Loader

Oracle 数据泵导出和导入

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 数据泵基础设施。

图 18-2 Oracle 数据泵体系结构


Description of "Figure 18-2 Oracle Data Pump Architecture"

另见:

  • "Overview of External Tables"

  • "PL/SQL Packages"

  • 《Oracle Database Utilities》关于 Oracle 数据泵概述

  • 《Oracle Database PL/SQL Packages and Types Reference》关于 DBMS_DATAPUMP 和 DBMS_METADATA 的说明

Oracle LogMiner

Oracle LogMiner 使您能够通过 SQL 接口查询重做日志文件。

包含在重做日志文件中的数据的潜在用途有:

  • 查明某个数据库逻辑损坏是何时开始发生的,如一些应用程序级别的错误

  • 检测用户错误

  • 确定你必须要执行哪些操作,以进行事务级别的细粒度恢复

  • 使用趋势分析,以确定哪些表上的更新和插入最多

  • 通过 LogMiner 针对重做日志文件全面的关系接口,分析系统行为和审核数据库使用

LogMiner 可通过命令行界面或属于企业管理器的 Oracle LogMiner 查看器 GUI 来访问。

另见:

《Oracle Database Utilities》了解 LogMiner 的更多信息

ADR 命令解释器 (ADRCI)

ADRCI 是一个命令行实用程序,使您可以调查问题、查看健康检查报告、和将首次故障诊断数据打包并上传到 Oracle 支持。

你也可以使用此实用程序查看自动诊断存储库 (ADR)中的跟踪文件的名称,并查看警报日志。ADRCI 有一个丰富的命令集,您可以交互方式或在脚本中使用。

另见:

  • "Automatic Diagnostic Repository"

  • 《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 体系结构
RMAN 备份与 Oracle 安全备份都可从命令行和从 Enterprise Manager Cloud Control (Cloud Control) 中访问。 

Cloud Control 为 RMAN 提供了一个图形化的前端和调度工具。输入作业参数,然后指定作业调度。Cloud Control 在指定的时间或指定的重复间隔运行 RMAN,执行备份和恢复操作。Cloud Control 通过一组向导提供对RMAN的访问。这些向导将根据对数据库、可用备份和数据恢复目标的分析,引导您完成各种恢复过程。

通过使用 Cloud Control,您可以执行本文档中描述的更简单的恢复和恢复场景。您还可以使用更复杂的恢复和恢复技术,如时间点恢复和Oracle闪回操作,这些技术允许有效地修复媒体故障和用户错误。使用 Cloud Control 通常比 RMAN 命令行客户机更简单。

下图显示了 RMAN 的基本体系结构。RMAN 客户可通过企业管理器,使用在目标数据库上的服务器会话将数据备份到磁盘或磁带。RMAN 可以将备份元数据更新到一个外部恢复目录。

图 18-3 RMAN 体系结构


Description of "Figure 18-3 RMAN Architecture"

无论你使用哪种备份和恢复技术,Oracle 都建议您配置一个快速恢复区。它可能是一个数据库管理的目录、文件系统或 Oracle ASM 磁盘组,用于集中化管理备份和恢复相关文件,包括活动控制文件、联机和归档重做日志文件和备份。Oracle 数据库恢复组件与快速恢复区进行交互,以确保数据库的可恢复性。

另见:

  • 《Oracle Database 2 Day DBA》了解如何使用企业管理器执行备份和恢复

  • 《Oracle Database Administrator’s Guide》关于备份和恢复解决方案概述

数据库备份

数据库备份可以是物理的或逻辑的。

物理备份是备份和恢复策略的主要关注目标,它是物理数据库文件的副本。您可以使用 RMAN 或操作系统实用程序进行物理备份。

相比之下,逻辑备份则包含逻辑数据(如表和存储过程)。可以使用 Oracle数据库实用程序(如数据泵)提取逻辑数据,并将其存储在一个二进制文件中。逻辑备份可以作为物理备份的补充。

物理备份的粒度更大,且可传输性有限,但速度非常快。逻辑备份粒度更细且具有完全的可传输性,但比物理备份速度更慢。

另见:

《Oracle Database Backup and Recovery User’s Guide》了解物理和逻辑备份

整体和部分数据库备份

整体数据库备份,即是在数据库中的每个数据文件的备份,再加上控制文件备份。 整体数据库备份是最常见的备份。

部分数据库备份包含数据库的一个子集:个别表空间或数据文件。表空间备份是一个或多个表空间中所有数据文件的备份。无论表空间备份是一致的或是不一致的,都只仅当数据库运行在归档模式下才是有效的,因为需要重做来使表空间恢复到与数据库的其余部分一致。

一致和不一致的备份

整体数据库备份可能是一致的或不一致的。

对一个一致的备份,所有的读/写数据文件和控制文件都具有相同的检查点 SCN,以保证这些文件包含的到该 SCN 为止的所有更改。这种类型的备份在还原后不需要恢复。

一致备份仅在数据库一致关闭后才有可能进行,并且这也是运行在非归档模式下数据库的唯一有效的备份选项。其他备份选项需要介质恢复以保证其一致性,而这在不应用归档重做日志文件的情况下是不可能的。

在一个不一致的备份中,读/写数据文件和控制文件不保证有相同的检查点 SCN,因此可能会丢失更改。由于进行联机备份时可以修改数据文件,因此联机备份不一定是一致的。

不一致的备份提供了更优异的可用性,因为你不必关闭数据库就可以进行能充分保护数据库的备份。如果数据库在归档模式下运行,并且您备份了归档重做日志和数据文件,则这种不一致的备份完全可以作为备份和恢复策略的基础。

另见:

  • "Shutdown Modes"

  • 《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 工作量,且仅对数据库可用性造成最小的影响,就可以将您的数据库返回到所需的状态。

通常,你可能有多种方法来解决上述问题。本节总结了其中的部分解决方案。

另见:

  • "Human Errors"

  • 《Oracle Database Backup and Recovery User’s Guide》关于数据修复的概念

Oracle 闪回技术

Oracle 数据库提供了一组称为 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 数据库的可管理性和可靠性,并有助于减少恢复时间。

数据库包括一个用于运行诊断检查的健康监视器的框架。检查器是注册到健康监视器的诊断操作或过程,用于评估数据库或其组件的运行状况。健康评估也被称为数据完整性检查,可按被动或主动方式调用。

故障是由数据完整性检查检测到的持久性数据损坏。故障通常是被动检测到的。涉及损坏数据的数据库操作将导致一个错误,这将自动调用一个数据完整性检查,以在数据库中搜索与此错误相关的故障。如果故障被诊断出来,则数据库将它们记录到自动诊断存储库(ADR)中。

当数据库检测到故障并将其存储在 ADR 中后,数据恢复顾问会自动确定最佳的修复选项和他们对数据库的影响。通常,数据恢复顾问为每个故障或每组故障同时生成手动和自动修复选项。

在给出自动修复选项之前,数据恢复顾问会验证针对该特定的环境和为完成建议的修复所需的介质组件的可用性。如果选择自动修复,则 Oracle 数据库将为你执行它。 若数据恢复顾问工具验证修复成功,并关闭相应的故障。

另见:

《Oracle Database Backup and Recovery User’s Guide》学习如何使用数据恢复顾问

块介质恢复

数据块介质恢复是一种当数据文件处于联机状态时, 对损坏的数据块进行还原和恢复的技术。

块损坏即一个数据块的格式不能被 Oracle 辨识,或其内容在内部不一致。如果仅几个块已损坏,则块恢复可能比数据文件恢复更为可取。

另见:

  • "Data Corruption"

  • 《Oracle Database Backup and Recovery User’s Guide》了解如何执行数据块介质恢复

数据文件恢复

数据文件恢复用于修复已丢失或损坏的当前数据文件或控制文件。它也可以恢复表空间由于未使用 OFFLINE NORMAL 选项时,在离线期间丢失的更改。

当您还原了数据文件或控制文件的备份或由于未使用 OFFLINE NORMAL 选项而脱机的数据文件时,有必要进行介质恢复。如果处于联机状态的数据文件需要介质恢复,则数据库不能处于打开状态;需要介质恢复的数据文件必须在介质恢复完成之后才能将其联机。

还原数据文件或控制文件的物理备份,是为了重建它并使其可用于 Oracle数据库。恢复备份就是应用归档重做日志文件,从而重建丢失的更改。RMAN 也可以使用增量备份来恢复数据文件,它仅包含自前一次备份后被修改的块。

与自动将更改应用于在线文件的实例恢复不同,介质恢复必须由用户调用,并且将归档重做日志文件应用于已还原的备份。数据文件介质恢复只可以对脱机数据文件、或未被任何实例打开的数据库中的数据文件进行操作。

基于是否应用了所有的更改,数据文件的介质恢复有不同的情况:

  • 完全恢复

    完全恢复将归档和联机日志中所包含的所有重做更改应用于备份。通常,您在介质故障损坏了数据文件或控制文件之后,执行完整的介质恢复。您可以对数据库、表空间或数据文件执行完全恢复。

  • 不完全恢复

    不完全恢复,也称为基于时间点的数据库恢复,会导致一个非当前的数据库版本。在这种情况下,您没有应用已还原备份之后生成的所有重做。通常,在发生了用户错误,而又不能使用闪回数据库来解决时,你可以执行基于时间点的数据库恢复。

    要执行不完全恢复,必须从某个你所要恢复到的目标时间之前创建的备份中还原所有数据文件,并在完成恢复后,使用 RESETLOGS 选项打开数据库。重置日志会创建一个新的从 1 开始的日志序列流。

    表空间时间点恢复 (TSPITR) 功能允许您将一个或多个表空间恢复到早于数据库的其余部分中的某个时间点。

另见:

  • "Overview of Instance Recovery"

  • 《Oracle Database Backup and Recovery User’s Guide》关于介质恢复的概念

零数据丢失恢复设备

云级零数据丢失恢复设备(通常称为恢复设备)是一个工程系统,它可以显著降低企业中所有Oracle数据库的数据丢失和备份开销。

与RMAN集成后,该恢复设备使用云规模、容错硬件和存储为大量数据库部署集中备份和恢复策略。恢复设备不断验证备份的可恢复性。

恢复设备的优点

集中式恢复设备执行大多数数据库备份和恢复处理,从而提高备份的存储利用率、性能和可管理性。

主要好处如下:

  • 消除数据丢失

    使用以下技术,恢复设备消除了数据中心中大多数数据库所经历的数据丢失,使用技术如下:

    • 从受保护数据库的SGA到恢复设备的重做更改的连续传输,称为实时重做传输

    • 复制到远程恢复设备

    • 由集中恢复设备进行的自动磁带备份

    • 端到端数据库块验证

  • 最小的备份开销

    通过将工作转移到恢复设备来最小化数据库服务器上的备份开销,恢复设备管理统一磁盘池中多个数据库的备份。RMAN增量永久备份策略涉及将初始级别 0 备份到恢复设备,随后的所有增量备份都在级别1。通过将 0 级备份和 1 级备份结合起来,恢复设备创建一个虚拟的完全备份。恢复设备不断地在块级压缩、重复删除和验证备份。

  • 改善端到端数据保护可视性

    Cloud Control 为恢复设备管理的备份生命周期提供完整的端到端视图,从启动 RMAN 备份到将备份存储在磁盘、磁带或复制到下游恢复设备。安装 Enterprise Manager for Zero Data Loss Recovery Appliance 插件(恢复设备插件)可以进行监视和管理。

  • 云级别的保护

    恢复设备可扩展到支持数十、数百或数千个数据库。架构的主要组成部分如下:

    • 恢复设备通过保护策略简化管理,保护策略为与策略关联的每个数据库定义一个强制的恢复窗口目标。保护策略通过将数据库分组到具有共享特征的层来提高可管理性。

    • 使用保护策略,恢复设备根据每个受保护数据库的恢复窗口目标管理备份存储空间。这种面向数据库的细粒度空间管理方法不需要像第三方设备那样在存储卷级别管理空间。

    • 通过以简单的模块化方式添加计算和存储资源,恢复设备可以伸缩,以适应备份流量、存储使用和数据库数量的增加。

恢复设备环境

受保护的数据库是将数据备份到恢复设备的客户机数据库。

下图显示了一个示例环境,其中包括六个受保护的数据库和两个恢复设备。每个数据库都使用零数据丢失恢复设备备份模块(恢复设备备份模块)进行备份。这个模块是oracle提供的SBT库,RMAN 使用它将备份通过网络传输到恢复设备。

图 18-4 恢复设备环境


Description of "Figure 18-4 Recovery Appliance Environment"

位于每个恢复设备上的恢复设备元数据数据库,管理存储在恢复目录中的元数据。所有发送备份到恢复设备的受保护数据库都必须使用此恢复目录。备份位于恢复设备存储位置,这是一组 Oracle ASM 磁盘组。

管理员使用 Cloud Control 来管理和监视环境。Cloud Control 为每个数据库提供了整个备份生命周期的“单窗格”视图,备份备份是位于磁盘、磁带、还是其他恢复设备上。

另见:

《Zero Data Loss Recovery Appliance Administrator's Guide》以获得对该产品的全面介绍

内存管理

内存管理涉及当数据库的需求变更时,为 Oracle 实例内存结构维护最佳大小。由初始化参数设置确定如何管理实例的 SGA 和 PGA 内存。

图 18-5 显示内存管理选项的决策树。以下各节说明详细信息的选项。

图 18-5 内存管理方法


Description of "Figure 18-5 Memory Management Methods"

另见:

"Memory Architecture"了解 SGA 和 PGA 的更多信息

自动内存管理

在自动内存管理中,Oracle 数据库完全自动地管理实例的 SGA 和 PGA 内存。此方法最简单,并被 Oracle 强烈建议。

唯一需要用户指定控制项是目标内存大小初始化参数 (MEMORY_TARGET)和可选的最大内存大小初始化参数 (MEMORY_MAX_TARGET)。Oracle 数据库优化目标内存大小,根据需要在实例的 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。

下图显示了一个数据库,它有时处理由在线用户提交的作业,有时执行批处理作业。使用自动内存管理,数据库将基于正在运行哪种作业类型自动调整大池和数据库缓冲区高速缓存的大小。注意,该图形没有描述IM列存储或 memoptimize 区域。

图 18-6 自动内存管理


Description of "Figure 18-6 Automatic Memory Management"

如果使用 DBCA 创建您的数据库,并选择基本安装选项,则默认情况下将启用自动内存管理。

另见:

  • "In-Memory Area"

  • "Memoptimize Pool"

  • 《Oracle Database Administrator’s Guide》了解自动内存管理

SGA 共享内存管理

您可以手动控制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 内存管理
如果未启用自动内存管理,Oracle数据库则会使用自动或手动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 内存管理

内存管理方法总结

内存管理可以是自动的,也可以是手动的。

如果您不启用自动内存管理,则你必须为 SGA 和 PGA 分别配置一种内存管理方法。

下表包括INMEMORY_SIZE初始化参数和MEMOPTIMIZE_POOL_SIZE初始化参数。两者都控制可选的内存区域。

表 18-3 内存管理方法

实例 SGA PGA 描述 初始化参数

Auto

n/a

n/a

数据库基于单个实例目标大小,来优化实例的大小。

你设置:

  • 数据库实例的总内存目标大小(MEMORY_TARGET)

  • 可选的数据库实例最大内存大小(MEMORY_MAX_TARGET)

  • SGA 中的 IM 列存储的可选大小(INMEMORY_SIZE)

n/a

Auto

Auto

数据库基于一个 SGA目标大小,来自动优化 SGA 的大小。

数据库基于一个 PGA目标大小,来自动优化 PGA 的大小。

你设置:

  • SGA 目标大小(SGA_TARGET)

  • 可选的 SGA 最大大小(SGA_MAX_SIZE)

  • SGA 中的 IM 列存储的可选大小(INMEMORY_SIZE)

  • SGA 中 memoptimize 池的可选大小(MEMOPTIMIZE_POOL_SIZE)

  • 实例 PGA 目标大小(PGA_AGGREGATE_TARGET)

数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您可以手动设置此参数。

n/a

Auto

Manual

数据库基于一个 SGA目标大小,来自动优化 SGA 的大小。

您可以手动控制 PGA,设置每种类型的 SQL 操作的最大工作区大小。

你设置:

  • SGA 目标大小(SGA_TARGET)

  • 可选的 SGA 最大大小(SGA_MAX_SIZE)

  • SGA 中的 IM 列存储的可选大小(INMEMORY_SIZE)

  • SGA 中 memoptimize 池的可选大小(MEMOPTIMIZE_POOL_SIZE)

  • PGA 工作区参数, 如:SORT_AREA_SIZE、HASH_AREA_SIZE 和 BITMAP_MERGE_AREA_SIZE

n/a

Manual

Auto

你可以通过设置单个组件大小,手动控制 SGA。

数据库基于一个 PGA 目标大小,来自动优化 PGA 的大小。

你设置:

  • 共享池大小(SHARED_POOL_SIZE)

  • 缓冲区高速缓存大小(DB_CACHE_SIZE)

  • 大池大小(LARGE_POOL_SIZE)

  • Java 池大小(JAVA_POOL_SIZE)

  • SGA 中的 IM 列存储的可选大小(INMEMORY_SIZE)

  • SGA 中 memoptimize 池的可选大小(MEMOPTIMIZE_POOL_SIZE)

  • 实例 PGA 目标大小(PGA_AGGREGATE_TARGET)

数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您可以手动设置此参数。

n/a

Manual

Manual

您必须手动配置各个 SGA 组件的大小。

您可以手动控制 PGA,设置每种类型的 SQL 操作的最大工
作区大小。

您必须手动配置 SGA 组件大小。你设置:

  • 共享池大小(SHARED_POOL_SIZE)

  • 缓冲区高速缓存大小(DB_CACHE_SIZE)

  • 大池大小(LARGE_POOL_SIZE)

  • Java 池大小(JAVA_POOL_SIZE)

  • SGA 中的 IM 列存储的可选大小(INMEMORY_SIZE)

  • SGA 中 memoptimize 池的可选大小(MEMOPTIMIZE_POOL_SIZE)

  • PGA 工作区参数,如:SORT_AREA_SIZE、HASH_AREA_SIZE 和 BITMAP_MERGE_AREA_SIZE

另见:

《Oracle Database Administrator’s Guide》因为自动内存管理不是在所有平台上都可用

资源管理与任务调度

Oracle Database 提供了一些工具来帮助您管理资源和调度任务,以减少对用户的影响。

在一个有许多活动用户的数据库中,资源管理是数据库管理的一个重要组成部分。占用过多资源的会话可能会阻止其他会话进行工作。一个相关的问题是如何调度这些任务,以使他们在最合理的时间运行。Oracle 数据库提供了帮助解决这些问题的工具。

数据库资源管理器

Oracle 数据库资源管理器(资源管理器)提供对分配给用户帐户、应用程序和服务的数据库资源的细粒度控制。资源管理器主要扮演一个看门人的角色,减慢一些作业的运行速度,这样其他作业就可以运行得更快。

DBMS_RESOURCE_MANAGER PL/SQL包解决了许多操作系统无法很好管理的资源分配问题,包括:

  • 开销过多

  • 调度效率低

  • 资源分配不合理

  • 无法管理特定于数据库的资源

资源管理器通过给予数据库在硬件资源分配方面更多的控制,以及数据库内工作的优先级。你可以基于会话属性将会话分组,然后将资源分配到这些组,以优化硬件利用率。可以使用资源管理器设置PDB内存消耗的限制。

根据由数据库管理员指定的资源计划,资源被分配给各个用户。此计划指定如何在多个资源消费者组之间分配资源,资源消费者组是按所需资源对多个用户会话的分组。资源计划指令将资源消费者组与一项计划相关联,并指定如何向组分配资源。

图 18-7 显示了某组织的一个简单的资源计划,该组织在白天期间同时运行 OLTP 应用程序和报表应用程序。 当前的活动计划 DAYTIME, 在三个资源消费者组之间分配 CPU 资源。具体而言,OLTP 分配了 75%的 CPU 时间、REPORTS 分配了 15%、而 OTHER_GROUPS 得到剩下的 10%。

图 18-7 简单的资源计划


Description of "Figure 18-7 Simple Resource Plan"

资源管理器可以解决的一个问题是失控查询,它可以使用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 调度器

Oracle 调度器(调度器)使数据库管理员和应用程序开发人员能控制在数据库环境中的各项任务将在何时、 何地被运行。

调度器提供了复杂的企业调度功能,您可以使用它来:

  • 基于时间或事件安排作业执行

  • 以一种符合您的业务需求的方式来安排作业处理

  • 管理和监控作业

  • 在集群环境中执行和管理作业

程序对象(程序)包含调度器将要运行的命令的有关元数据,包括任何参数的默认值。计划对象(计划)包含有关运行的日期、时间、和重复模式的信息。作业对象(作业)将程序与计划相关联。通过指定程序、计划、和作业之间的关系,来定义在什么时候执行什么事情。

调度器是作为 DBMS_SCHEDULER PL/SQL 包中的一组函数和过程来实现的。可以使用此包或使用企业管理器来创建和操作各种计划器对象。因为计划器对象是标准的数据库对象,您可以通过系统和对象权限来控制对它们的访问。

图 18-8 显示了调度器的基本体系结构。作业表是所有作业的一个容器,每个数据库只有一个作业表。工作协调器后台进程根据需要自动启动和停止。当作业必须运行时,协调器会唤醒作业从属进程来执行作业。这些从属进程从作业表中收集元数据,并运行该作业。

图 18-8 调度器组件


Description of "Figure 18-8 Scheduler Components"

另见:

  • "Job Queue Processes (CJQ0 and Jnnn)"

  • 《Oracle Database Administrator’s Guide》了解调度器

性能诊断和调优

作为一个数据库管理员,您有责任对您的 Oracle 数据库的性能负责。通常,性能问题源自不可接受的响应时间(即完成指定的工作负荷的时间)或吞吐量(即在指定的时间内可以完成的工作量) 。

常见问题包括:

  • CPU 瓶颈

  • 内存结构大小不足

  • I/O 容量问题

  • 效率低下或高负载的 SQL 语句

  • 优化 SQL 语句之后,意外的性能退化

  • 并发和争用问题

  • 数据库配置问题

总的优化目标通常是缩短响应时间、提高吞吐量、或二者兼备。一个具体的、可测量的目标可能是:"将指定的 SELECT 语句的响应时间减少到 5 秒以下"。这一目标是否可以实现取决于一些 DBA 可能或不能控制的因素。一般情况下,调整是通过尽可能以最有效的方式使用数据库资源,以实现具体、可测量的和可实现的优化目标而所作的努力。

Oracle 性能方法基于查明和消除数据库中的瓶颈,并开发有效的 SQL 语句。应用 Oracle 性能方法涉及以下任务:

  • 执行优化前准备

  • 定期地、主动地调整数据库

  • 当用户报告性能问题时,反应性地优化数据库

  • 确定、调整、并优化高负载的 SQL 语句

本节介绍了包括各种顾问工具在内的 Oracle 数据库性能调优的各个重要方面。Oracle 数据库顾问就如何解决关键数据库管理难题提供了具体的建议,并涉及广泛的领域,包括空间、性能、撤消管理等。

另见:

《Oracle Database 2 Day + Performance Tuning Guide》《Oracle Database SQL Tuning Guide》了解如何实现 Oracle 性能方法

数据库自我监控

在数据库执行其常规操作期间会进行自我监控,以确保数据库能意识到发生的问题。Oracle 数据库可以发出一个服务器生成的警报,以通知您即将发生的问题。

当问题发生时,或数据与预期的度量值(如每秒物理读或 SQL 的响应时间) 不匹配时,将自动生成警报。度量是累积统计的变化率。服务器生成的警报可以基于用户指定的阈值级别,或由于发生了某个事件。

服务器生成的警报不只是确定了问题,而且有时也提供如何解决所报告问题的建议。例如,快速恢复区快要空间不足时发出的警报也包括应删除过时备份或添加额外磁盘空间的建议

另见:

《Oracle Database Administrator’s Guide》

自动工作负载存储库(AWR)

自动工作负载存储库 (AWR) 是一个历史性能数据的存储库,其中包括针对系统、会话、单个 SQL 语句、段和服务的累积统计信息。

AWR 统计信息是性能优化的基础。通过自动化收集用于问题检测和调整的数据库统计信息,AWR 可作为数据库自我管理的基础。

如下图所示,数据库将最近的 AWR 统计信息存储在 SGA 中。默认情况下,MMON 进程每个小时收集一次统计信息, 并创建一个 AWR 快照。快照是一组在特定时间捕获的
性能统计信息。数据库将快照写入 SYSAUX 表空间。AWR 会管理快照空间,根据一个可配置的快照保留策略来清除较旧的快照。

图 18-9 自动工作负载存储库 (AWR)


Description of "Figure 18-9 Automatic Workload Repository (AWR)"

AWR 基线是一组统计率的集合,通常当系统在某个运行良好的峰值负载期间时取得。您可以指定一对或某个范围的 AWR 快照作为基准。通过使用 AWR 报告来比较性能低下期间捕获的统计信息与基线之间的差异,可以诊断问题。

一个名为 AutoTask 的自动维护基础设施说明了 Oracle 数据库如何使用 AWR 来进行自我管理。通过分析 AWR, AutoTask 可以确定需要的维护任务,并在 Oracle 调度器维护窗口中安排运行他们。任务示例包括为优化器收集统计信息,和运行自动段顾问工具。

另见:

  • "Manageability Monitor Processes (MMON and MMNL)"

  • "The SYSAUX Tablespace"

  • 《Oracle Database Performance Tuning Guide》了解 AWR

  • 《Oracle Database Administrator’s Guide》了解如何管理自动维护任务

自动数据库诊断监视器(ADDM)

通过使用 AWR (Automatic Workload Repository) 中捕获的统计信息,ADDM 自动、主动地诊断数据库的性能并确定如何解决已发现的问题。您也可以手动运行 ADDM。

自动数据库诊断监视器(ADDM)是 Oracle 数据库中内置的自我诊断顾问。 

ADDM 对系统性能进行整体分析,将时间作为组件之间的共同要素。ADDM 标识 Oracle 数据库占用时间最长的区域。例如,数据库可能花费过多的时间等待可用数据库缓冲区。ADDM 向下钻取以发现问题的根本原因,而不是浮于表面现象,并报告此问题在总体上对 Oracle 数据库的影响。诊断过程中会出现很小的开销。

在许多情况下,ADDM 会提出推荐的解决方案,并量化预期的性能优势。例如,ADDM 可能会建议更改硬件、数据库配置、数据库模式或应用程序。如果采纳了某项建议,则 ADDM 将报告其时间收益。利用时间作为度量,使你能对问题或建议进行比较。

除了报告潜在的性能问题,ADDM 会记录数据库中不会造成问题的方面。若 I/O 和内存等子组件未对数据库性能造成显著影响,则它们在早期阶段就会从分类树中被剪除。 ADDM 列出这些子组件,以便您可以快速发现对这些方面执行操作不会有什么效果。

另见:

《Oracle Database 2 Day + Performance Tuning Guide》《Oracle Database Performance Tuning Guide》

活动会话历史(ASH)

活动会话历史 (ASH) 每秒对活动的数据库会话进行采样,并将样本数据写入内存和持久性存储。 ASH 是数据库自我管理框架的一个组成部分, 对于诊断性能问题很有用。

与 Automatic Workload Repository (AWR) 所收集的实例级统计信息不同,ASH 统计信息是在会话级别收集的。活动会话是正在使用 CPU,并且不在等待某个空闲等待类事件的会

可以使用企业管理器或 SQL 脚本来生成 ASH 报告,以收集该会话在指定的持续时间段内的统计信息。您可以使用 ASH 报告:

  • 分析未能被 Automatic Database Diagnostic Monitor (ADDM) 发现的短暂性能问题

  • 对特定范围和特定目标,按各种维度或其组合进行性能分析,如时间、会话、模块、动作或 SQL ID 等

例如,用户通知您数据库在下午 10: 00 至下午 10: 02 很慢,然而,2 分钟的性能下降只占 10: 00 至 11: 00 之间 AWR 快照时间间隔的一小部分,并不会出现 ADDM 查找结果中。ASH 报告可以帮助识别这种瞬态问题的根源。

另见:

《Oracle Database 2 Day + Performance Tuning Guide》《Oracle Database Performance Tuning Guide》

应用程序与 SQL 优化

Oracle 数据库完全自动化 SQL 调整过程。

ADDM 能标识消耗异常高系统资源从而导致性能问题的 SQL 语句。此外,AWR 自动捕获在 CPU 和共享内存消耗方面最高的 SQL 语句。高负荷 SQL 语句会被自动发现,并且需要不干预。

解释计划的声明

EXPLAIN PLAN语句等工具使您能够查看优化器选择的执行计划。

EXPLAIN PLAN 显示指定 SQL 查询的查询计划(如果它现在在当前会话中执行)。其他工具包括 Oracle Enterprise Manager 和 SQL*Plus AUTOTRACE 命令。

另见:

《Oracle Database SQL Language Reference》学习解释计划

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 结构分析

SQL 概要文件包含特定于 SQL 语句的更多统计信息,并使优化器生成一个更好的执行计划。实质上,SQL 概要文件是一种分析查询方法。访问路径和 SQL 结构分析对于优化正处于开发中的应用程序或自主开发的应用程序很有用。

SQL 优化顾问的主要好处是,其解决方案来自优化器而不是外部工具。因此,优化是由负责执行计划和 SQL 性能的数据库组件执行的。优化过程可以考虑 SQL 语句过去的执行统计信息,并自定义此语句的优化设置。

另见:

  • "Overview of the Optimizer"

  • 《Oracle Database 2 Day + Performance Tuning Guide》《Oracle Database SQL Tuning Guide》

SQL Access Advisor

使用 SQL Access Advisor 帮助您分析SQL查询,并确定优化模式对象或调优查询的方法。

SQL Access Advisor 对如何优化数据访问路径提供建议。具体来说,它建议如何通过分区、物化视图、索引和物化视图日志改进数据库性能。

分区和索引等模式对象对于优化复杂的数据密集型查询非常重要。但是,这些对象的创建和维护会非常耗时,且空间要求可能很大。SQL Access Advisor 可以通过为指定的工作负荷建议数据结构,来帮助实现性能目标。

您可以使用向导或 DBMS_ADVISOR 包从 Enterprise Manager 运行 SQL Access Advisor。DBMS_ADVISOR 包含了一组可从任何 PL/SQL 程序调用的分析和建议函数和过程。

另见:

《Oracle Database 2 Day + Performance Tuning Guide》《Oracle Database SQL Tuning Guide》

SQL计划管理

通过使用SQL计划管理来管理SQL执行计划,仅执行测试和验证的计划。

SQL计划管理是一种预防性机制,它使优化器能够自动管理执行计划,确保数据库只使用经过验证的计划。该机制可以构建 SQL 计划基线,这是一组可重复 SQL 语句的一个或多个可接受计划。基线的效果是优化器将其选择限制在基线中已验证的计划中。

从 Oracle Database 12c 开始,数据库可以使用自适应SPM。SPM Evolve Advisor 每天在计划维护窗口中运行,对所有未接受的计划进行排序,然后在窗口中执行尽可能多的计划的测试执行。SPM Evolve Advisor 在 SQL 计划基线中选择成本最低的可接受计划,与每个未接受的计划进行比较。如果未接受的计划比现有的已接受的计划执行得足够好,则 Advisor 将接受该计划。如果没有,Advisor 将该计划视为不接受,并更新最后一个经过验证的日期。

另见:

  • "Tools for Database Administrators"

  • 《Oracle Database SQL Tuning Guide》学习 SQL 计划管理

这篇关于Oracle 19c Concepts(18):Concepts for Database Administrators的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257951

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G