#告警事件

YashanDB实现了一套告警机制,当数据库发生特定状况时,在告警日志中上报告警事件,状况解除时,消除告警事件,也存在一些只需要上报而无需消除的告警事件,例如死锁,由于其非数据库内部错误,一般由于业务逻辑引起,人工介入修复后可自动解锁,系统上报告警后无需再跟踪此事件。

本文将列出YashanDB所有的告警事件信息,以及遇到该告警事件时的处理建议。

首字母索引

a c d g i l m s v

# AllocatorExhausted

当内存使用量大于80%时上报告警,低于70%时消除告警。

本告警事件需进行消除。

处理建议:

  • 查询视图V$ALLOCATOR,如果MAX_MEMORY_USED等于TOTAL_MEMORY,证明对于的内存分配器内存已经出现耗尽。
  • 如果是列式虚拟内存缓冲区内存不足,可以调大COLUMNAR_VM_BUFFER_SIZE, 也可以调小COLUMNAR_MAX_SORT_MEM(隐藏参数,默认值512M),COLUMNAR_MAX_JOIN_MEM(隐藏参数,默认值512M)或者COLUMNAR_BULK_SIZE。

# CursorExhausted

当cursor申请不到时,上报cursor不足告警。 当cursor pool中可用cursor达到30%及以上,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查配置项CURSOR_POOL_SIZE(隐藏参数,默认值32M)的大小是否合适,不合适调大。
  • 检查业务并发量是否过高。
  • 检查_SESSION_RESERVED_CURSORS(隐藏参数,默认值8)是否太小。

# DatabaseForceExit

最大保护模式下,同步备机异常,执行shutdown abort时,可能会出现buffer太小(DATA_BUFFER_SIZE配置太小)导致无法正常执行checkpoint,shutdown abort卡住,数据库检测到该情形时会强制退出,上报告警。 最大保护模式下,同步备机异常,事务无法提交,执行shutdown immediate时,数据库等待事务提交,等待一段时间后会强制退出,上报告警。

本告警事件不进行消除。

处理建议:

  • 检查同步备机异常的原因,修复异常备机或者变更同步备机。
  • 若DATA_BUFFER_SIZE配置太小引起shutdown abort卡住,重启后需要调整该参数的大小。

# DatabaseIsAbnormal

当数据库出现故障时,数据库被置为abnormal状态,上报告警。

本告警事件不进行消除。

处理建议:

  • 检查备节点是否正常。
  • 检查数据库数据文件是否被删除或者异常。
  • 检查数据库redo文件是否被删除或者异常。
  • 检查磁盘空间是否足够。

# DataBucketExhausted

当LSC表转换时获取不到对应的tablespace下可用的databucket(bucket对应磁盘空间不足)时,上报bucket资源耗尽告警。当bucket的空间又降到水位线下,变为可用,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查databucket对应的磁盘空间大小是否足够,如不够,需要增加databucket,或者清理无用LSC表释放表空间。
  • 检查配置项BUCKET_RESERVED_SPACE,表示databucket所在磁盘会至少保留多少磁盘空间就不可写入。如设置太大可适当调小。

# DeadLock

当以下3种死锁发生时候,数据库会选择死锁环中的一个会话返回error,记录告警日志。

  • 事务死锁,事务修改相同的数据产生并发等待,可能导致死锁。
  • Xslot死锁,页面内事务槽位(Xslot)资源不足时,会产生事务等待,可能导致死锁。
  • 表锁死锁,事务之间对表加共享锁与排他锁时,会产生事务等待,可能导致死锁。

本告警事件不进行消除。

处理建议:

  • 主动释放发生死锁等待的事务。
  • 排查产生死锁的业务,调整业务,避免再次产生死锁。

# DistributeNodeDisconnect

分布式下节点发生异常时上报告警,节点恢复后消除告警。

本告警事件需进行消除。

处理建议:

  • 检查分布式节点间的网络连接是否正常。
  • 检查是否有分布式节点进程退出。

# GtsUpdateTimeout

GTS更新超时的时候,记录告警日志。

本告警事件不进行消除。

处理建议:

  • 检查网络连接是否正常。
  • 检查节点是否正常。

# Incident

当事件记录一小时超过5次,一天超过25次时,会记录一条防洪告警。

本告警事件不进行消除。

处理建议:

  • 检查告警事件,消除相关告警。

# LockExhausted

当锁申请不到时,上报锁资源不足告警。 当锁区中可用资源达到30%及以上,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查配置项LOCK_POOL_SIZE(隐藏参数,默认值32M)的大小是否合适,不合适调大。
  • 检查业务并发量是否过高。
  • 检查_SESSION_RESERVED_LOCKS(隐藏参数,默认值16)是否太小。

# MemoryPoolExhausted

当memory pool满之后,上报memory pool不足告警。当memory pool的可用空间达到30%及以上,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查对应的MEMPOOL大小是否合适,不合适调大。
  • 检查业务并发量是否过高。

# SessionExhausted

当连接数满的时候,上报连接数满告警。当可用连接数达到30%及以上,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查配置项MAX_SESSIONS的大小是否合适,不合适调大。
  • 通过V$SESSION可以检查活跃连接,查看业务并发量是否过高。
  • 通过预留连接登陆后,kill掉长时间不工作的会话。

# SpaceFull

当表空间已满,且申请不到页面的时候,记录告警日志。

本告警事件不进行消除。

处理建议:

  • 扩展表空间。
  • 删除表空间上无用的对象,或者对稀疏的表执行shrink操作释放空间。

# StandbyDisconnect

当主机发现备机断连的时候,记录告警日志。当主机发现备机重新连接上时,记录消除告警的日志。

本告警事件需进行消除。

处理建议:

  • 检查主备间的网络连接是否正常。
  • 检查备机是否退出。

# vgdFull

LSC表配有Delta存储,当有少量的数据插入到一张LSC表时,数据会被暂时放入Delta存储,当到达阈值,或者满足一定的条件或操作时整合为SCOL文件。当Delta存储满时上报insert buffer不足告警。当转换了一个或若干Delta后,有可以插入的Delta存储空间,消除告警。

本告警事件需进行消除。

处理建议:

  • 检查TABXFMR$系统表,查看转换任务是否完成。
  • 检查LSC表上是否还有未完成的事务。未完成的事务会阻塞Delta存储向SCOL存储格式转换的任务。