数据库服务事件

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

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

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

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

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

事件服务 - 事件类型

数据库服务事件类型

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

注意:

数据库服务事件

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

友好名称 事件名称 说明 修正 事件类型 阈值
资源使用率 - 磁盘使用量 HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE 如果 VM 来宾文件系统空闲空间低于操作系统 df(1) 命令确定的 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 的事件。 AVAILABILITY-DB_GUEST-CRS_INSTANCE.DOWN com.oraclecloud.databaseservice.dbnode.critical(如果为)。DOWN 和 NOT “user_action” 不适用
CRS 状态 - 启动/关闭 AVAILABILITY.DB_GUEST.CRS_INSTANCE.DOWN_CLEARED 在确定 CRS 关闭事件已清除后,将创建类型为 INFORMATION 的事件。 不适用 com.oraclecloud.databaseservice.dbnode.information(如果为)。向下清除 ) 不适用
CRS 状态 - 启动/关闭 AVAILABILITY.DB_GUEST.CRS_INSTANCE.EVICTION 创建类型为 CRITICAL 的事件。 可用性 - DB_GUEST-CRS_INSTANCE-EVICTION com.oraclecloud.databaseservice.dbnode.critical 不适用
SCAN 监听程序启动/关闭 AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN 当 SCAN 监听程序关闭时,将创建 DOWN 事件。当 SCAN 监听程序因用户操作(例如使用服务器控制实用程序 (srvctl) 或监听程序控制 (lsnrctl) 命令)或任何使用这些命令的 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)而关闭时,该事件的类型为 INFORMATION。当 SCAN 监听程序意外关闭时,事件的类型为 CRITICAL。启动 SCAN 监听程序时将创建相应的 DOWN_CLEARED 事件。
每个集群有三个 SCAN 监听程序,称为 LISTENER_SCAN[1,2,3]。
AVAILABILITY-DB_CLUSTER-SCAN_LISTENER-DOWN com.oraclecloud.databaseservice.dbnode.critical(如果为)。DOWN 和 NOT “user_action” 不适用
SCAN 监听程序启动/关闭 AVAILABILITY.DB_CLUSTER.SCAN_LISTENER.DOWN_CLEARED 在确定已关闭 SCAN 监听程序的事件已清除后,将创建类型为 INFORMATION 的事件。 不适用 com.oraclecloud.databaseservice.dbnode.information(如果为)。向下清除 ) 不适用
网络监听程序启动/关闭 AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN 当客户机监听程序关闭时,将创建 DOWN 事件。当客户机监听程序因用户操作(例如使用服务器控制实用程序 (srvctl) 或监听程序控制 (lsnrctl) 命令)或任何使用这些命令的 Oracle Cloud 维护操作(例如执行网格基础结构软件更新)而关闭时,事件的类型为 INFORMATION。当客户机监听程序意外关闭时,事件属于 CRITICAL 类型。启动客户机监听程序时将创建相应的 DOWN_CLEARED 事件。
每个节点都有一个客户机监听程序,每个监听程序名为 LISTENER。
AVAILABILITY-DB_GUEST-CLIENT_LISTENER.DOWN com.oraclecloud.databaseservice.database.critical(如果为)。DOWN 和 NOT “user_action” 不适用
网络监听程序启动/关闭 AVAILABILITY.DB_GUEST.CLIENT_LISTENER.DOWN_CLEARED 在确定客户端监听程序关闭的事件已清除后,将创建类型为 INFORMATION 的事件。 不适用 com.oraclecloud.databaseservice.database.information(如果为)。向下清除 ) 不适用
CDB 上/下 AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN 数据库实例关闭时将创建 DOWN 事件。当数据库实例因用户操作(例如使用 SQL*Plus (sqlplus) 或 Server Control Utility (srvctl) 命令)或使用这些命令的任何 Oracle Cloud 维护操作(例如执行数据库主目录软件更新)而关闭时,该事件属于 INFORMATION 类型。当数据库实例意外关闭时,事件的类型为 CRITICAL。启动数据库实例时会创建相应的 DOWN_CLEARED 事件。 可用性 - DB_GUEST-CDB_INSTANCE-DOWN com.oraclecloud.databaseservice.database.critical(如果为)。DOWN 和 NOT “user_action” 不适用
CDB 上/下 AVAILABILITY.DB_GUEST.CDB_INSTANCE.DOWN_CLEARED 在确定 CDB 关闭事件已清除后,将创建类型为 INFORMATION 的事件。 不适用 com.oraclecloud.databaseservice.database.information(如果为)。向下清除 ) 不适用
严重数据库错误 HEALTH.DB_CLUSTER.CDB.CORRUPTION 在主数据库或备用数据库中检测到数据库损坏。对于指示物理块损坏、逻辑块损坏或丢失写入导致的逻辑块损坏的任何特定错误,将解析数据库 alert.log。 HEALTH-DB_CLUSTER-CDB-CORRUPTION com.oraclecloud.databaseservice.database.critical 不适用
其他数据库错误 HEALTH.DB_CLUSTER.CDB.ARCHIVER_HANG 如果 CDB 无法归档活动的联机重做日志或无法以足够快的速度归档活动的联机重做日志到日志归档目标,则会创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-ARCHIVER_HANG com.oraclecloud.databaseservice.database.critical 不适用
其他数据库错误 HEALTH.DB_CLUSTER.CDB.DATABASE_HANG 当进程或会话在 CDB 中变得无响应时,将创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-DATABASE_HANG com.oraclecloud.databaseservice.database.critical 不适用
备份故障 HEALTH.DB_CLUSTER.CDB.BACKUP_FAILURE 如果 v$rman_status 视图中报告了状态为“失败”的 CDB 备份,则会创建类型为 CRITICAL 的事件。 HEALTH-DB_CLUSTER-CDB-BACKUP_FAILURE com.oraclecloud.databaseservice.database.critical 不适用
备份故障 HEALTH.DB_CLUSTER.CDB.BACKUP_FAILURE_CLEARED 创建类型为 INFORMATION 的事件。 不适用 com.oraclecloud.databaseservice.database.information 不适用
磁盘组使用量 HEALTH.DB_CLUSTER.DISK_GROUP.FREE_SPACE 当 ASM 磁盘组达到 90% 或更高的空间使用率时,将创建类型为 CRITICAL 的事件。当 ASM 磁盘组空间使用量低于 90% 时,将创建类型为 INFORMATION 的事件。 HEALTH-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]

参数:

参数 说明
add|remove|print| 添加、删除或输出封锁条件。
-targettype type
Target type:host|crs|asm|asmdg|database|dbbackup|db_dataguard|
db_tablespace|pdb_tablespace|pdb|listener|service|os
仅将封锁限制在指定的目标类型。
host:整个节点处于封锁状态。If there is host blackout, then every blackout element that’s shown true in the Telemetry JSON will have the reason for the blackout.
crs: Blackout the availability of the Oracle Clusterware resource or events in the Oracle Clusterware logs.
asm: Blackout the availability of Oracle Automatic Storage Management (Oracle ASM) on this machine or events in the Oracle ASM alert logs.
asmdg: Blackout an Oracle ASM disk group.
database: Blackout the availability of an Oracle Database, Oracle Database backup, tablespace, and so on, or events in the Oracle Database alert logs.
dbbackup: Blackout Oracle Database backup events (such as CDB or archive backups).
db_dataguard: Blackout Oracle Data Guard events.
db_tablespace: Blackout Oracle Database tablespace events (container database).
pdb_tablespace: Blackout Oracle pluggable database tablespace events (pluggable database).
pdb: Blackout Oracle pluggable database events.
listener: Blackout the availability of a listener.
service: Blackout the availability of a service.
os: Blackout one or more operating system records.
-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 小时(24 小时)。
-c\|-local 指定封锁应设置为 cluster-wide 还是 local。
默认情况下,封锁设置为 local。
-reason comment 指定封锁的描述性原因。
-docollection 使用此选项可执行自动诊断收集,即使为此目标设置了封锁也是如此。

示例:

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

要封锁事件:ORA-00600 on targettype:database,target:mydb

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

要封锁事件:ORA-04031 on targettype:database,target:all

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

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

tfactl blackout add -targettype dbbackup -target mydb

要封锁 targettype 上的 db dataguard 事件:db_dataguard,目标:mydb

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

要在 targettype 上封锁数据库表空间事件: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                                   |
'---------------+---------------------+-----------+------------------------------+------------------------------+--------+---------------+--------------------------------------'

要删除以下事件上的封锁:ORA-00600 on targettype:database,target:mydb

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

要删除目标类型上数据库备份事件的封锁: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