故障、问题和事件
为便于诊断和解决问题,YashanDB引入了三个概念:故障、问题和事件。

故障

故障是YashanDB运行过程中可能出现的一些严重错误,由数据库内部定义。可以通过视图V$DIAG_FAULT查看相关故障的信息。

问题

问题是数据库运行过程中真实发生的故障,相同的故障可能会记录多个问题,相同故障的问题是通过问题键值进行区分的。可以通过视图V$DIAG_PROBLEM查看数据库运行过程中出现的问题。

事件

事件是单次出现的问题,数据库运行过程中,不同的会话在不同的时间可能产生相同的问题,数据库会创建多个事件,每个事件都有唯一标识的ID用于区分,也会记录当前会话的ID。可以通过视图V$DIAG_INCIDENT查看数据库运行过程中出现的严重错误,和获取更多的诊断数据,例如创建时间、会话ID、故障详细描述等。

--  该视图里定义当前YashanDB的所有故障信息
SELECT TYPE,code,description FROM V$DIAG_FAULT;

TYPE              CODE DESCRIPTION                                                      
--------- ------------ ---------------------------------------------------------------- 
YASF               101 cannot allocate memory                                          
YASF               102 too many open files                                             
YASF               103 no space left on device                                         
YASF               104 failed to open file                                             
YASF               105 failed to create file                                           
YASF               106 failed to write file                                            
YASF               107 file metadata changed, for example, permissions, timestamps, extended attributes, and user/group ID, etc
YASF               108 file is missing                                                 
YASF               109 file is moved                                                   
YASF               110 file system is unmounted                                        
YASF               111 failed to read file                                             
YASF               112 failed to extend file                                           
YASF               201 the data file is corrupted                                      
YASF               202 the redo log file is corrupted                                  
YASF               203 the ctrl files are corrupted                                    
YASF               204 data block versions are mismatching                             
YASF               205 the database is aborted                                         
YASF               206 the database needs to be repaired                               
YASF               207 deadlock detected                                               
YASF               208 inconsistent database startup                                   
YASF               209 watcher has an exception                                        
YASF               210 the user limit on the total number of watches was reached       
YASF               211 synchronization standby database destinations have failed    

当问题(严重错误)多次发生时,系统将为每次问题创建一个事件。 这些事件将在加上时间戳后,存储在自动诊断存储库中。每个事件都由事件ID标识,该ID在自动诊断存储库中是唯一的。

发生一个事件时,数据库将执行如下操作:

收集首次失败的诊断数据。
使用事件ID标记事件。
将事件dump到为该事件创建的自动诊断存储库子目录中。

事件防洪

一个问题可能会在短时间内产生数十个或数百个事件,这将导致系统中生成过多的诊断数据,占用 自动诊断存储库中的太多空间,并可能减慢诊断和解决问题的速度。由于这些原因,故障诊断机制将在达到洪水阈值后控制事件的生成。

受到洪水控制的事件只记录告警日志,不再dump事件。洪水控制事件提供了一种通知用户正在发生严重错误的方法,但不会存在诊断数据过载的现象。

事件洪水控制的阈值水平是预先确定的,无法更改。它们定义如下:

在一小时内同一问题发生5个事件后,此问题的后续事件将受到洪水控制。该问题的事件的正常(非洪水控制)记录将在下一个小时再次开始。
在一天内同一问题发生25个事件后,此问题的后续事件将受到洪水控制。该问题的事件的正常记录将在第二天再次开始。
在一小时内发生同一问题的50个事件,或者在一天内发生同一问题的250个事件后,此问题的后续事件永远不再记录到自动诊断存储库中。该情况下,数据库将向告警日志中写入一条消息,指示不会再记录其他事件。
Note: 事件洪水控制后不会再记录事件,但是会记录事件的防洪累计次数。 作为DBA,应时常排查是否有新的事件产生,及时定位解决问题。 事件和问题诊断数据的存储上限为1000000条,如果个数超过该上限,新的诊断数据会覆盖旧的诊断数据。

自动捕获诊断数据——“黑匣子”

YashanDB提供一种机制,在数据库进程出现故障宕机前,收集进程运行堆栈等信息,将诊断数据dump到自动诊断存储库中,这种主动诊断数据类似于飞机“黑匣子”飞行记录仪收集的数据。

Note: 当收集到 “黑匣子” 诊断数据,请打包诊断数据并及时联系我们的技术支持。


YashanDB
1 声望0 粉丝

崖山数据库系统YashanDB是深圳计算科学研究院自主设计研发的新型数据库管理系统,融入原创的有界计算、近似计算、并行可扩展和跨模融合计算理论,可满足金融、政企、能源等关键行业对高性能、高并发及高安全性的...