问题现象:
在一套2节点的19c RAC 环境下,节点2 alert告警 ORA 7445,且频度固定为每分钟报一次;期间有重启实例,但故障依旧:
===========================================================
2023-02-07T12:51:04.359849+08:00
PL/SQL package SYS.DBMS_RCVMAN version 19.16.00.00 is too new
Oracle must be upgraded to version 08.00.04.00 to work with this package
2023-02-07T12:51:05.274685+08:00
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x1289FCA1, pevm_icd_call_common()+225] [flags: 0x0, count: 1]
2023-02-07T12:51:05.325530+08:00
PL/SQL package SYS.DBMS_RCVMAN version 19.16.00.00 is too new
Oracle must be upgraded to version 08.00.04.00 to work with this package
Errors in file /u01/app/oracle/diag/rdbms/demorac/jydb2/trace/jydb2_m002_3146.trc (incident=185342) (PDBNAME=CDB$ROOT):
ORA-07445: exception encountered: core dump [pevm_icd_call_common()+225] [SIGSEGV] [ADDR:0x0] [PC:0x1289FCA1] [SI_KERNEL(general_protection)] []
Incident details in: /u01/app/oracle/diag/rdbms/demorac/jydb2/incident/incdir_185342/jydb2_m002_3146_i185342.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2023-02-07T12:51:06.167145+08:00
db_recovery_file_dest_size of 15360 MB is 0.13% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
2023-02-07T12:51:08.737355+08:00
Dumping diagnostic data in directory=[cdmp_20230207125108], requested by (instance=2, osid=3146 (M002)), summary=[incident=185342].
直接通过ORA 7445后面的参数来定位,并未找到匹配的问题,进一步分析对应的trc文件:
[oracle@db01rac2 trace]$ vi /u01/app/oracle/diag/rdbms/demorac/jydb2/incident/incdir_185342/jydb2_m002_3146_i185342.trc
[oracle@db01rac2 trace]$
61 ----- Current SQL Statement for this session (sql_id=fhf8upax5cxsz) -----
62 BEGIN sys.dbms_auto_report_internal.i_save_report (:rep_ref, :snap_id, :pr_class, :rep_id, :suc); END;
发现在62行的位置可以看到对应的Current SQL,这是一个关键信息,通过这个sys.dbms_auto_report_internal.i_save_report(:rep_ref, :snap_id, :pr_class,:rep_id, :suc); END;
关键信息进一步匹配MOS:
可以认定是同类问题,是bug,但是目前尚未解决,但可以通过隐藏参数_report_capture_cycle_time
来禁用 Automatic Report Flush 这个特性:
Disable the Automatic Report Flush by setting the following hidden parameter:
SQL> alter system set "_report_capture_cycle_time"=0; /* Default is 60 seconds */
Note: There is no negative impact in setting the above parameter as this setting only disables the automatic report capturing feature introduced in 12c. It does not disable the original SQL monitoring framework. SQL monitoring can be used without any issues with this setting enabled.
这是个比较冷门的特性,可以放心禁用,禁用该特性并不会影响SQL Monitor本身。
禁用之后再去观察alert告警,发现在设置参数之后,alert已经不再每分钟抛出相关ORA 7445的错误:
2023-02-07T13:00:23.099438+08:00
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x1289FCA1, pevm_icd_call_common()+225] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/demorac/jydb2/trace/jydb2_m001_4635.trc (incident=185214) (PDBNAME=CDB$ROOT):
ORA-07445: exception encountered: core dump [pevm_icd_call_common()+225] [SIGSEGV] [ADDR:0x0] [PC:0x1289FCA1] [SI_KERNEL(general_protection)] []
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2023-02-07T13:01:23.525368+08:00
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x1289FCA1, pevm_icd_call_common()+225] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/demorac/jydb2/trace/jydb2_m002_4361.trc (incident=185015) (PDBNAME=CDB$ROOT):
ORA-07445: exception encountered: core dump [pevm_icd_call_common()+225] [SIGSEGV] [ADDR:0x0] [PC:0x1289FCA1] [SI_KERNEL(general_protection)] []
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2023-02-07T13:01:31.332246+08:00
ALTER SYSTEM SET _report_capture_cycle_time=0 SCOPE=BOTH;
2023-02-07T13:05:19.188451+08:00
PL/SQL package SYS.DBMS_RCVMAN version 19.16.00.00 is too new
Oracle must be upgraded to version 08.00.04.00 to work with this package
总结来说,针对ORA 7445类错误,肯定需要跟踪对应的trc查看详细信息。且很多时候Current SQL Statement要比Call Stack更有用。