[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 错误就产生了。

posted @ 2021-04-07 20:16  健哥的数据花园  阅读(1220)  评论(0编辑  收藏  举报