今天巡检遇到数据库报错 ORA-00600
错误,数据库版本为Oracle 11204 (x86_64),错误日志如下:
ORA-00600: internal error code, arguments: [kjxmgmb_nreq:!bat], [17], [56], [9], [], [], [], [], [], [], [], []
关键词: ORA-00600、[kjxmgmb_nreq:!bat]。
通过 Oracle oerr
查看错误代码解释:
可以发现,ORA-600
是 Oracle 的内部错误,无法从错误代码提示上看出什么问题!
通过报错信息,我们可以很容易的定位到 trc
中的关键错误信息:
Error: ORA-00600 [kjxmgmb_nreq:!bat] [17] [56] [9] Error Stack: ORA-600[kjxmgmb_nreq:!bat] Main Stack: kjxmgmb_nreq_header <- kjdrpushpkey <- kjdrpkey2hv <- kjblprmexp <- kjbmprmexp <- kjbmchkretryreq <- kjmsm <- ksbrdp <- opirip <- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main
并未发现可以判断问题的信息。
通过查询官方的 MOS 文档,发现与如下文档描述相似:
根据文档中描述,该 bug 可能发生在 RAC 环境崩溃时。
安装 OneOffPatch
补丁:Patch 20250147!
补丁安装所需介质如下:
补丁安装的详细步骤可以查看补丁 README
文档即可!
大致步骤分为以下三步:
1、备份 ORACLE_HOME
和 ORAINVENTORY
目录
mkdir /backup
cd /u01/app/oracle/product/11.2.0
tar -pcf /backup/oracle_home_backup210421.tar db
cd /u01/app
tar -pcf /backup/oracle_inventory_backup210421.tar oraInventory
? 注意: 备份前需要先完全关闭所有数据库实例。
2、替换最新的OPATCH补丁包(p6880880)
unzip -o p6880880_112040_Linux-x86-64.zip -d $ORACLE_HOME
3、解压 20250147
补丁包,并安装补丁
首先解压补丁包:
unzip -d /soft p20250147_112040_Linux-x86-64.zip
安装补丁前检查:
cd /soft/20250147
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
关闭当前主机所有 ORACLE_HOME
下的服务(database, ASM, listeners, nodeapps, and CRS daemons):
## Non-rac
shutdown immediate
lsnrctl stop
## rac
srvctl stop database -d orcl
srvctl stop listener
srvctl stop scan_listner
正式安装补丁:
cd /soft/20250147
opatch apply
确认是否安装成功:
opatch lsinventory
启动所有ORACLE_HOME下的服务(database, ASM, listeners, nodeapps, and CRS daemons)
## 开启数据库实例和监听
## Non-rac
startup
lsnrctl start
## rac
srvctl start database -d orcl
srvctl start listener
srvctl start scan_listener
? 注意: 需要数据库停机进行操作。
参考官方文章:Doc ID 20250147.8