数据库服务事件
通过数据库服务事件功能实施,您可以获得有关 Oracle 数据库或数据库系统上其他组件的健康问题的通知。
Oracle Database 或 Clusterware 可能无法正常运行,或者数据库系统上的各个系统组件可能已耗尽空间。客户不会收到此情况的通知。数据库服务事件功能实施可利用租户中的现有 OCI 事件服务和通知机制,为数据层操作和条件以及客户发出通知生成事件。然后,客户可以通过电子邮件、函数或流创建主题并订阅这些主题。
注意:
数据库系统上的事件流依赖于 Oracle Trace File Analyzer (TFA) 和 Oracle Database Cloud Service (DBCS) 代理。确保这些组件已启动且正在运行。数据库服务事件类型
下表列出了数据库服务发出的事件类型。
注意:
- 严重事件由各种严重情况和错误触发,这些情况和错误会中断数据库或其他基本组件。例如,数据库、数据库节点和数据库系统的数据库无响应错误和可用性错误指示资源何时不可用。
- 当数据库和其他关键组件按预期工作时,将触发信息事件。例如,清除 CRS、CDB、客户机或扫描监听程序关闭或启动这些组件将创建严重性为
INFO
的事件。 - 阈值限制可减少客户针对类似事件事件接收的通知数,同时确保他们收到事件事件并及时收到提醒。
数据库服务事件
注意:
除了下面列出的事件之外,Oracle 还会分析其他事件,以提供最高级别的服务操作和支持,从而确保服务的高可用性。表 - 数据库服务事件
Friendly Name | 事件名称 | 说明 | 修正 | 事件类型 | 阈值 |
---|---|---|---|---|---|
资源利用率 - 磁盘使用量 | HEALTH.DB_GUEST.FILESYSTEM.FREE_SPACE |
根据操作系统
|
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 事件。由于用户操作(例如使用服务器控制实用程序 ( 每个集群有三个名为 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 ( 每个节点有一个客户机监听程序,每个节点称为 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 |
|
当使用量命中 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 |
|
添加、删除或输出封锁条件。 |
目标类型:
|
仅限制对指定目标类型的封锁。
|
-target all|name |
指定要封锁的目标。可以指定目标列表(以逗号分隔)。 默认情况下,目标设置为 |
-container name |
指定封锁将在其中生效的数据库容器名称 (db_unique_name )(对于 PDB、DB_TABLESPACE 和 PDB_TABLESPACE)。
|
-pdb pdb_name |
指定封锁将在其中生效的 PDB(仅适用于 PDB_TABLESPACE)。 |
-events all|"str1,str2" |
仅限制对不应触发自动收集的可用性事件或事件字符串的封锁,或者在遥测 JSON 中标记为封锁。
字符串:对于行的任何部分包含指定字符串的事故封锁。 指定逗号分隔的字符串列表。 |
-timeout nh|nd|none |
指定超时前的封锁持续时间(小时数或天数)。缺省情况下,超时设置为 24 小时 (24h)。 |
-c|-local |
指定封锁应设置为 缺省情况下,封锁设置为 |
-reason comment |
指定封锁的说明性原因。 |
-docollection |
使用此选项可以执行自动诊断收集,即使为此目标设置了封锁也是如此。 |
示例
以下是使用 tfactl blackout 命令的示例。
要在 targettype 上封锁事件:ORA-00600
:database
,目标:mydb
tfactl blackout add -targettype database -target mydb -event "ORA-00600"
要在 targettype 上封锁事件:ORA-04031
:database
,目标: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