[Oracle工程师手记] ORA-12850 错误的分析
查看 alert log, 确实看到了 ORA-12850 错误的信息。
NI cryptographic checksum mismatch error: 12599.
VERSION INFORMATION:
TNS for Linux: Version 12.1.0.2.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production
Time: 29-MAR-2021 18:41:18
Tracing not turned on.
Tns error struct:
ns main err code: 12599
TNS-12599: TNS:cryptographic checksum mismatch
ns secondary err code: 2526
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Mon Mar 27 18:41:36 2021
Errors in file /opt/app/oracle/myorcl/trace/myorcl_m001_34933.trc:
ORA-12850: cannot assign slaves to all specified instances: 2 required, 1 allocated
Mon Mar 27 18:42:26 2021
***********************************************************************
NI cryptographic checksum mismatch error: 12599. ***
VERSION INFORMATION:
TNS for Linux: Version 12.1.0.2.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production
Time: 29-MAR-2021 18:42:26
Tracing not turned on.
Tns error struct:
ns main err code: 12599
TNS-12599: TNS:cryptographic checksum mismatch
ns secondary err code: 2526
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Mon Mar 27 18:43:01 2021
看 trace 文件当时的输出内容,可以看到出现问题时,正在访问 GV$SQL_MONITOR 表。
<myorcl_m001_34933.trc> *** 2021-03-27 18:41:36.167 *** SESSION ID:(159.44654) 2021-03-27 18:41:36.167 *** CLIENT ID:() 2021-03-27 18:41:36.167 *** SERVICE NAME:(SYS$BACKGROUND) 2021-03-27 18:41:36.167 *** MODULE NAME:(MMON_SLAVE) 2021-03-27 18:41:36.167 *** CLIENT DRIVER:() 2021-03-27 18:41:36.167 *** ACTION NAME:(Automatic Report Flush) 2021-03-27 18:41:36.167 ORA-12850: cannot assign slaves to all specified instances: 2 required, 1 allocated Dump of memory from 0x0000000122533648 to 0x000000011568D38C 122533640 48544957 4E4F4D20 [WITH MON] 122533650 524F5449 5441445F 53412041 45532820 [ITOR_DATA AS (SE] 122533660 5443454C 534E4920 44495F54 454B202C [LECT INST_ID, KE] 122533670 4E202C59 28324C56 515F5850 44495343 [Y, NVL2(PX_QCSID] ...... 122533F50 44495F4E 4F524620 5647204D 4C515324 [N_ID FROM GV$SQL] 122533F60 4E4F4D5F 524F5449 314F4D20 45485720 [_MONITOR MO1 WHE] 122533F70 4D204552 492E314F 5F54534E 42204449 [RE MO1.INST_ID B]
但凡涉及到 GV$ 表,oracle 数据库都是要访问 RAC 各个节点上的内容。而在当时,DB 的 alert log 中,已经同时出现了多次的 TNS 错误,可以认为,此节点与其他节点或客户端无法通信,推测RAC的节点间通信可能是有问题的。因为这个原因,oracle 数据库无法访问所有的节点,所以 ORA-12850 错误就产生了。

浙公网安备 33010602011771号