数据库日志分析详解:
     ORACEL RAC 体系架构分析
     Oracle RAC 包含GI(Grid Infrastructure) 集群软件与Oracle数据库组成。
     GI包含两个最主要的组件:Clusterware集群软件和ASM存储软件,这两个软件提供数据库高可用能力。
     Oracle数据库至少由一个数据库实例和一个数据库文件组成。数据库实例部分处理内存和进程,数据库文件则由数据文件、控制文件、日志文件等组成。
    从集群架构解剖分析日志
     获取GI集群管理软件的日志路径,使用grid 用户登入,执行如下命令:
 [grid@db01 ~]$ adrci
 ADRCI: Release 19.0.0.0.0 - Production on Wed Aug 16 17:14:12 2023
 Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
 ADR base = "/u01/app/grid"
 adrci> show log
 Choose the home from which to view diagnostic logs:
 1: diag/asm/+asm/+ASM1
 2: diag/crs/db01/crs
 3: diag/clients/user_grid/host_2827697755_110
 4: diag/clients/user_root/host_2827697755_110
 5: diag/tnslsnr/db01/asmnet1lsnr_asm
 6: diag/tnslsnr/db01/listener_scan1
 7: diag/tnslsnr/db01/listener
 8: diag/asmcmd/user_grid/db01
 9: diag/asmcmd/user_oracle/db01
 10: diag/kfod/db01/kfod
    获取GI 集群asm 的日志路径,使用grid 登入,执行如下命令:
 [grid@db01 ~]$ sqlplus / as sysasm
 SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 16 17:17:55 2023
 Version 19.3.0.0.0
 Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 Connected to:
 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
 Version 19.3.0.0.0
 SQL> set line 500
 SQL> set pagesize 500
 SQL> col name for a30
 SQL> col value for a100    
 SQL> select name,value from v$diag_info;
 NAME                           VALUE
 ------------------------------ ----------------------------------------------------------------------------------------------------
 Diag Enabled                   TRUE
 ADR Base                       /u01/app/grid
 ADR Home                       /u01/app/grid/diag/asm/+asm/+ASM1
 Diag Trace                     /u01/app/grid/diag/asm/+asm/+ASM1/trace
 Diag Alert                     /u01/app/grid/diag/asm/+asm/+ASM1/alert
 Diag Incident                  /u01/app/grid/diag/asm/+asm/+ASM1/incident
 Diag Cdump                     /u01/app/grid/diag/asm/+asm/+ASM1/cdump
 Health Monitor                 /u01/app/grid/diag/asm/+asm/+ASM1/hm
 Default Trace File             /u01/app/grid/diag/asm/+asm/+ASM1/trace/+ASM1_ora_6871.trc
 Active Problem Count           0
 Active Incident Count          0
 ORACLE_HOME                    /u01/app/19c/grid
 12 rows selected.
    获取oracle数据库的日志路径,使用oracle 登入,执行如下命令:
 [oracle@db01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Aug 16 17:23:25 2023
 Version 19.3.0.0.0
 Copyright (c) 1982, 2019, Oracle.  All rights reserved.
 Connected to:
 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
 Version 19.3.0.0.0
SQL> set line 500 
 SQL> set pagesize 500 
 SQL> col name for a30
 SQL> col value for a100
 SQL> select name,value from v$diag_info;
 NAME                           VALUE
 ------------------------------ ----------------------------------------------------------------------------------------------------
 Diag Enabled                   TRUE
 ADR Base                       /u01/app/oracle
 ADR Home                       /u01/app/oracle/diag/rdbms/db/db01
 Diag Trace                     /u01/app/oracle/diag/rdbms/db/db01/trace
 Diag Alert                     /u01/app/oracle/diag/rdbms/db/db01/alert
 Diag Incident                  /u01/app/oracle/diag/rdbms/db/db01/incident
 Diag Cdump                     /u01/app/oracle/diag/rdbms/db/db01/cdump
 Health Monitor                 /u01/app/oracle/diag/rdbms/db/db01/hm
 Default Trace File             /u01/app/oracle/diag/rdbms/db/db01/trace/db01_ora_9977.trc
 Active Problem Count           0
 Active Incident Count          0
 ORACLE_HOME                    /u01/app/oracle/product/19c/db
12 rows selected.
     按应用属性分类,主要查看三项日志(alert、trace、redo):
 Alert 日志:Alert log files--警报日志。
 Trace 日志:主要记录了核心进程运行日志,主要需要关注的进程日志如下:
 a)    ohasd变为集群初始化的唯一始点,所有组件的守护进程和集群管理的资源统统被称为资源。
 ocssd : 它的主要功能是节点监控(Node Monitoring)和组管理(Group Management),它是CRS的核心进程之一。节点监控是指监控集群中节点的健康状况,监控的方法是通过网络心跳(network heartbeat)和磁盘心跳(disk heartbeat)实现的,如果集群中的节点连续丢失磁盘心跳或网络心跳,该节点就会被从集群中驱逐,也就是节点重启。组管理导致的节点重启,我们称之为node kill escalation。重启需要在指定的时间(reboot time,一般为3秒)内完成。网络心跳: ocssd.bin进程每秒钟向集群中的各个节点通过私网发送网络心跳信息,以确认各个节点是否正常。如果某个节点连续丢失网络心跳达到阀值,misscount(检查数据库心跳超时,默认30s:/oracle/app/19.3.0/grid/bin/crsctl get cssmisscount),集群会通过表决盘进行投票,使丢失网络心跳的节点被主节点驱逐出集群,即节点重启。如果集群只包含2个节点,则会出现脑裂,结果是节点号小的节点存活下来,即使是节点号小的节点存在网络问题。  磁盘心跳:ocssd.bin进程每秒钟都会向所有表决盘(Voting File)注册本节点的状态信息,这个过程叫做磁盘心跳。如果某个节点连续丢失磁盘心跳达到阀值disk timeout(检查数据库IO超时,默认200s:/oracle/app/19.3.0/grid/bin/crsctl get css disktimeout),则该节点会自动重启以保证集群的一致性。另外,CRS只要求[N/2]+1个表决盘可用即可,其中N为表决盘数量,一般为奇数。
 b)    oclsomon:这个进程负责监控ocssd是否挂起,如果发现ocssd.bin存在性能问题,则重启该节点。  
 c)    oprocd:这个进程只在Linux和Unix系统,并且第三方集群管理软件未安装的情况下才会出现。如果它发现节点挂起,则重启该节点。
 d)    evmd:(Event Manager事件管理器):当事情发生时生成事件,生成一个永久的子 evmlogger- Evmlogger,按需生成子级,扫描标注目录并调用标注。作为 Oracle 运行失败时自动重新启动
 Redo 日志: 重做日志(记录数据库的更改)。
 总结以上日志介绍,从oracle 方面有以下几个原因会触发重启。
     ocssd 进程自检发现网络心跳异常或者磁盘性能延时过高会触发重启。
     oclsomon 监控发现ocssd.bin进程异常会重启。
     oprocd监控到系统异常就重启。