#告警事件

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

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

首字母索引

a c d i l m s v

# AllocatorExhausted

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

本告警事件需进行消除。

处理建议:

  • 查询视图V$ALLOCATOR,如果MAX_MEMORY_USED等于TOTAL_MEMORY,证明对于的内存分配器内存已经出现耗尽。
  • 如果是列式虚拟内存缓冲区内存不足,可以调大COLUMNAR_VM_BUFFER_SIZE或者调小COLUMNAR_BULK_SIZE。

# AnalyzeDataForward

收集统计信息结果同步其他CN失败,记录告警日志。

本告警事件不进行消除。

处理建议:

  • 检查网络连接是否正常。
  • 检查其他CN节点是否正常。
  • 重新执行统计信息收集。

# CursorExhausted

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

本告警事件需进行消除。

处理建议:

  • 检查业务并发量是否过高。

# DatabaseForceExit

最大保护模式下,同步备库异常,执行shutdown abort时,可能会出现buffer太小(DATA_BUFFER_SIZE配置太小)导致无法正常执行checkpoint,shutdown abort卡住,数据库检测到该情形时会强制退出,上报告警。 最大保护模式下,同步备库异常,事务无法提交,执行shutdown immediate时,数据库等待事务提交,等待一段时间后会强制退出,上报告警。 共享集群形态下,YCS实例和数据库实例被踢出集群时,等待在途IO结束后会强制退出,避免数据损坏,上报告警。

本告警事件不进行消除。

处理建议:

  • 检查同步备库异常的原因,修复异常备库或者变更同步备库。
  • 若DATA_BUFFER_SIZE配置太小引起shutdown abort卡住,重启后需要调整该参数的大小。
  • 共享集群形态下,需排查磁盘和网络是否故障以及用ycsctl工具查看集群拓扑是否正确。

# DatabaseIsAbnormal

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

本告警事件不进行消除。

处理建议:

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

# DataBucketExhausted

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

本告警事件需进行消除。

处理建议:

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

# DeadLock

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

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

本告警事件不进行消除。

处理建议:

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

# DistributeNodeDisconnect

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

本告警事件需进行消除。

处理建议:

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

# ExceedIdleTime

会话空闲超过用户最大空闲时间,服务端会将断开该会话。

本告警事件不进行消除。

处理建议:

  • 会话不要空闲太长时间,如果不需要使用数据库就断开连接,避免占用资源。
  • 如果需要长时间连接,可通过修改用户对应profile的IDLE_TIME配置用户最长空闲时间。

# Incident

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

本告警事件不进行消除。

处理建议:

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

# LockExhausted

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

本告警事件需进行消除。

处理建议:

  • 检查业务并发量是否过高。

# MemoryPoolExhausted

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

本告警事件需进行消除。

处理建议:

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

# RsrcDropActivePlan

当分布式部署下删除非MN主节点正在生效的资源计划时,上报删除生效计划告警。

本告警事件无需进行消除。

处理建议:

  • 通过yasboot工具修改配置参数RESOURCE_MANAGER_PLAN,使其保持全局一致。

# RsrcPlanNotExists

当配置参数RESOURCE_MANAGER_PLAN指定的计划在数据库中不存在时,上报资源计划不存在告警。当创建了对应的资源计划,消除告警。

本告警事件需进行消除。

处理建议:

  • 使用系统中已经存在的计划。

# 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存储格式转换的任务。

# YcsDbFenced

共享集群中当前数据库实例和YCS实例被踢出集群,需要等待在途IO结束后强制停止数据库服务。

本告警事件需进行消除。

处理建议:

  • 用ycsctl工具检查集群配置和集群状态是否正常。
  • 在排除网络和磁盘故障后,重启YCS实例和数据库实例重新加入集群,加入成功会消除告警。