数据库服务事件

通过数据库服务事件功能实施,您可以获得有关 Oracle 数据库或数据库系统上其他组件的健康问题的通知。

Oracle Database 或 Clusterware 可能无法正常运行,或者数据库系统上的各个系统组件可能已耗尽空间。客户不会收到此情况的通知。数据库服务事件功能实施可利用租户中的现有 OCI 事件服务和通知机制,为数据层操作和条件以及客户发出通知生成事件。然后,客户可以通过电子邮件、函数或流创建主题并订阅这些主题。

注意:

数据库系统上的事件流依赖于 Oracle Trace File Analyzer (TFA) 和 Oracle Database Cloud Service (DBCS) 代理。确保这些组件已启动且正在运行。

接收有关数据库服务事件的通知

订阅数据库服务事件并获得通知。要接收通知、订阅数据库服务事件并使用 Oracle 通知服务获取通知,请参阅通知概览。有关 Oracle Cloud Infrastructure Events 的更多信息,请参阅事件概览

事件服务 - 事件类型

  • 数据库 - 严重
  • 数据库节点 - 严重
  • 数据库节点 - 错误
  • 数据库节点 - 警告
  • 数据库节点 - 信息
  • 数据库系统 - 关键

数据库服务事件类型

下表列出了数据库服务发出的事件类型。

注意:

  • 严重事件由各种严重情况和错误触发,这些情况和错误会中断数据库或其他基本组件。例如,数据库、数据库节点和数据库系统的数据库无响应错误和可用性错误指示资源何时不可用。
  • 当数据库和其他关键组件按预期工作时,将触发信息事件。例如,清除 CRS、CDB、客户机或扫描监听程序关闭或启动这些组件将创建严重性为 INFO 的事件。
  • 阈值限制可减少客户针对类似事件事件接收的通知数,同时确保他们收到事件事件并及时收到提醒。

数据库服务事件

注意:

除了下面列出的事件之外,Oracle 还会分析其他事件,以提供最高级别的服务操作和支持,从而确保服务的高可用性。

表 - 数据库服务事件

Friendly Name 事件名称 说明 修正 事件类型 阈值
资源利用率 - 磁盘使用量 HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE

根据操作系统 df(1) 命令确定的以下文件系统的 VM 来宾文件系统空闲空间低于空闲空间 10% 时,将报告此事件:

  • /
  • /u01
  • /u02
  • /var(仅限 X8M 和更高版本)
  • /tmp(仅限 X8M 和更高版本)
HEALTH-DB_GUEST-FILESYSTEM-FREE_SPACE com.oraclecloud.databaseservice.dbnode.critical 严重阈值:90%
CRS 状态“启动/关闭” AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN. 检测到群集就绪服务 (Cluster Ready Service,CRS) 关闭时,将创建类型为 CRITICAL 的事件。 可用性 -DB_GUEST-CRS_INSTANCE.DOWN com.oraclecloud.databaseservice.dbnode.critical(如果 .DOWN 和 NOT "user_action") NA
AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN_CLEARED 一旦确定 CRS 关闭的事件已清除,就会创建类型为 INFORMATION 的事件。 NA com.oraclecloud.databaseservice.dbnode.information(如果 .DOWN_CLEARED) NA
AVAILABILITY.DB_GUEST.CRS_INSTANCE.EVICTION 创建了类型为 CRITICAL 的事件。 可用性 -DB_GUEST-CRS_INSTANCE- 定罪 com.oraclecloud.databaseservice.dbnode.critical NA
SCAN 监听程序启动/关闭 AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN

当 SCAN 监听程序关闭时,将创建 DOWN 事件。由于用户操作(例如使用服务器控制实用程序 (srvctl) 或侦听器控制 (lsnrctl) 命令)关闭 SCAN 侦听器时,或者使用这些命令的任何 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)时,此事件的类型为 INFORMATION。当 SCAN 监听程序意外关闭时,事件的类型为 CRITICAL。启动 SCAN 监听程序时将创建相应的 DOWN_CLEARED 事件。

每个集群有三个名为 LISTENER_SCAN[1,2,3] 的 SCAN 监听程序。

可用性 -DB_CLUSTER-SCAN_LISTENER- 关闭 com.oraclecloud.databaseservice.dbnode.critical (如果 .DOWN 和 NOT "user_action") NA
AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN_CLEARED 一旦确定 SCAN 监听程序关闭的事件已清除,就会创建类型为 INFORMATION 的事件。 NA com.oraclecloud.databaseservice.dbnode.information(如果 .DOWN_CLEARED) NA
网络监听程序启动/关闭 AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN

当客户机监听程序关闭时,将创建 DOWN 事件。由于用户操作(例如使用 Server Control Utility (srvctl) 或 Listener Control (lsnrctl) 命令)关闭客户端监听程序时,或者使用这些命令的任何 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)时,事件的类型为 INFORMATION。当客户机监听程序意外关闭时,事件的类型为 CRITICAL。启动客户机监听程序时将创建相应的 DOWN_CLEARED 事件。

每个节点有一个客户机监听程序,每个节点称为 LISTENER。

可用性 -DB_GUEST-CLIENT_LISTENER.DOWN com.oraclecloud.databaseservice.database.critical(如果 .DOWN 和 NOT "user_action") NA
AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN_CLEARED 一旦确定客户端监听程序关闭的事件已清除,就会创建类型为 INFORMATION 的事件。 NA com.oraclecloud.databaseservice.database.information(如果 .DOWN_CLEARED) NA
CDB 向上/向下 AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN 当数据库实例关闭时,将创建 DOWN 事件。由于用户操作(例如使用 SQL*Plus (sqlplus) 或服务器控制实用程序 (srvctl) 命令)关闭数据库实例时,或者使用这些命令的任何 Oracle Cloud 维护操作(例如执行数据库主目录软件更新)时,事件类型为 INFORMATION。当数据库实例意外关闭时,事件的类型为 CRITICAL。启动数据库实例时会创建相应的 DOWN_CLEARED 事件。 可用性 -DB_GUEST-CDB_INSTANCE- 关闭 com.oraclecloud.databaseservice.database.critical(如果 .DOWN 和 NOT "user_action") NA
AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN_CLEARED 一旦确定 CDB 关闭的事件已清除,就会创建类型为 INFORMATION 的事件。 NA com.oraclecloud.databaseservice.database.information(如果 .DOWN_CLEARED) NA
严重数据库错误 HEALTH.DB_CLUSTER.CDB.CORRUPTION 在主数据库或备用数据库上检测到数据库损坏。对于指示物理块损坏、逻辑块损坏或丢失写入导致的逻辑块损坏的任何特定错误,对数据库 alert.log 进行语法分析。 HEALTH-DB_CLUSTER-CDB-CORRUPTION com.oraclecloud.databaseservice.database.critical NA
其他 DB 错误 HEALTH.DB_CLUSTER.CDB.ARCHIVER_HANG 如果 CDB 无法归档活动的联机重做日志,或者无法足够快地归档活动联机重做日志到日志归档目标,则会创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-ARCHIVER_HANG com.oraclecloud.databaseservice.database.critical NA
HEALTH.DB_CLUSTER.CDB.DATABASE_HANG 当进程或会话在 CDB 中变得无响应时,将创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-DATABASE_HANG com.oraclecloud.databaseservice.database.critical NA
备份失败 HEALTH.DB_CLUSTER.CDB.BACKUP_FAILURE 如果 v$rman_status 视图中报告了状态为“发生故障”的 CDB 备份,则会创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-BACKUP_FAILURE com.oraclecloud.databaseservice.database.critical NA
HEALTH.DB_CLUSTER.CDB.BACKUP_FAILURE_CLEARED 创建了类型为 INFORMATION 的事件。 NA com.oraclecloud.databaseservice.database.information NA
磁盘组使用量 HEALTH.DB_CLUSTER.DISK_GROUP.FREE_SPACE 当 ASM 磁盘组达到 90% 或更高的空间使用量时,将创建类型为 CRITICAL 的事件。当 ASM 磁盘组空间使用量低于 90% 时,将创建类型为 INFORMATION 的事件。 健康 -DB_CLUSTER-DISK_GROUP-FREE_SPACE

com.oraclecloud.databaseservice.dbsystem.critical

com.oraclecloud.databaseservice.dbsystem.information(如果 < 90%)

当使用量命中 70%、80%、90% 和 100% 时,将发送相应的严重性为 4、3、2 和 1 的通知。

临时限制特定事件的自动诊断收集

使用 tfactl blackout 命令暂时禁止自动诊断收集。

如果为目标设置了封锁,则在扫描时,如果 Oracle Trace File Analyzer 在该目标的警报日志中找到事件,则会停止自动诊断收集。默认情况下,封锁将在 24 小时内生效。

您还可以在粒度级别限制自动诊断收集,例如,仅针对 ORA-00600,甚至仅针对具有特定参数的 ORA-00600

语法

tfactl blackout add|remove|print
    -targettype host|crs|asm|asmdg|database|dbbackup|db_dataguard|
        db_tablespace|pdb_tablespace|pdb|listener|service|os
    -target all|name
    [-container name]
    [-pdb pdb_name]
    -event all|"event_str1,event_str2"|availability
    [-timeout nm|nh|nd|none]
    [-c|-local|-nodes "node1,node2"]
    [-reason "reason for blackout"]
    [-docollection]

参数

表 - 参数

Parameter (参数) 说明
add|remove|print| 添加、删除或输出封锁条件。

-targettype type

目标类型:host|crs|asm|asmdg|database|dbbackup|db_dataguard|

db_tablespace|pdb_tablespace|pdb|listener|service|os

仅限制对指定目标类型的封锁。

host:整个节点处于封锁状态。如果存在主机封锁,则遥测 JSON 中显示的每个封锁元素都将具有封锁原因。

crs:封锁 Oracle Clusterware 日志中 Oracle Clusterware 资源或事件的可用性。

asm:封锁此计算机上的 Oracle Automatic Storage Management (Oracle ASM) 可用性或 Oracle ASM 预警日志中的事件。

asmdg:封锁 Oracle ASM 磁盘组。

database:封锁 Oracle Database 预警日志中 Oracle Database、Oracle Database 备份、表空间等或事件的可用性。

dbbackup:封锁 Oracle Database 备份事件(例如 CDB 或归档备份)。

db_dataguard:封锁 Oracle Data Guard 事件。

db_tablespace:封锁 Oracle Database 表空间事件(容器数据库)。

pdb_tablespace:封锁 Oracle 插接式数据库表空间事件(可插入数据库)。

pdb:封锁 Oracle 可插入数据库事件。

listener:封锁监听程序的可用性。

service:封锁服务的可用性。

os:封锁一个或多个操作系统记录。

-target all|name

指定要封锁的目标。可以指定目标列表(以逗号分隔)。

默认情况下,目标设置为 all

-container name 指定封锁将在其中生效的数据库容器名称 (db_unique_name)(对于 PDB、DB_TABLESPACE 和 PDB_TABLESPACE)。
-pdb pdb_name 指定封锁将在其中生效的 PDB(仅适用于 PDB_TABLESPACE)。
-events all|"str1,str2"

仅限制对不应触发自动收集的可用性事件或事件字符串的封锁,或者在遥测 JSON 中标记为封锁。

all:封锁指定目标的所有内容。

字符串:对于行的任何部分包含指定字符串的事故封锁。

指定逗号分隔的字符串列表。

-timeout nh|nd|none 指定超时前的封锁持续时间(小时数或天数)。缺省情况下,超时设置为 24 小时 (24h)。
-c|-local

指定封锁应设置为 cluster-wide 还是 local

缺省情况下,封锁设置为 local

-reason comment 指定封锁的说明性原因。
-docollection 使用此选项可以执行自动诊断收集,即使为此目标设置了封锁也是如此。

示例

以下是使用 tfactl blackout 命令的示例。

要在 targettype 上封锁事件:ORA-00600database,目标:mydb

tfactl blackout add -targettype database -target mydb -event "ORA-00600"

要在 targettype 上封锁事件:ORA-04031database,目标:all

tfactl blackout add -targettype database -target all -event "ORA-04031" -timeout 1h

要在 targettype 上封锁数据库备份事件:dbbackup,目标:mydb

tfactl blackout add -targettype dbbackup -target mydb

要封锁 targettype 上的 db 数据报事件:db_dataguard,目标:mydb

tfactl blackout add -targettype db_dataguard -target mydb -timeout 30m

要封锁 targettype 上的 db 表空间事件:db_tablespace,目标:system,容器:mydb

tfactl blackout add -targettype db_tablespace -target system -container mydb -timeout 30m

要封锁 targettype 上的 ALL 事件:host,目标:all

tfactl blackout add -targettype host -event all -target all -timeout 1h 
    -reason "Disabling all events during patching"

要打印封锁详细信息,请执行以下操作:

tfactl blackout print
.-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
|                                                                                myhostname                                                                                     |
+---------------+---------------------+-----------+------------------------------+------------------------------+--------+---------------+--------------------------------------+
| Target Type   | Target              | Events    | Start Time                   | End Time                     | Status | Do Collection | Reason                               |
+---------------+---------------------+-----------+------------------------------+------------------------------+--------+---------------+--------------------------------------+
| HOST          | ALL                 | ALL       | Thu Mar 24 16:48:39 UTC 2022 | Thu Mar 24 17:48:39 UTC 2022 | ACTIVE | false         | Disabling all events during patching |
| DATABASE      | MYDB                | ORA-00600 | Thu Mar 24 16:39:03 UTC 2022 | Fri Mar 25 16:39:03 UTC 2022 | ACTIVE | false         | NA                                   |
| DATABASE      | ALL                 | ORA-04031 | Thu Mar 24 16:39:54 UTC 2022 | Thu Mar 24 17:39:54 UTC 2022 | ACTIVE | false         | NA                                   |
| DB_DATAGUARD  | MYDB                | ALL       | Thu Mar 24 16:41:38 UTC 2022 | Thu Mar 24 17:11:38 UTC 2022 | ACTIVE | false         | NA                                   |
| DBBACKUP      | MYDB                | ALL       | Thu Mar 24 16:40:47 UTC 2022 | Fri Mar 25 16:40:47 UTC 2022 | ACTIVE | false         | NA                                   |
| DB_TABLESPACE | SYSTEM_CDBNAME_MYDB | ALL       | Thu Mar 24 16:45:56 UTC 2022 | Thu Mar 24 17:15:56 UTC 2022 | ACTIVE | false         | NA                                   |
'---------------+---------------------+-----------+------------------------------+------------------------------+--------+---------------+--------------------------------------'

要删除 targettype 上的事件 ORA-00600 的封锁:database,目标:mydb

tfactl blackout remove -targettype database -event "ORA-00600" -target mydb

要删除 targettype 上数据库备份事件的封锁:dbbackup,目标:mydb

tfactl blackout remove -targettype dbbackup -target mydb

要删除 targettype 上数据库表空间事件的封锁:db_tablespace,目标:system,容器:mydb

tfactl blackout remove -targettype db_tablespace -target system -container mydb

要删除 targettype 上主机事件的封锁:all,目标:all

tfactl blackout remove -targettype host -event all -target all

管理 Oracle Trace File Analyzer

要检查 Oracle Trace File Analyzer 的运行状态,请以 root 或非 root 用户身份运行 tfactl status 命令:

tfactl status
.----------------------------------------------------------------------------------------------.
| Host  | Status of TFA | PID    | Port | Version    | Build ID             | Inventory Status |
+-------+---------------+--------+------+------------+----------------------+------------------+
| node1 | RUNNING       | 41312  | 5000 | 22.1.0.0.0 | 22100020220310214615 | COMPLETE         |
| node2 | RUNNING       | 272300 | 5000 | 22.1.0.0.0 | 22100020220310214615 | COMPLETE         |
'----------------------------------------------------------------------------------------------'

要在本地节点上启动 Oracle Trace File Analyzer 守护进程,请以 root 用户身份运行 tfactl start 命令:

tfactl start
Starting TFA..
Waiting up to 100 seconds for TFA to be started..
. . . . .
Successfully started TFA Process..
. . . . .
TFA Started and listening for commands

要在本地节点上停止 Oracle Trace File Analyzer 守护进程,请以 root 用户身份运行 tfactl stop 命令:

tfactl stop
Stopping TFA from the Command Line
Nothing to do !
Please wait while TFA stops
Please wait while TFA stops
TFA-00002 Oracle Trace File Analyzer (TFA) is not running
TFA Stopped Successfully
Successfully stopped TFA..

管理数据库服务代理

查看 /opt/oracle/dcs/log/dcs-agent.log 文件以确定代理的问题。

要检查数据库服务代理的状态,请运行 systemctl status 命令:

systemctl status dbcsagent.service
dbcsagent.service
Loaded: loaded (/usr/lib/systemd/system/dbcsagent.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-04-01 13:40:19 UTC; 6min ago
Process: 9603 ExecStopPost=/bin/bash -c kill `ps -fu opc |grep "java.*dbcs-agent.*jar" |
    awk '{print $2}' ` (code=exited, status=0/SUCCESS)
Main PID: 10055 (sudo)
CGroup: /system.slice/dbcsagent.service
‣ 10055 sudo -u opc /bin/bash -c umask 077; /bin/java -Doracle.security.jps.config=/opt/oracle/...

要启动未运行的代理,请以 root 用户身份运行 systemctl start 命令:

systemctl start dbcsagent.service