首页 > 数据库 > 国内数据库 > YashanDB健康检查
YashanDB提供健康检查框架,用于数据库运行诊断检查。
健康检查也称为检查器,检查数据库的各个组件,如检测文件损坏、数据块损坏、redo日志损坏等,并生成一份报告,记录发现的错误以及错误带来的影响。
可以通过如下两种方式运行健康检查:
健康检查执行的结果将存储在自动诊断存储库中。 健康检查必须在数据库为OPEN模式或者MOUNT模式下运行。
数据库结构完整性检查
此检查验证数据库文件的完整性,在检查到数据库文件(控制文件、redo文件、数据文件、归档文件)不可访问、损坏或不一致时报告失败。
数据块完整性检查
此检查可检测磁盘映像块损坏,例如checksum失败、头尾不匹配以及块内的逻辑不一致。对于页面损坏,通常可以通过备库或者是页面修复工具来修复。
单个数据文件检查
此检查可检测数据文件可访问性,例如数据文件所有的块损坏,包含有效的块可未使用的块等。
redo完整性检查
此检查可检测数据库的一致性和所有的redo文件的头部信息,避免数据库重启后无法恢复到一致性点,数据库不可用。
单个redo文件检查
此检查可检测单个redo文件的可访问性和redo块损坏。
归档日志文件检查
此检查检测单个归档日志文件的可访问性和内容损坏。
死锁检测检查
此检查项检测用户行为上的事务死锁,在检测出死锁后会在trace目录下(按seesion id的trace文件)报告出具体的死锁环信息,即Wait-For-Graph(WFG)。
用户可以手动调用DBMS_HM.RUN_CHECK程序运行健康检查,该程序需提供运行状况检查名称和运行的名称(自定义),如下所示:
若要获取运行状况检查名称的列表,请运行以下查询:
输出的内容如下:
大多数健康检查需要输入参数,可以通过视图 V$HM_CHECK_PARAM 查看参数名称和说明。有些参数是必须的,有些参数是可选的。可选参数输入NULL 则表示使用默认值。 以下查询显示所有健康检查的参数信息:
输出的内容如下:
输入参数的名称和值在参数中传递是成对的,以分号
;分隔。下面示例演示如何将文件ID和块ID作为参数传递数据块完整性检查:
Note: 详细使用信息请参考开发手册 DBMS_HM的定义及参数说明。 健康检查的数据存储的上限是1000000条记录,如果超过该上线,新的诊断数据将覆盖掉最旧的诊断数据。
健康检查运行的结果和其他信息存储在自动诊断存储库中,但不会立即生成报告。 如果需要查看报告,用户可以通过执行DBMS_HM包生成,如果该报告尚不存在,系统首先从自动诊断存储库中的检查器运行数据生成,并以TEXT格式文件存储在自动诊断存储库主目录的HM子目录下,然后向用户输出显示。如果报告文件已存在,则系统仅执行输出显示。
DBMS_HM.GET_RUN_REPORT程序用于查看健康检查的报告,默认格式为文本。示例如下:
Note: 详细使用信息请参考开发手册 DBMS_HM的定义及参数说明。 如果报告信息太长,系统仅输出显示部分信息,完整信息需从报告文件中获得。
用户可以直接查询创建报告的自动诊断存储库数据,查看运行特定的健康检查的结果,而不是通过健康检查报告。 此数据可以通过视图V$HM_RUN和视图V$HM_FINDING获得。 下面的示例查询视图V$HM_RUN以确定检查器运行的历史记录:
下面示例查询视图V$HM_FINDING,获取run_id=44(反应式单个数据文件检查)的结果详细信息:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3078640/ ,如需转载,请注明出处,否则将追究法律责任。