1 数据库不重启也会把一些启动信息打在日志上,让你怀疑这库是不是无厘头重启,最重要的是没有其他的相关日志,让你怀疑是不是不要干DBA这行了;

1.1禁止参数信息dump至Alert日志中

   _log_segment_dump_parameter=FALSE

1.2禁止补丁信息dump至Alert日志中

   _log_segment_dump_patch=FALSE

参见:12c Alert Log Appears To Show Unexpected Instance Restart (文档 ID 2049516.1)


2 ORA-600 [K2GTEGET: PDBID] AND ORA-600 [KPDBSWITCHPRERESTORE: TXN]

看日志是调用dbms_advisor报的错

[TOC00004]
----- PL/SQL Stack -----
----- PL/SQL Call Stack -----
object line object
handle number name
0x1c582f4f8 12825 package body SYS.DBMS_SQLTUNE_INTERNAL
0x1b5c1e8c8 7 SYS.WRI$_ADV_SQLTUNE
0x17e85ca58 602 package body SYS.PRVT_ADVISOR
0x17e85ca58 2678 package body SYS.PRVT_ADVISOR
0x1cca00190 241 package body SYS.DBMS_ADVISOR
0x1ccf8d670 937 package body SYS.DBMS_SQLTUNE
0x1b8d0af08 19 anonymous block

参见:

Bug 19942889 : ORA-600 [KPDBSWITCHPRERESTORE: TXN]

Bug 19971949 : ORA-600 [K2GTEGET: PDBID] AND ORA-600 [KPDBSWITCHPRERESTORE: TXN]

参见文档说明

ORA-00600: Internal Error Code,arguments: [k2gteget: Pdbid] & Arguments: [kpdbSwitchPreRestore: Txn] (文档 ID 2090473.1)

解决办法

1 升级到oracle 12.2

2     打补丁Patch 21283337 或者Oracle Database 12c Release 12.1.0.2.170117


3 12c的多路径ORA-600 [krr_process_read_error_2] 

临时解决办法:ALTER SYSTEM SET "_use_single_log_writer"=TRUE SID='*' SCOPE=SPFILE;

Oracle 12c introduces a new default feature of using multiple LGWRs which may lead to DEADLOCK / Database Hang or ORA-742 "Log read detects lost write" or ORA-600 [kcrfrgv_nextlwn_scn] during instance OPEN or ORA-600 [krr_process_read_error_2] during Recovery on IBM AIX and potentially on HPUX Itanium 64bit.

参考:

ALERT: Bug 21915719 Database hang or may fail to OPEN in 12c IBM AIX or HPUX Itanium - ORA-742, DEADLOCK or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2] (文档 ID 1957710.1)