乐于分享
好东西不私藏

Oracle官方文档翻译《Database Concepts 26ai》第22章-数据库管理员概念

Oracle官方文档翻译《Database Concepts 26ai》第22章-数据库管理员概念

22 Concepts for Database Administrators(22 数据库管理员概念)

本部分介绍数据库管理员的职责、工具和基本知识。

  • • 数据库管理员的职责
    数据库管理员(DBA)的主要职责是让企业数据可供其用户使用。
  • • 数据库管理员的工具
    Oracle 提供了多种用于管理数据库的工具。
  • • 数据库管理员主题
    本节涵盖对 DBA 最为重要且本手册其他地方未讨论的主题。

Duties of Database Administrators(数据库管理员的职责)

数据库管理员(DBA)的主要职责是让企业数据可供其用户使用。

DBA 必须与开发人员密切合作,确保其应用程序高效使用数据库,并与系统管理员密切合作,确保物理资源充足且得到高效利用。

Oracle DBA 负责理解 Oracle AI Database 体系结构以及数据库的工作方式。DBA 可能执行以下任务:

  • • 安装、升级和修补 Oracle AI Database 软件
  • • 设计数据库,包括确定需求、创建逻辑设计(概念模型)和物理数据库设计
  • • 创建 Oracle 数据库
  • • 制定和测试备份与恢复策略,定期备份 Oracle 数据库,并在发生故障时进行恢复
  • • 配置网络环境,使客户端能够连接到数据库
  • • 启动和关闭数据库
  • • 管理数据库的存储
  • • 管理用户和安全性
  • • 管理数据库对象,如表、索引和视图
  • • 监控和调优数据库性能
  • • 调查任何关键数据库错误,收集数据并向 Oracle 支持服务报告
  • • 评估和测试新的数据库功能

用户类型及其角色和职责取决于数据库环境。小型数据库可能只有一名 DBA。而超大型数据库可能会将 DBA 职责分配给多名专家,例如安全管理员、备份操作员和应用程序管理员。

另请参见:

  • • 《Oracle AI Database 2 Day DBA》,了解 DBA 任务的介绍
  • • 《Oracle AI Database Administrator’s Guide》,了解 DBA 概念和任务的更深入介绍

Tools for Database Administrators(数据库管理员的工具)

Oracle 提供了多种用于管理数据库的工具。

本节介绍一些常用工具。

  • • Oracle Enterprise Manager
    Oracle Enterprise Manager(Enterprise Manager)是一个基于 Web 的系统管理工具,可管理 Oracle 数据库、Exadata 数据库机、Fusion Middleware、Oracle 应用程序、服务器、存储以及非 Oracle 硬件和软件。
  • • SQL*Plus
    SQL*Plus 是一个交互式和批处理查询工具,包含在每一个 Oracle AI Database 安装中。
  • • 用于数据库安装和配置的工具
    Oracle 提供了多种工具来简化安装和配置 Oracle AI Database 软件的任务。
  • • 用于 Oracle Net 配置和管理的工具
    Oracle Net Services 在分布式、异构计算环境中提供企业级连接解决方案。Oracle Net 是 Oracle Net Services 的一个组件,支持从客户端应用程序到数据库的网络会话。
  • • 用于数据移动和分析的工具
    Oracle AI Database 包含多种实用程序,可协助数据移动和分析。

Oracle Enterprise Manager(Oracle Enterprise Manager)

Oracle Enterprise Manager(Enterprise Manager)是一个基于 Web 的系统管理工具,可管理 Oracle 数据库、Exadata 数据库机、Fusion Middleware、Oracle 应用程序、服务器、存储以及非 Oracle 硬件和软件。

  • • Oracle Enterprise Manager Cloud Control
    Oracle Enterprise Manager Cloud Control(Cloud Control)是一个基于 Web 的界面,为管理员提供跨 Oracle 技术栈和非 Oracle 组件的完整监控。
  • • Oracle Enterprise Manager Database Express 12c
    Oracle Enterprise Manager Database Express(EM Express)是内置于 Oracle 数据库中的 Web 管理产品。它不需要特殊的安装或管理。

Oracle Enterprise Manager Cloud Control

Oracle Enterprise Manager Cloud Control(Cloud Control)是一个基于 Web 的界面,为管理员提供跨 Oracle 技术栈和非 Oracle 组件的完整监控。

有时,快速应用程序通知(FAN)的某个组件可能会变得不可用或遇到性能问题。在这种情况下,Cloud Control 会显示自动生成的警报,以便管理员可以采取适当的恢复措施。

Cloud Control 的组件包括:

  • • Oracle Management Service (OMS)
    OMS 功能是一组 J2EE 应用程序,用于呈现 Cloud Control 的界面,与所有 Oracle 管理代理协同处理监控信息,并使用 Enterprise Manager 存储库作为其持久数据存储。
  • • Oracle Management Agents
    这些代理是部署在每个受监控主机上的进程,用于监控主机上的所有目标,将这些信息传达给 OMS,并维护主机及其目标。
  • • Oracle Management Repository
    该存储库是 Oracle 数据库中的一个模式,包含由 Cloud Control 管理的所有有关管理员、目标和应用程序的可用信息。

另请参见:

  • • 《Oracle AI 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 AI Database Get Started with Performance Tuning》,了解如何使用 EM Express 管理数据库

SQLPlus(SQLPlus)

SQL*Plus 是一个交互式和批处理查询工具,包含在每一个 Oracle AI Database 安装中。

它具有命令行用户界面,在连接到数据库时充当客户端。

SQLPlus 有自己的命令和环境。它使您能够输入和执行 SQL、PL/SQL、SQLPlus 和操作系统命令,以执行以下任务:

  • • 格式化、计算、存储和打印查询结果
  • • 检查表和对象定义
  • • 开发和运行批处理脚本
  • • 管理数据库

您可以使用 SQL*Plus 以交互方式生成报告,以批处理方式生成报告,并将结果输出到文本文件、屏幕或 HTML 文件以供在 Internet 上浏览。您可以使用 HTML 输出工具动态生成报告。

另请参见:

《SQLPlus User’s Guide and Reference》,了解有关 SQLPlus 的更多信息

Tools for Database Installation and Configuration(用于数据库安装和配置的工具)

Oracle 提供了多种工具来简化安装和配置 Oracle AI Database 软件的任务。

下表介绍了受支持的工具。

表 22-1 用于数据库安装和配置的工具(Table 22-1 Tools for Database Installation and Configuration)

工具(Tool)
描述(Description)
了解更多(To Learn More)
Oracle Universal Installer (OUI)
OUI 是一个 GUI 实用程序,使您能够查看、安装和卸载 Oracle AI Database 软件。在线帮助可指导您完成安装。
在线帮助可指导您完成安装
Database Upgrade Assistant (DBUA)
DBUA 交互式地指导您完成数据库升级,并为新版本配置数据库。DBUA 通过执行通常手动完成的所有任务来自动执行升级。DBUA 会为配置选项(如表空间和联机重做日志)提供建议。
《Oracle AI Database 2 Day DBA》,了解如何使用 DBUA 升级数据库
Database Configuration Assistant (DBCA)
DBCA 提供了一个图形界面和引导式工作流,用于创建和配置数据库。此工具使您能够根据 Oracle 提供的模板创建数据库,或创建自己的数据库和模板。
《Oracle AI Database Administrator’s Guide》,了解如何使用 DBCA 创建数据库

Tools for Oracle Net Configuration and Administration(用于 Oracle Net 配置和管理的工具)

Oracle Net Services 在分布式、异构计算环境中提供企业级连接解决方案。Oracle Net 是 Oracle Net Services 的一个组件,支持从客户端应用程序到数据库的网络会话。

您可以使用以下工具来配置和管理 Oracle Net Services:

  • • Oracle Net Manager
    此工具使您能够为本地客户端或服务器主机上的 Oracle 主目录配置 Oracle Net Services。您可以使用 Oracle Net Manager 配置命名、命名方法、配置文件和监听器。您可以使用 Oracle Enterprise Manager Console 或作为独立应用程序启动 Oracle Net Manager。
  • • Oracle Net Configuration Assistant
    此工具在软件安装期间自动运行。该助手使您能够在安装过程中配置基本网络组件,包括监听器名称和协议地址、命名方法、tnsnames.ora 文件中的网络服务名以及目录服务器使用情况。
  • • Listener Control Utility
    Listener Control 实用程序使您能够配置监听器以接收客户端连接。您可以通过 Enterprise Manager 或作为独立的命令行应用程序访问该实用程序。
  • • Oracle Connection Manager Control Utility
    此命令行实用程序使您能够管理 Oracle Connection Manager,它是一个路由器,客户端连接请求可以通过它发送到下一跳或直接发送到数据库。您可以使用实用程序命令对一个或多个 Oracle Connection Manager 执行基本管理功能。此外,您还可以查看和更改参数设置。

另请参见:

  • • “The Oracle Net Listener”(Oracle Net 监听器)
  • • “Overview of Oracle Net Services Architecture”(Oracle Net Services 体系结构概述)
  • • 《Oracle AI Database Net Services Administrator’s Guide》,了解有关 Oracle Net Services 工具的更多信息

Tools for Data Movement and Analysis(用于数据移动和分析的工具)

Oracle AI Database 包含多种实用程序,可协助数据移动和分析。

例如,您可以使用数据库实用程序执行以下操作:

表 22-2 数据移动和分析任务(Table 22-2 Data Movement and Analysis Tasks)

任务(Task)
了解更多(To Learn More)
将操作系统文件中的数据加载到 Oracle AI Database 表中
“SQLLoader”(SQLLoader)
将数据和元数据从一个数据库移动到另一个数据库
“Oracle Data Pump Export and Import”(Oracle Data Pump 导出和导入)
通过 SQL 接口查询重做日志文件
“Oracle LogMiner”(Oracle LogMiner)
管理 Oracle AI Database 数据
“ADR Command Interpreter (ADRCI)”(ADR 命令解释器 (ADRCI))

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

注意:

  • • SQL*Loader
    SQL*Loader 将数据从外部文件(称为数据文件,不要与内部数据库数据文件混淆)加载到数据库表中。它有一个强大的数据解析引擎,对数据文件中数据的格式限制很少。
  • • Oracle Data Pump Export and Import
    Oracle Data Pump 支持数据和元数据从一个数据库高速移动到另一个数据库。
  • • Oracle LogMiner
    Oracle LogMiner 使您能够通过 SQL 接口查询重做日志文件。
  • • ADR Command Interpreter (ADRCI)
    ADRCI 是一个命令行实用程序,使您能够调查问题、查看运行状况检查报告,并将首次故障数据打包并上传到 Oracle 支持。

另请参见:

  • • “Backup and Recovery”(备份与恢复),了解与备份和恢复相关的工具
  • • 《Oracle AI Database Utilities》,了解 DBVERIFY 和 DBNEWID

SQL*Loader

SQL*Loader 将数据从外部文件(称为数据文件,不要与内部数据库数据文件混淆)加载到数据库表中。它有一个强大的数据解析引擎,对数据文件中数据的格式限制很少。

您可以使用 SQL*Loader 执行以下操作:

  • • 将多个数据文件中的数据加载到多个表中
    您将要加载的数据存储在 SQLLoader 数据文件中。SQLLoader 控制文件是一个文本文件,其中包含 DDL 指令,SQL*Loader 使用这些指令来确定在何处查找数据、如何解析和解释数据、将数据插入何处等等。

    注意:
    SQL*Loader 数据文件和控制文件与 Oracle AI Database 数据文件和控制文件无关。

  • • 控制加载操作的各个方面
    例如,您可以选择性地加载数据、指定数据字符集、使用 SQL 函数操作数据、在指定列中生成唯一的顺序键值等。您还可以生成复杂的错误报告。
  • • 使用常规路径、直接路径或外部表加载
    常规路径加载执行 SQL INSERT 语句来填充表。相比之下,直接路径 INSERT 通过格式化数据块并将其直接写入数据文件,消除了大部分数据库开销。直接写入操作在高水位线(HWM)之上的块上进行,并直接写入磁盘,绕过数据库缓冲区高速缓存。直接读取直接从磁盘读取到 PGA,同样绕过缓冲区高速缓存。
    外部表加载为数据文件中包含的数据创建一个外部表。该加载执行 INSERT 语句,将数据从数据文件插入到目标表中。

典型的 SQLLoader 会话将 SQLLoader 控制文件和一个或多个数据文件作为输入。输出是 Oracle 数据库、日志文件、错误文件,以及可能的废弃文件。下图说明了典型 SQL*Loader 会话的流程。

Figure 22-1 SQLLoader Session(图 22-1 SQLLoader 会话)

您还可以使用 SQLLoader 快速模式,当您在 SQLLoader 命令中指定 table 参数时会激活该模式,如下例所示:

% sqlldr hr table=employees

不允许使用控制文件,这使得 SQLLoader 更易于使用。SQLLoader 不解析控制文件,而是使用表列定义来确定输入数据类型。SQL*Loader 会做出一些默认假设,包括字符集、字段分隔符以及数据文件、日志文件和错误文件的名称。您可以使用命令行参数覆盖许多默认设置。

另请参见:

  • • “Overview of External Tables”(外部表概述)
  • • “Character Sets”(字符集)
  • • 《Oracle AI Database Utilities》,了解 SQL*Loader

Oracle Data Pump Export and Import

Oracle Data Pump 支持数据和元数据从一个数据库高速移动到另一个数据库。

该技术是以下 Oracle AI Database 数据移动实用程序的基础:

  • • Data Pump Export(导出)
    导出是一个实用程序,用于将数据和元数据卸载到一组称为转储文件集的操作系统文件中。转储文件集由一个或多个二进制文件组成,这些文件包含表数据、数据库对象元数据和控制信息。
  • • Data Pump Import(导入)
    导入是一个实用程序,用于将导出转储文件集加载到数据库中。您还可以使用导入直接从源数据库加载目标数据库,而无需中间文件,这使得导出和导入操作可以并发运行,从而最大程度地缩短总耗时。

Oracle Data Pump 由以下不同部分组成:

  • • 命令行客户端 expdp 和 impdp
    这些客户端调用 DBMS_DATAPUMP 包来执行 Oracle Data Pump 操作。
  • • DBMS_DATAPUMP PL/SQL 包,也称为 Data Pump API
    此 API 提供高速导入和导出功能。
  • • DBMS_METADATA PL/SQL 包,也称为 Metadata API
    所有加载和卸载元数据的进程都使用此 API,该 API 以 XML 格式存储对象定义。

下图显示了 Oracle Data Pump 如何与 SQLLoader 和外部表集成。如图所示,SQLLoader 与外部表 API 和 Data Pump API 集成,将数据加载到外部表中。诸如 Oracle Enterprise Manager Cloud Control(Cloud Control)和可传输表空间之类的客户端可以使用 Oracle Data Pump 基础设施。

Figure 22-2 Oracle Data Pump Architecture(图 22-2 Oracle Data Pump 体系结构)

另请参见:

  • • “Overview of External Tables”(外部表概述)
  • • “PL/SQL Packages”(PL/SQL 包)
  • • 《Oracle AI Database Utilities》,了解 Oracle Data Pump 的概述
  • • 《Oracle AI Database PL/SQL Packages and Types Reference》,了解 DBMS_DATAPUMP 和 DBMS_METADATA 的描述

Oracle LogMiner

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

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

  • • 精确定位数据库的逻辑损坏(例如在应用程序级别发生的错误)可能何时开始
  • • 检测用户错误
  • • 确定在事务级别执行细粒度恢复所需采取的操作
  • • 使用趋势分析确定哪些表获得最多的更新和插入
  • • 通过 LogMiner 全面的重做日志文件关系接口,分析系统行为并审计数据库使用情况

LogMiner 可通过命令行界面或作为 Enterprise Manager 一部分的 Oracle LogMiner Viewer GUI 进行访问。

另请参见:

《Oracle AI Database Utilities》,了解有关 LogMiner 的更多信息

ADR Command Interpreter (ADRCI)

ADRCI 是一个命令行实用程序,使您能够调查问题、查看运行状况检查报告,并将首次故障数据打包并上传到 Oracle 支持。

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

另请参见:

  • • “Automatic Diagnostic Repository”(自动诊断存储库)
  • • 《Oracle AI Database Utilities》和《Oracle AI Database Administrator’s Guide》,了解有关 ADR 和 ADRCI 的更多信息

Topics for Database Administrators(数据库管理员主题)

本节涵盖对 DBA 最为重要且本手册其他地方未讨论的主题。

  • • 备份与恢复
    备份与恢复是涉及保护数据库免受由介质故障或用户错误导致的数据丢失的概念、过程和策略的集合。
  • • 内存管理
    内存管理涉及随着数据库需求的变化,为 Oracle 实例内存结构维护最佳大小。初始化参数设置决定了如何管理 SGA 和实例 PGA 内存。
  • • 资源管理与任务调度
    Oracle AI Database 提供了工具来帮助您管理资源,以及调度任务以减少对用户的影响。
  • • 性能与调优
    作为 DBA,您负责 Oracle 数据库的性能。通常,性能问题源于不可接受的响应时间(即完成指定工作负载的时间)或吞吐量(即在指定时间内可以完成的工作量)。

Backup and Recovery(备份与恢复)

备份与恢复是涉及保护数据库免受由介质故障或用户错误导致的数据丢失的概念、过程和策略的集合。

备份是数据的副本。备份可以包括数据库的关键部分,例如数据文件、服务器参数文件和控制文件。一个示例性的备份与恢复场景是磁盘驱动器故障导致数据文件丢失。如果存在丢失文件的备份,那么您可以恢复和还原它。将数据恢复到丢失前状态所涉及的操作称为介质恢复。

本节包含以下主题:

  • • 备份与恢复技术
    您可以使用 Recovery Manager 或用户管理的技术来备份、还原和恢复 Oracle 数据库。
  • • Recovery Manager 体系结构
    RMAN 和 Oracle Secure Backup 均可从命令行和 Enterprise Manager Cloud Control(Cloud Control)进行访问。
  • • 数据库备份
    数据库备份可以是物理备份或逻辑备份。
  • • 数据修复
    虽然多种问题可能导致数据库正常运行停止或影响 I/O 操作,但只有部分问题需要 DBA 干预和数据修复。
  • • 零数据丢失恢复一体机
    云规模的零数据丢失恢复一体机(Zero Data Loss Recovery Appliance),通常称为恢复一体机,是一个工程系统,可大幅减少企业中所有 Oracle 数据库的数据丢失和备份开销。

另请参见:

  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解备份与恢复的概念和任务
  • • 《Oracle AI Database Administrator’s Reference for Microsoft Windows》,了解如何使用卷影复制服务(VSS)应用程序在 Microsoft Windows 上备份和恢复数据库

Backup and Recovery Techniques(备份与恢复技术)

您可以使用 Recovery Manager 或用户管理的技术来备份、还原和恢复 Oracle 数据库。

两种方法的主要区别如下:

  • • Recovery Manager (RMAN)
    RMAN 是一个 Oracle AI Database 实用程序,它与 Oracle 数据库集成以执行备份和恢复活动,包括在其备份的每个数据库的控制文件中维护历史备份元数据存储库。RMAN 还可以在不同的数据库中维护一个称为恢复目录的集中式备份存储库。RMAN 是 Oracle AI Database 的一项功能,不需要单独安装。
    RMAN 与 Oracle Secure Backup 集成,后者提供可靠的、集中式的磁带备份管理,保护文件系统数据和 Oracle AI Database 文件。Oracle Secure Backup SBT 接口使您能够使用 RMAN 将数据库文件备份到磁带以及 Amazon S3 等基于 Internet 的 Web 服务,并从这些服务进行还原。Oracle Secure Backup 支持 SAN 和 SCSI 环境中的几乎所有磁带机和磁带库。
  • • 用户管理的技术
    作为 RMAN 的替代方案,您可以使用操作系统命令(例如 Linux 的 dd 命令)来备份和还原文件,并使用 SQL*Plus 的 RECOVER 命令进行介质恢复。用户管理的备份和恢复完全受 Oracle 支持,但推荐使用 RMAN,因为它与 Oracle AI Database 集成并简化了管理。

另请参见:

  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解备份与恢复解决方案的概述
  • • 《Oracle Secure Backup Administrator’s Guide》,了解 Oracle Secure Backup 的概述

Recovery Manager Architecture

RMAN 和 Oracle Secure Backup 均可从命令行和 Enterprise Manager Cloud Control(Cloud Control)进行访问。

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

通过使用 Cloud Control,您可以执行本文档中概述的较简单的还原和恢复场景。您还可以使用更复杂的还原和恢复技术,例如时间点恢复和 Oracle Flashback 操作,这些操作可以高效修复介质故障和用户错误。使用 Cloud Control 通常比使用 RMAN 命令行客户端更简单。

下图展示了一个示例 RMAN 体系结构。可通过 Cloud Control 访问的 RMAN 客户端使用目标数据库上的服务器会话将数据备份到磁盘或磁带。RMAN 可以使用备份元数据更新外部恢复目录。

Figure 22-3 RMAN Architecture(图 22-3 RMAN 体系结构)

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

另请参见:

  • • 《Oracle AI Database 2 Day DBA》,了解如何使用 Recovery Manager 执行备份和恢复
  • • 《Oracle AI Database Administrator’s Guide》,了解有关如何设置和管理快速恢复区的信息

Database Backups(数据库备份)

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

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

相比之下,逻辑备份包含表、存储过程和其他逻辑数据。您可以使用 Oracle AI Database 实用程序(如 Data Pump Export)提取逻辑数据,并将其存储在二进制文件中。逻辑备份可以补充物理备份。

物理备份粒度大、可移植性有限,但速度非常快。逻辑备份粒度细、可移植性完全,但比物理备份慢。

  • • Whole and Partial Database Backups
    完整数据库备份是数据库中每个数据文件以及控制文件的备份。完整数据库备份是最常见的备份类型。
  • • Consistent and Inconsistent Backups
    完整数据库备份可以是一致的,也可以是不一致的。
  • • Backup Sets and Image Copies
    RMAN BACKUP 命令生成镜像副本或备份集。

另请参见:

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

Whole and Partial Database Backups(完整和部分数据库备份)

完整数据库备份是数据库中每个数据文件以及控制文件的备份。完整数据库备份是最常见的备份类型。

部分数据库备份包括数据库的一个子集:单个表空间或数据文件。表空间备份是一个表空间或多个表空间中所有数据文件的备份。无论是一致还是不一致的表空间备份,仅当数据库在 ARCHIVELOG 模式下运行时才有效,因为需要重做才能使还原的表空间与数据库的其余部分保持一致。

Consistent and Inconsistent Backups(一致和不一致备份)

完整数据库备份可以是一致的,也可以是不一致的。

在一致备份中,所有读/写数据文件和控制文件具有相同的检查点 SCN,从而保证这些文件包含截至此 SCN 的所有更改。这种类型的备份在还原后不需要恢复。

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

注意:
如果您还原一致完整数据库备份而不应用重做,则会丢失备份之后进行的所有事务。

在不一致备份中,读/写数据文件和控制文件不保证具有相同的检查点 SCN,因此可能会缺少更改。所有联机备份必然是不一致的,因为在备份发生时数据文件可能会被修改。

不一致备份提供了卓越的可用性,因为您无需关闭数据库即可制作能够完全保护数据库的备份。如果数据库在 ARCHIVELOG 模式下运行,并且您备份了归档重做日志和数据文件,那么不一致备份可以成为完善的备份和恢复策略的基础。

另请参见:

  • • “Shutdown Modes”(关闭模式)
  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解有关不一致备份的更多信息
Backup Sets and Image Copies(备份集和镜像副本)

RMAN BACKUP 命令生成镜像副本或备份集。

备份类型的不同之处如下:

  • • 镜像副本(Image copy)
    镜像副本是数据文件、控制文件或归档重做日志文件的逐位磁盘副本。您可以使用操作系统实用程序或 RMAN 创建物理文件的镜像副本,并使用任一工具来还原它们。

    注意:
    与操作系统副本不同,RMAN 会验证文件中的块,并将镜像副本记录在 RMAN 存储库中。

  • • 备份集(Backup set)
    RMAN 还可以创建一种称为备份集的专有格式的备份。备份集包含来自一个或多个数据文件、归档重做日志文件、控制文件或服务器参数文件的数据。备份集的最小单元是一个称为备份片的二进制文件。备份集是 RMAN 可以将备份写入磁带机等顺序设备的唯一形式。
    备份集使磁带设备能够连续流动。例如,RMAN 可以将来自慢速、中速和快速磁盘的块混合到一个备份集中,以便磁带设备有持续的块输入。镜像副本对于磁盘很有用,因为您可以增量更新它们,并且可以就地恢复它们。

另请参见:

《Oracle AI Database Backup and Recovery User’s Guide》,了解有关备份集和镜像副本的更多信息

Data Repair(数据修复)

虽然多种问题可能导致数据库正常运行停止或影响 I/O 操作,但只有部分问题需要 DBA 干预和数据修复。

通常在以下情况下需要进行数据修复:

  • • 介质故障(Media failures)
    当数据库外部的问题阻止其读取或写入文件时,就会发生介质故障。典型的介质故障包括物理故障(如磁盘磁头崩溃)以及数据库文件的覆盖、删除或损坏。介质故障不如用户或应用程序错误常见,但健全的备份和恢复策略必须为此做好准备。
  • • 用户错误(User errors)
    用户或应用程序可能会对您的数据库进行不需要的更改,例如错误的更新、删除表的内容或删除数据库对象。良好的备份和恢复策略使您能够将数据库恢复到所需状态,同时对数据库可用性的影响尽可能小,且 DBA 投入的工作量最少。

通常,您有多种方法来解决上述问题。本节总结了其中一些解决方案。

  • • Oracle Flashback Technology
    Oracle AI Database 提供了一组称为 Oracle Flashback Technology 的功能,支持查看过去的数据状态,并在时间上前后回溯数据,而无需还原备份。
  • • Block Media Recovery
    块介质恢复是一种在数据文件联机时恢复和修复损坏数据块的技术。
  • • Data File Recovery
    数据文件恢复用于修复丢失或损坏的当前数据文件或控制文件。它还可以恢复在表空间未使用 OFFLINE NORMAL 选项而脱机时丢失的更改。

另请参见:

  • • “Human Errors”(人为错误)
  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解数据修复概念
Oracle Flashback Technology(Oracle Flashback 技术)

Oracle AI Database 提供了一组称为 Oracle Flashback Technology 的功能,支持查看过去的数据状态,并在时间上前后回溯数据,而无需还原备份。

根据数据库的更改情况,闪回功能通常可以比介质恢复更快地逆转不需要的更改,并且对可用性的影响更小。以下闪回功能与备份和恢复最相关:

  • • Flashback Database(闪回数据库)
    您可以将 CDB 或 PDB 回退到过去某个时间点,以纠正由逻辑数据损坏或用户错误导致的问题。闪回数据库也可用于补充 Data Guard 以及同步克隆数据库。闪回数据库不还原文件或对文件执行介质恢复,因此您不能使用它来纠正磁盘崩溃等介质故障。
    在 PDB 级别,您可以创建 PDB 恢复点,并将 PDB 回退到此恢复点,而不会影响其他 PDB。在 CDB 级别,您可以创建 CDB 恢复点。
  • • Flashback Table(闪回表)
    您可以使用一条 SQL 语句将表回退到指定时间点。在数据库联机的情况下,您可以恢复表数据以及关联的索引、触发器和约束,同时仅撤销对指定表的更改。闪回表不解决物理损坏,例如坏盘或数据段和索引不一致。
  • • Flashback Drop(闪回删除)
    您可以逆转 DROP TABLE 操作的影响。闪回删除比时间点恢复等恢复机制快得多,并且不会导致最近事务的丢失或停机。

另请参见:

  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解有关闪回功能的更多信息
  • • 《Oracle AI Database SQL Language Reference》和《Oracle AI Database Backup and Recovery Reference》,了解 FLASHBACK DATABASE 语句
Block Media Recovery(块介质恢复)

块介质恢复是一种在数据文件联机时恢复和修复损坏数据块的技术。

块损坏是指数据块不是可识别的 Oracle 格式,或者其内容在内部不一致。如果您检测到块损坏,并且只有少数块损坏,那么块恢复可能比数据文件恢复更可取。

另请参见:

  • • “Data Corruption”(数据损坏)
  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解如何执行块介质恢复
Data File Recovery(数据文件恢复)

数据文件恢复用于修复丢失或损坏的当前数据文件或控制文件。它还可以恢复在表空间未使用 OFFLINE NORMAL 选项而脱机时丢失的更改。

如果您还原了数据文件或控制文件的备份,或者数据文件在未使用 OFFLINE NORMAL 选项的情况下被脱机,则需要进行介质恢复。如果需要介质恢复的联机数据文件存在,则数据库无法打开;在介质恢复完成之前,需要介质恢复的数据文件也无法联机。

还原数据文件或控制文件的物理备份就是重建它并使其可供 Oracle AI Database 使用。恢复备份是指应用归档重做日志文件来重建丢失的更改。RMAN 还可以使用增量备份来恢复数据文件,增量备份仅包含在上次备份后修改过的数据块。

与自动将更改应用到联机文件的实例恢复不同,介质恢复必须由用户调用,并将归档重做日志文件应用到还原的备份中。数据文件介质恢复只能在脱机数据文件或任何数据库实例都未打开的数据库中的数据文件上运行。

数据文件介质恢复根据是否应用所有更改而有所不同:

  • • 完全恢复(Complete recovery)
    完全恢复将归档和联机重做日志中包含的所有重做更改应用到备份。通常,在介质故障损坏数据文件或控制文件后执行完全介质恢复。您可以对数据库、表空间或数据文件执行完全恢复。
  • • 不完全恢复(Incomplete recovery)
    不完全恢复,也称为数据库时间点恢复,会生成数据库的非当前版本。在这种情况下,您不会应用在还原的备份之后生成的所有重做数据。通常,当无法使用 Oracle Flashback Database 时,您会执行数据库时间点恢复来撤销用户错误。
    要执行不完全恢复,您必须从要恢复到的时间点之前创建的备份中还原所有数据文件,然后在恢复完成后使用 RESETLOGS 选项打开数据库。重置日志会创建一个新的日志序列号流,从日志序列 1 开始。

    注意:
    如果当前数据文件可用,则 Flashback Database 是 DBPITR 的替代方案。

    表空间时间点恢复(TSPITR)功能使您能够将一个或多个表空间恢复到比数据库其余部分更旧的时间点。

另请参见:

  • • “Overview of Instance Recovery”(实例恢复概述)
  • • 《Oracle AI Database Backup and Recovery User’s Guide》,了解介质恢复概念

Zero Data Loss Recovery Appliance(零数据丢失恢复一体机)

云规模的零数据丢失恢复一体机(Zero Data Loss Recovery Appliance),通常称为恢复一体机,是一个工程系统,可大幅减少企业中所有 Oracle 数据库的数据丢失和备份开销。

恢复一体机与 RMAN 集成,为大量数据库部署集中式备份和恢复策略,使用云规模的容错硬件和存储。恢复一体机会持续验证备份的可恢复性。

  • • Benefits of Recovery Appliance
    集中式恢复一体机执行大部分数据库备份和还原处理,使得备份的存储利用率、性能和可管理性更加高效。
  • • Recovery Appliance Environment
    受保护数据库是将数据备份到恢复一体机的客户端数据库。
Benefits of Recovery Appliance(恢复一体机的优势)

集中式恢复一体机执行大部分数据库备份和还原处理,使得备份的存储利用率、性能和可管理性更加高效。

主要优势如下:

  • • 消除数据丢失
    恢复一体机采用以下技术,消除了数据中心大多数数据库所面临的数据丢失风险:
    • • 将重做更改从受保护数据库的 SGA 持续传输到恢复一体机,这称为实时重做传输
    • • 复制到远程恢复一体机
    • • 由集中式恢复一体机进行的自动化磁带备份
    • • 端到端数据库块验证
  • • 最小化备份开销
    通过将工作卸载到恢复一体机,数据库服务器上的备份开销被降至最低。恢复一体机在统一的磁盘池中管理多个数据库的备份。RMAN 永久增量备份策略涉及对恢复一体机进行初始 0 级备份,所有后续增量备份均为 1 级。恢复一体机通过将 0 级与 1 级备份相结合来创建虚拟完整备份。恢复一体机在块级别持续压缩、重复数据删除和验证备份。
  • • 改进端到端数据保护可见性
    Cloud Control 提供了对由恢复一体机管理的备份生命周期的完整端到端视图,从 RMAN 备份启动之时起,到其存储在磁盘、磁带或复制到下游恢复一体机之时止。安装 Enterprise Manager for Zero Data Loss Recovery Appliance 插件(恢复一体机插件)后,即可进行监控和管理。
  • • 云规模保护
    恢复一体机可扩展以支持数十、数百或数千个数据库。体系结构的关键组件如下:
    • • 恢复一体机通过保护策略简化管理,该策略定义了为与该策略关联的每个数据库强制执行的恢复窗口目标。保护策略通过将数据库分组到具有共享特征的层中,提高了可管理性。
    • • 使用保护策略,恢复一体机根据每个受保护数据库的恢复窗口目标来管理备份存储空间。这种细粒度的、面向数据库的空间管理方法消除了在存储卷级别管理空间的需求,而第三方一体机则需要这样做。
    • • 恢复一体机可以通过以简单、模块化的方式添加计算和存储资源来扩展,以适应备份流量、存储使用和数据库数量的增长。
Recovery Appliance Environment(恢复一体机环境)

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

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

Figure 22-4 Recovery Appliance Environment(图 22-4 恢复一体机环境)

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

注意:
数据库可以使用恢复一体机作为其恢复目录,而不必同时将其用作备份存储库。

管理员使用 Cloud Control 来管理和监控环境。Cloud Control 为每个数据库的整个备份生命周期提供了”单一管理平台”视图,无论备份是驻留在磁盘、磁带还是另一个恢复一体机上。

Memory Management(内存管理)

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

图 22-5 显示了内存管理选项的决策树。以下各节详细解释了这些选项。

Figure 22-5 Memory Management Methods(图 22-5 内存管理方法)

  • • 自动内存管理(Automatic Memory Management)
    在自动内存管理中,Oracle AI Database 完全自动地管理 SGA 和实例 PGA 内存。此方法最简单,Oracle 强烈推荐。
  • • SGA 的共享内存管理(Shared Memory Management of the SGA)
    您可以手动控制 SGA 的大小,方法是使用自动共享内存管理设置 SGA 大小,或手动调优 SGA 组件。
  • • 实例 PGA 的内存管理(Memory Management of the Instance PGA)
    如果未启用自动内存管理,则 Oracle AI Database 使用自动或手动 PGA 内存管理。
  • • 内存管理方法总结(Summary of Memory Management Methods)
    内存管理可以是自动的或手动的。

另请参见:

“Memory Architecture”(内存架构),了解有关 SGA 和 PGA 的更多信息

Automatic Memory Management(自动内存管理)

在自动内存管理中,Oracle AI Database 完全自动地管理 SGA 和实例 PGA 内存。此方法最简单,Oracle 强烈推荐。

唯一由用户指定的控制是目标内存大小初始化参数(MEMORY_TARGET)和可选的最大内存大小初始化参数(MEMORY_MAX_TARGET)。Oracle AI Database 会根据目标内存大小进行调优,并根据需要在 SGA 和实例 PGA 之间重新分配内存。

SGA 可以包含 In-Memory 列存储(IM 列存储)或 memoptimize 池,这两者都是可选的。无论您使用哪种内存管理方法,都应使用 INMEMORY_SIZE 初始化参数设置 IM 列存储的大小,并使用 MEMOPTIMIZE_POOL_SIZE 初始化参数设置 memoptimize 池的大小。IM 列存储大小和 memoptimize 池包含在内存目标中,但不受自动调整大小算法的管理。例如,如果您将 MEMORY_TARGET 设置为 5 GB,将 INMEMORY_SIZE 设置为 1 GB,则总体内存目标为 5 GB(而不是 6 GB),并且 INMEMORY_SIZE 始终为 1 GB。

下图展示了一个数据库,该数据库有时处理由联机用户提交的作业,有时处理批处理作业。使用自动内存管理,数据库会根据正在运行的作业类型自动调整大型池和数据库缓冲区高速缓存的大小。请注意,该图未描绘 IM 列存储或 memoptimize 区域。

Figure 22-6 Automatic Memory Management(图 22-6 自动内存管理)

如果您使用 DBCA 创建数据库并选择基本安装选项,则 Oracle AI Database 默认启用自动内存管理。

另请参见:

  • • “In-Memory Area”(In-Memory 区)
  • • “Memoptimize Pool”(Memoptimize 池)
  • • 《Oracle AI Database Administrator’s Guide》,了解自动内存管理

Shared Memory Management of the SGA(SGA 的共享内存管理)

您可以手动控制 SGA 的大小,方法是使用自动共享内存管理设置 SGA 大小,或手动调优 SGA 组件。

如果未启用自动内存管理,则系统必须使用 SGA 的共享内存管理。共享内存管理可以采用以下任一形式:

  • • 自动共享内存管理(Automatic shared memory management)
    此模式使您能够更直接地控制 SGA 的大小,并且是禁用自动内存管理时的默认设置。数据库将总 SGA 调优到目标大小,并动态调优 SGA 组件的大小。如果您使用服务器参数文件,则 Oracle AI Database 会在数据库实例关闭时记住自动调优组件的大小。
  • • 手动共享内存管理(Manual shared memory management)
    在此模式下,您可以设置多个独立 SGA 组件的大小,并持续手动调优各个 SGA 组件。您对各个 SGA 组件的大小拥有完全控制权。当自动内存管理和自动共享内存管理都被禁用时,数据库默认采用此模式。

    注意:
    当自动内存管理被禁用时,在某些情况下,数据库可以根据用户工作负载自动调整共享池和缓冲区高速缓存的相对大小。

另请参见:

  • • 《Oracle AI Database Administrator’s Guide》,了解共享内存管理
  • • My Oracle Support 文档 1269139.1,了解有关手动模式下自动调整大小的更多信息:
    https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&id=1269139.1

Memory Management of the Instance PGA(实例 PGA 的内存管理)

如果未启用自动内存管理,则 Oracle AI Database 使用自动或手动 PGA 内存管理。

PGA 内存管理可能采用以下模式:

  • • 自动 PGA 内存管理(Automatic PGA memory management)
    当自动内存管理(MEMORY_TARGET)被禁用且 PGA_AGGREGATE_TARGET 设置为非零值时,数据库使用自动 PGA 内存管理。在此模式下,PGA_AGGREGATE_TARGET 为实例 PGA 指定一个”软”目标大小。该目标是软的,因为它仅适用于可以选择使用临时空间而不是 PGA 的特定类型的内存分配。数据库将实例 PGA 的大小调优到此目标,并动态调优各个 PGA 的大小。如果您未显式设置目标大小,则数据库会自动配置合理的默认值。
    PGA_AGGREGATE_LIMIT 初始化参数动态设置了一个实例范围的 PGA 内存硬性限制。由于该参数会响应不断变化的内存条件,因此您无需显式设置参数值。默认情况下,PGA_AGGREGATE_LIMIT 设置为以下各项中的最大值:
    • • 2 GB
    • • PGA_AGGREGATE_TARGET 初始化参数设置的 200%
    • • ( PROCESSES 初始化参数设置的值) * 3 MB
      后台进程会定期将 PGA 大小与 PGA_AGGREGATE_LIMIT 设置的限制进行比较。如果达到或超过限制,则该进程会终止使用最多不可调优 PGA 内存的会话的调用。如果这些会话仍未释放足够的内存,则它们也会被终止。
  • • 手动 PGA 内存管理(Manual PGA memory management)
    当自动内存管理被禁用且 PGA_AGGREGATE_TARGET 设置为 0 时,数据库默认采用手动 PGA 管理。以前版本的 Oracle AI Database 要求 DBA 为每种类型的 SQL 操作符(例如排序或哈希连接)手动指定最大工作区大小。事实证明,这种技术非常困难,因为工作负载总是在变化。尽管 Oracle AI Database 支持手动 PGA 内存管理方法,但 Oracle 强烈建议使用自动内存管理。

另请参见:

《Oracle AI Database Performance Tuning Guide》,了解 PGA 内存管理

Summary of Memory Management Methods(内存管理方法总结)

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

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

注意:
当数据库实例整体禁用自动内存管理时,Oracle 数据库默认启用自动 PGA 内存管理。

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

表 22-3 内存管理方法(Table 22-3 Memory Management Methods)

实例(Instance)
SGA
PGA
描述(Description)
初始化参数(Initialization Parameters)
自动
不适用
不适用
数据库根据单个实例目标大小来调优实例的大小。
您设置:
· 数据库实例的总体内存目标大小 (MEMORY_TARGET)
· 可选的数据库实例最大内存大小 (MEMORY_MAX_TARGET)
· SGA 中可选的 IM 列存储大小 (INMEMORY_SIZE)
不适用
自动
自动
数据库根据 SGA 目标自动调优 SGA。
数据库根据 PGA 目标自动调优 PGA。
您设置:
· SGA 目标大小 (SGA_TARGET)
· 可选的 SGA 最大大小 (SGA_MAX_SIZE)
· SGA 中可选的 IM 列存储大小 (INMEMORY_SIZE)
· SGA 中可选的 memoptimize 池大小 (MEMOPTIMIZE_POOL_SIZE)
· PGA 聚合目标大小 (PGA_AGGREGATE_TARGET)1
数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您也可以手动设置此参数。
不适用
自动
手动
数据库根据 SGA 目标自动调优 SGA。
您手动控制 PGA,为每种类型的 SQL 操作符设置最大工作区大小。
您设置:
· SGA 目标大小 (SGA_TARGET)
· 可选的 SGA 最大大小 (SGA_MAX_SIZE)
· SGA 中可选的 IM 列存储大小 (INMEMORY_SIZE)
· SGA 中可选的 memoptimize 池大小 (MEMOPTIMIZE_POOL_SIZE)
· PGA 工作区参数,例如 SORT_AREA_SIZEHASH_AREA_SIZE 和 BITMAP_MERGE_AREA_SIZE
不适用
手动
自动
您通过设置各个组件的大小来手动控制 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)2
数据库自动配置 PGA_AGGREGATE_LIMIT 初始化参数。您也可以手动设置此参数。
不适用
手动
手动
您必须手动配置 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_SIZEHASH_AREA_SIZE 和 BITMAP_MERGE_AREA_SIZE
1

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

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

另请参见:

《Oracle AI Database Administrator’s Guide》,因为并非所有平台都提供自动内存管理

Resource Management and Task Scheduling(资源管理与任务调度)

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

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

  • • Database Resource Manager
    Oracle AI Database Resource Manager(Resource Manager)可以对分配给用户帐户、应用程序和服务的数据库资源进行细粒度控制。Resource Manager 主要充当守门员的角色,减慢某些作业的运行速度,以便其他作业可以快速运行。
  • • CPU Management
    从 Oracle AI Database 26ai 开始,Oracle 提供了一种替代 CPU 资源管理的方法,该方法在服务器上的所有数据库实例之间运行。
  • • Oracle Scheduler
    Oracle Scheduler(Scheduler)使数据库管理员和应用程序开发人员能够控制各种任务在数据库环境中执行的时间和位置。

Database Resource Manager(Database Resource Manager)

Oracle AI Database Resource Manager(Resource Manager)可以对分配给用户帐户、应用程序和服务的数据库资源进行细粒度控制。Resource Manager 主要充当守门员的角色,减慢某些作业的运行速度,以便其他作业可以快速运行。

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

  • • 过高的开销
  • • 低效的调度
  • • 不适当的资源分配
  • • 无法管理数据库特定的资源

Resource Manager 通过让数据库更好地控制硬件资源分配和工作优先级划分,帮助克服上述问题。
您可以根据会话属性将会话分类到组中,然后为这些组分配资源,以优化硬件利用率。您可以使用 Resource Manager 为 PDB 内存消耗设置限制。

资源根据数据库管理员指定的资源计划分配给用户。该计划指定了如何在资源使用者组之间分配资源,资源使用者组是按资源需求分组的用户会话。资源计划指令将资源使用者组与计划关联,并指定如何将资源分配给该组。

图 22-7 显示了一个简单资源计划,该计划适用于一个在白天同时运行 OLTP 应用程序和报表应用程序的组织。当前活动的计划 DAYTIME 在三个资源使用者组之间分配 CPU 资源。具体来说,OLTP 分配了 75% 的 CPU 时间,REPORTS 分配了 15%,OTHER_GROUPS 获得剩余的 10%。

Figure 22-7 Simple Resource Plan(图 22-7 简单资源计划)

Resource Manager 可以解决的一个问题是失控查询,可以使用 SQL Monitor 对其进行监控。Resource Manager 使您能够指定阈值来识别和响应失控的 SQL 语句。例如,您可以为 CPU 时间、已用时间、物理或逻辑 I/O 以及使用者组中每个前台进程的 PGA 使用量指定阈值。作为响应,Resource Manager 可以切换到优先级较低的使用者组、终止 SQL 语句或记录阈值违规情况。

另请参见:

  • • 《Oracle AI Database Administrator’s Guide》,了解如何使用 Resource Manager
  • • 《Oracle AI Database PL/SQL Packages and Types Reference》,了解如何使用 DBMS_RESOURCE_MANAGER PL/SQL 包

CPU Management(CPU 管理)

从 Oracle AI Database 26ai 开始,Oracle 提供了一种替代 CPU 资源管理的方法,该方法在服务器上的所有数据库实例之间运行。

在之前的版本中,Oracle 提供了一种在数据库实例内运行 CPU 资源管理的方法。从 Oracle AI Database 26ai 开始,您可以设置 RESOURCE_MANAGER_CPU_SCOPE 来控制 CPU 资源管理的范围。此参数允许您在两种控制方法之间进行选择。

将 RESOURCE_MANAGER_CPU_SCOPE 设置为 SERVER_WIDE 可启用服务器级实例间 CPU 资源管理。此方法在 Oracle AI Database 26ai 中引入,可在多个数据库实例共享一台 Linux 服务器时使用。它支持跨服务器上所有数据库实例进行 CPU 资源管理。使用此方法,Oracle 会自动配置 Linux 控制组(cgroups),设置所需的 CPU 共享和 CPU 利用率限制,然后将数据库会话放入适当的 cgroups 中。

RESOURCE_MANAGER_CPU_SCOPE 默认设置为 INSTANCE_ONLY

另请参见:

  • • 《Oracle AI Database Administrator’s Guide》,了解 CPU 管理选项。

Oracle Scheduler(Oracle Scheduler)

Oracle Scheduler(Scheduler)使数据库管理员和应用程序开发人员能够控制各种任务在数据库环境中执行的时间和位置。

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

  • • 根据时间或事件调度作业执行
  • • 以建模业务需求的方式调度作业处理
  • • 管理和监控作业
  • • 在集群环境中执行和管理作业

程序对象(程序)包含有关 Scheduler 将运行的命令的元数据,包括任何参数的默认值。调度对象(调度)包含有关运行日期和时间以及重复模式的信息。作业对象(作业)将程序与调度关联起来。要定义执行什么以及何时执行,您需要分配程序、调度和作业之间的关系。

Scheduler 被实现为 DBMS_SCHEDULER PL/SQL 包中的一组函数和过程。您可以使用此包或 Enterprise Manager 创建和操作 Scheduler 对象。因为 Scheduler 对象是标准的数据库对象,所以您可以使用系统和对象权限来控制对它们的访问。

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

Figure 22-8 Scheduler Components(图 22-8 Scheduler 组件)

另请参见:

  • • “Job Queue Processes (CJQ0 and Jnnn)”(作业队列进程 (CJQ0 和 Jnnn))
  • • 《Oracle AI Database Administrator’s Guide》,了解 Scheduler

Performance and Tuning(性能与调优)

作为 DBA,您负责 Oracle 数据库的性能。通常,性能问题源于不可接受的响应时间(即完成指定工作负载的时间)或吞吐量(即在指定时间内可以完成的工作量)。

典型问题包括:

  • • CPU 瓶颈
  • • 内存结构过小
  • • I/O 容量问题
  • • 低效或高负载的 SQL 语句
  • • 调优 SQL 语句后出现意外的性能回归
  • • 并发和争用问题
  • • 数据库配置问题

调优的一般目标通常是改善响应时间、提高吞吐量,或两者兼而有之。一个具体且可衡量的目标可能是“将指定 SELECT 语句的响应时间减少到 5 秒以下”。此目标是否可实现取决于可能受 DBA 控制或不受 DBA 控制的因素。通常,调优是通过尽可能高效地使用数据库资源来实现具体、可衡量和可实现的调优目标的努力。

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

  • • 执行预调优准备
  • • 定期主动调优数据库
  • • 在用户报告性能问题时被动调优数据库
  • • 识别、调优和优化高负载 SQL 语句

本节介绍 Oracle AI Database 性能调优的基本方面,包括顾问程序的使用。Oracle AI Database 顾问程序提供有关如何应对关键数据库管理挑战的具体建议,涵盖空间、性能和撤消管理等广泛领域。

  • • Database Self-Monitoring
    自监控在数据库执行常规操作时进行,确保数据库在问题出现时就能感知到。Oracle AI Database 可以发送服务器生成的警报来通知您即将发生的问题。
  • • Automatic Workload Repository (AWR)
    自动工作负载存储库(AWR)是一个历史性能数据存储库,包含系统、会话、单个 SQL 语句、段和服务的累积统计信息。
  • • Automatic Database Monitor (ADDM)
    使用 AWR(自动工作负载存储库)中捕获的统计信息,ADDM 自动并主动地诊断数据库性能,并确定如何解决已识别的问题。您也可以手动运行 ADDM。
  • • Active Session History (ASH)
    活动会话历史(ASH)每秒对活动数据库会话进行采样,将数据写入内存和持久存储。ASH 是数据库自管理框架的组成部分,对于诊断性能问题非常有用。
  • • Application and SQL Tuning
    Oracle 数据库完全自动化了 SQL 调优过程。

另请参见:

《Oracle AI Database Get Started with Performance Tuning》和《Oracle AI Database SQL Tuning Guide》,了解如何实施 Oracle 性能方法

Database Self-Monitoring(数据库自监控)

自监控在数据库执行常规操作时进行,确保数据库在问题出现时就能感知到。Oracle AI Database 可以发送服务器生成的警报来通知您即将发生的问题。

当问题发生或数据与每秒物理读取次数或 SQL 响应时间等指标的预期值不匹配时,会自动生成警报。指标是累积统计量的变化率。服务器生成的警报可以基于用户指定的阈值级别,也可以因为发生了某个事件而触发。

服务器生成的警报不仅会识别问题,有时还会建议如何解决报告的问题。例如,一个警报指出快速恢复区空间即将耗尽,并建议应删除过时的备份或添加额外的磁盘空间。

另请参见:

《Oracle AI Database Administrator’s Guide》

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

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

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

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

Figure 22-9 Automatic Workload Repository (AWR)(图 22-9 自动工作负载存储库 (AWR))

AWR 基线是在系统处于峰值负载且性能良好的时期内通常获取的一组统计比率。您可以指定一对或一系列 AWR 快照作为基线。通过使用 AWR 报告将性能不佳期间捕获的统计信息与基线进行比较,您可以诊断问题。

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

另请参见:

  • • “Manageability Monitor Processes (MMON and MMNL)”(可管理性监控器进程 (MMON 和 MMNL))
  • • “The SYSAUX Tablespace”(SYSAUX 表空间)
  • • 《Oracle AI Database Performance Tuning Guide》,了解 AWR
  • • 《Oracle AI Database Administrator’s Guide》,了解如何管理自动维护任务

Automatic Database Monitor (ADDM)(自动数据库监控器 (ADDM))

使用 AWR(自动工作负载存储库)中捕获的统计信息,ADDM 自动并主动地诊断数据库性能,并确定如何解决已识别的问题。您也可以手动运行 ADDM。

自动数据库诊断监控器(ADDM)是 Oracle 数据库内置的一种自顾问程序。ADDM 对系统性能采用整体方法,将时间作为不同组件之间的通用衡量标准。ADDM 识别出消耗时间最多的 Oracle 数据库区域。

例如,数据库可能花费过多的时间等待空闲数据库缓冲区。ADDM 会深入分析以找出问题的根本原因,而不仅仅是表面现象,并报告问题对整个 Oracle 数据库的影响。在此过程中只会产生最小的开销。

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

除了报告潜在的性能问题外,ADDM 还会记录数据库中非问题区域。对于不会显著影响数据库性能的子组件(如 I/O 和内存),会在早期阶段从分类树中修剪掉。ADDM 会列出这些子组件,以便您可以快速看到在这些区域执行操作几乎没有好处。

另请参见:

《Oracle AI Database Get Started with Performance Tuning》和《Oracle AI Database Performance Tuning Guide》

Active Session History (ASH)(活动会话历史 (ASH))

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

与自动工作负载存储库(AWR)收集的实例级统计信息不同,数据库在会话级别收集 ASH 统计信息。活动会话是指正在使用 CPU 且未等待空闲等待类中事件的会话。

您可以使用 Enterprise Manager 或 SQL 脚本生成 ASH 报告,这些报告收集在指定时间段内收集的会话统计信息。您可以将 ASH 报告用于:

  • • 分析自动数据库诊断监控器(ADDM)未识别的短暂性能问题
  • • 按各种维度或其组合(例如时间、会话、模块、操作或 SQL ID)进行范围界定或有针对性的性能分析

例如,用户通知您数据库在晚上 10:00 到 10:02 之间速度很慢。然而,这 2 分钟的性能下降只占晚上 10:00 到 11:00 之间 AWR 快照间隔的一小部分,并且在 ADDM 的结果中并未出现。ASH 报告可以帮助识别此短暂问题的根源。

另请参见:

《Oracle AI Database Get Started with Performance Tuning》和《Oracle AI Database Performance Tuning Guide》

Application and SQL Tuning(应用程序和 SQL 调优)

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

ADDM 会识别出消耗异常高系统资源并因此导致性能问题的 SQL 语句。此外,AWR 会自动捕获在 CPU 和共享内存消耗方面排名靠前的 SQL 语句。高负载 SQL 语句的识别是自动进行的,无需干预。

  • • EXPLAIN PLAN Statement
    EXPLAIN PLAN 等工具使您能够查看优化器选择的执行计划。
  • • Optimizer Statistics Advisor
    Optimizer Statistics Advisor 是一种诊断软件,用于分析您当前收集统计信息的方式、现有统计信息收集作业的有效性以及所收集统计信息的质量。Optimizer Statistics Advisor 使用与自动数据库诊断监控器(ADDM)、SQL Performance Analyzer 和其他顾问程序相同的顾问程序框架。
  • • SQL Tuning Advisor
    自动 SQL 调优的接口是 SQL Tuning Advisor,它在系统维护窗口期间作为维护任务自动运行。
  • • SQL Access Advisor
    使用 SQL Access Advisor 协助您分析 SQL 查询,并确定优化模式对象或调优查询的方法。
  • • SQL Plan Management
    通过使用 SQL 计划管理来管理 SQL 执行计划,仅执行经过测试和验证的计划。
EXPLAIN PLAN Statement(EXPLAIN PLAN 语句)

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

EXPLAIN PLAN 显示了如果当前会话中立即执行指定的 SQL 查询,其查询计划将是什么。其他工具有 Oracle Enterprise Manager 和 SQL*Plus 的 AUTOTRACE 命令。

另请参见:

《Oracle AI Database SQL Language Reference》,了解 EXPLAIN PLAN

Optimizer Statistics Advisor(Optimizer Statistics Advisor)

Optimizer Statistics Advisor 是一种诊断软件,用于分析您当前收集统计信息的方式、现有统计信息收集作业的有效性以及所收集统计信息的质量。Optimizer Statistics Advisor 使用与自动数据库诊断监控器(ADDM)、SQL Performance Analyzer 和其他顾问程序相同的顾问程序框架。

Optimizer Statistics Advisor 相比依赖最佳实践的传统方法具有以下优势:

  • • 提供易于理解的报告
  • • 提供脚本来实施必要的修复,而无需更改应用程序代码
  • • 每天在维护窗口中运行一次名为 AUTO_STATS_ADVISOR_TASK 的预定义任务
  • • 在 DBMS_STATS 包中提供一个 API,使您能够手动创建和运行任务、在数据字典视图中存储发现结果和建议、为任务生成报告,并在必要时实施更正
  • • 与 Oracle Enterprise Manager(Enterprise Manager)等现有工具集成

Optimizer Statistics Advisor 维护着一些规则,这些规则是 Oracle 提供的标准,顾问程序根据这些标准执行检查。这些规则体现了基于当前功能集的 Oracle 最佳实践。如果最佳实践在版本之间发生变化,那么 Optimizer Statistics Advisor 规则也会相应改变。通过这种方式,顾问程序始终提供最新的建议。

Optimizer Statistics Advisor 检查统计信息收集过程,然后生成一份发现结果报告,发现结果是对规则的违反。如果顾问程序提出建议,并据此提议采取行动,那么您可以自动实施这些行动,或者生成可编辑、可执行的 PL/SQL 脚本。

顾问程序任务在维护窗口自动运行,但您也可以按需运行它。

另请参见:

  • • 《Oracle AI Database SQL Tuning Guide》,了解有关 Optimizer Statistics Advisor 的更多信息
  • • 《Oracle AI Database PL/SQL Packages and Types Reference》,了解 DBMS_STATS 包
SQL Tuning Advisor(SQL Tuning Advisor)

自动 SQL 调优的接口是 SQL Tuning Advisor,它在系统维护窗口期间作为维护任务自动运行。

在每次自动运行期间,顾问程序会选择数据库中的高负载 SQL 查询,并生成调优这些查询的建议。

SQL Tuning Advisor 的建议分为以下几类:

  • • 统计分析
  • • SQL 概要分析
  • • 访问路径分析
  • • SQL 结构分析

SQL 概要文件包含特定于某条 SQL 语句的附加统计信息,使优化器能够生成更好的执行计划。本质上,SQL 概要文件是一种分析查询的方法。访问路径分析和 SQL 结构分析对于调优正在开发的应用程序或内部开发的生产应用程序都非常有用。

SQL Tuning Advisor 的一个主要优势是,解决方案来自优化器本身,而不是外部工具。因此,调优是由负责执行计划和 SQL 性能的数据库组件来完成的。调优过程可以考虑 SQL 语句过去的执行统计信息,并为该语句定制优化器设置。

另请参见:

  • • “Overview of the Optimizer”(优化器概述)
  • • 《Oracle AI Database Get Started with Performance Tuning》和《Oracle AI Database SQL Tuning Guide》
SQL Access Advisor(SQL Access Advisor)

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

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

诸如分区和索引之类的模式对象对于优化复杂的数据密集型查询至关重要。但是,这些对象的创建和维护可能非常耗时,并且空间需求可能很大。SQL Access Advisor 通过为指定的工作负载推荐数据结构,帮助满足性能目标。

您可以使用向导从 Enterprise Manager 运行 SQL Access Advisor,或者使用 DBMS_ADVISOR 包。DBMS_ADVISOR 由一组分析和顾问函数及过程组成,可从任何 PL/SQL 程序中调用。

另请参见:

《Oracle AI Database Get Started with Performance Tuning》和《Oracle AI Database SQL Tuning Guide》

SQL Plan Management(SQL 计划管理)

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

默认情况下,SQL 计划管理(SPM)演进顾问程序每天在计划的维护窗口中运行,对所有未接受的计划进行排名,并对尽可能多的计划执行测试执行。SPM 演进顾问程序选择 SQL 计划基线中成本最低的已接受计划,与每个未接受的计划进行比较。如果未接受的计划的性能明显优于现有的已接受计划,则顾问程序会接受它。

高频 SPM 在启用时,将在维护窗口之外以周期性后台任务的形式执行 SPM 演进顾问程序,以便更及时地提高性能。高频任务将识别使用大量系统资源的 SQL 语句,并检查先前使用的 SQL 执行计划是否性能更好。如果是这种情况,将创建一个新的 SQL 计划基线,以强制执行先前的 SQL 执行计划并修复 SQL 性能回归。

从 Oracle Database 26ai 开始,实时 SPM 在启用后,如果 SQL 语句使用新的 SQL 执行计划,将立即启动性能分析。如果先前见过的 SQL 执行计划性能更好,则将立即创建一个新的 SQL 计划基线,而无需依靠后台任务来完成此操作。

另请参见:

  • • 《Tools for Database Administrators》
  • • 《Oracle AI Database SQL Tuning Guide》,了解 SQL 计划管理