#告警事件
YashanDB实现了一套告警机制,当数据库发生特定状况时,在告警日志中上报告警事件,状况解除时,消除告警事件,也存在一些只需要上报而无需消除的告警事件,例如死锁,由于其非数据库内部错误,一般由于业务逻辑引起,人工介入修复后可自动解锁,系统上报告警后无需再跟踪此事件。
本文将列出YashanDB所有的告警事件信息,以及遇到该告警事件时的处理建议。
首字母索引
# 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实例和数据库实例重新加入集群,加入成功会消除告警。