记一次 Oracle 11g ORA-07445 [opiaba] 实例宕机与 Patch 12578873 处理实录
最近处理了一起 Oracle 11.2.0.4 单实例连续异常宕机的问题。数据库第一次恢复后只运行了十几分钟,实例再次退出。
最终定位到应用程序 TongYu.Task.Manager.exe 一次拼接了数百条 SCM_PURBILL INSERT,单个匿名 PL/SQL 块的绑定变量超过 65535,触发 Oracle opiaba 相关 Bug。
一、故障现象
数据库版本为 Oracle 11.2.0.4 单实例,SGA 20G、PGA 6G。
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 20G
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 6G
SQL>
opatch lsinventory 显示当时 Oracle Home 没有安装 Interim Patch。
[oracle@gyl-sqsy-db ~]]$ $ORACLE_HOME/OPatch/opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.4
Copyright (c) 2012, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_08-46-02AM_1.log
Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2026-09-28_08-46-02AM.txt
--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Database 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
OPatch succeeded.
[oracle@gyl-sqsy-db ~]]$
当天上午数据库连续异常退出,查看alter文件如下:
Private strand flush not complete
Current log# 4 seq# 1095075 mem# 0: /u01/app/oracle/oradata/sqsydb/redo04.log
Thread 1 advanced to log sequence 1095076 (LGWR switch)
Current log# 5 seq# 1095076 mem# 0: /u01/app/oracle/oradata/sqsydb/redo05.log
Mon Sep 21 08:28:40 2026
Archived Log entry 938248 added for thread 1 sequence 1095075 ID 0x5be538fd dest 1:
Mon Sep 21 09:11:54 2026
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x186016B, opiaba()+639] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_29402.trc (incident=101249):
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x186016B] [SI_KERNEL(general_protection)] []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101249/sqsydb_ora_29402_i101249.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 09:12:00 2026
Sweep [inc][101249]: completed
Mon Sep 21 09:12:47 2026
Dumping diagnostic data in directory=[cdmp_20260921091247], requested by (instance=1, osid=29402), summary=[incident=101249].
Mon Sep 21 09:12:59 2026
Sweep [inc2][101249]: completed
Mon Sep 21 09:17:55 2026
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_7794.trc (incident=101313):
ORA-00600: ÄÚ²¿´íÎó´úÂë, ²ÎÊý: [17148], [0x51D178618], [], [], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101313/sqsydb_ora_7794_i101313.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 09:18:21 2026
Dumping diagnostic data in directory=[cdmp_20260921091821], requested by (instance=1, osid=7794), summary=[incident=101313].
Mon Sep 21 09:18:21 2026
Sweep [inc][101313]: completed
Sweep [inc2][101313]: completed
Mon Sep 21 09:19:20 2026
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x7F937D507348] [PC:0x95C0452, opiexe()+3554] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_9027.trc (incident=101145):
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [opiexe()+3554] [SIGSEGV] [ADDR:0x7F937D507348] [PC:0x95C0452] [Address not mapped to object] []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101145/sqsydb_ora_9027_i101145.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x7F935F0399B8] [PC:0x14E9229, keswxCurSetupPublish()+449] [flags: 0x0, count: 2]
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_9027.trc (incident=101146):
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [keswxCurSetupPublish()+449] [SIGSEGV] [ADDR:0x7F935F0399B8] [PC:0x14E9229] [Address not mapped to object] []
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [opiexe()+3554] [SIGSEGV] [ADDR:0x7F937D507348] [PC:0x95C0452] [Address not mapped to object] []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101146/sqsydb_ora_9027_i101146.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 09:19:27 2026
Sweep [inc][101146]: completed
Sweep [inc][101145]: completed
Sweep [inc2][101146]: completed
Mon Sep 21 09:19:51 2026
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_pmon_29637.trc (incident=100905):
ORA-00600: internal error code, arguments: [kghfrh:ds], [0x51D1676C0], [], [], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_100905/sqsydb_pmon_29637_i100905.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_pmon_29637.trc:
ORA-00600: internal error code, arguments: [kghfrh:ds], [0x51D1676C0], [], [], [], [], [], [], [], [], [], []
PMON (ospid: 29637): terminating the instance due to error 472
Mon Sep 21 09:19:56 2026
System state dump requested by (instance=1, osid=29637 (PMON)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_diag_29647_20260921091956.trc
Dumping diagnostic data in directory=[cdmp_20260921091956], requested by (instance=1, osid=29637 (PMON)), summary=[abnormal instance termination].
Instance terminated by PMON, pid = 29637
Mon Sep 21 09:27:50 2026
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = 128 GB
Total Shared Global Region in Large Pages = 20 GB (100%)
Large Pages used by this instance: 10241 (20 GB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 10244 (20 GB)
Large Page size = 2048 KB
********************************************************************
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 4
Number of processor cores in the system is 4
Number of processor sockets in the system is 2
CELL communication is configured to use 0 interface(s):
CELL IP affinity details:
NUMA status: non-NUMA system
cellaffinity.ora status: N/A
CELL communication will use 1 IP group(s):
Grp 0:
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /u01/app/oracle/product/11.2.0/db_1/dbs/arch
Autotune of undo retention is turned on.
IMODE=BR
ILAT =101
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options.
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1
System name: Linux
Node name: gyl-sqsy-db
Release: 3.8.13-68.3.4.el6uek.x86_64
Version: #2 SMP Tue Jul 14 15:03:36 PDT 2015
Machine: x86_64
VM name: VMWare Version: 6
Using parameter settings in server-side spfile /u01/app/oracle/product/11.2.0/db_1/dbs/spfilesqsydb.ora
System parameters with non-default values:
processes = 600
sessions = 924
sga_max_size = 20G
sga_target = 20G
control_files = "/u01/app/oracle/oradata/sqsydb/control01.ctl"
control_files = "/u01/app/oracle/oradata/sqsydb/control02.ctl"
db_block_size = 8192
compatible = "11.2.0.4.0"
undo_tablespace = "UNDOTBS1"
sec_case_sensitive_logon = FALSE
remote_login_passwordfile= "EXCLUSIVE"
db_domain = ""
dispatchers = "(PROTOCOL=TCP) (SERVICE=sqsydbXDB)"
audit_file_dest = "/u01/app/oracle/admin/sqsydb/adump"
audit_trail = "NONE"
db_name = "sqsydb"
open_cursors = 300
pga_aggregate_target = 6G
deferred_segment_creation= FALSE
diagnostic_dest = "/u01/app/oracle"
Mon Sep 21 09:27:51 2026
PMON started with pid=2, OS id=9392
Mon Sep 21 09:27:51 2026
PSP0 started with pid=3, OS id=9394
Mon Sep 21 09:27:52 2026
VKTM started with pid=4, OS id=9396 at elevated priority
Mon Sep 21 09:27:52 2026
GEN0 started with pid=5, OS id=9400
Mon Sep 21 09:27:52 2026
DIAG started with pid=6, OS id=9402
VKTM running at (1)millisec precision with DBRM quantum (100)ms
Mon Sep 21 09:27:52 2026
PMON started with pid=2, OS id=9392
Mon Sep 21 09:27:51 2026
PSP0 started with pid=3, OS id=9394
Mon Sep 21 09:27:52 2026
VKTM started with pid=4, OS id=9396 at elevated priority
Mon Sep 21 09:27:52 2026
GEN0 started with pid=5, OS id=9400
Mon Sep 21 09:27:52 2026
DIAG started with pid=6, OS id=9402
VKTM running at (1)millisec precision with DBRM quantum (100)ms
Mon Sep 21 09:27:52 2026
DBRM started with pid=7, OS id=9404
Mon Sep 21 09:27:52 2026
DIA0 started with pid=8, OS id=9406
Mon Sep 21 09:27:52 2026
MMAN started with pid=9, OS id=9408
Mon Sep 21 09:27:52 2026
DBW0 started with pid=10, OS id=9410
Mon Sep 21 09:27:52 2026
LGWR started with pid=11, OS id=9412
Mon Sep 21 09:27:52 2026
CKPT started with pid=12, OS id=9414
Mon Sep 21 09:27:52 2026
SMON started with pid=13, OS id=9416
Mon Sep 21 09:27:52 2026
RECO started with pid=14, OS id=9418
Mon Sep 21 09:27:52 2026
MMON started with pid=15, OS id=9420
Mon Sep 21 09:27:52 2026
MMNL started with pid=16, OS id=9422
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
starting up 1 shared server(s) ...
ORACLE_BASE from environment = /u01/app/oracle
Mon Sep 21 09:27:52 2026
ALTER DATABASE MOUNT
Mon Sep 21 09:27:55 2026
Sweep [inc][100905]: completed
Sweep [inc2][100905]: completed
Successful mount of redo thread 1, with mount id 1888874392
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
Mon Sep 21 09:27:57 2026
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
parallel recovery started with 3 processes
Started redo scan
Completed redo scan
read 98862 KB redo, 37963 data blocks need recovery
Started redo application at
Thread 1: logseq 1095076, block 1265381
Recovery of Online Redo Log: Thread 1 Group 5 Seq 1095076 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/sqsydb/redo05.log
Completed redo application of 42.65MB
Mon Sep 21 09:28:21 2026
Completed crash recovery at
Thread 1: logseq 1095076, block 1463105, scn 24559734334930
37963 data blocks read, 37963 data blocks written, 98862 redo k-bytes read
Mon Sep 21 09:28:22 2026
LGWR: STARTING ARCH PROCESSES
Mon Sep 21 09:28:22 2026
ARC0 started with pid=41, OS id=18294
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: STARTING ARCH PROCESSES
Mon Sep 21 09:28:23 2026
ARC1 started with pid=42, OS id=18700
Mon Sep 21 09:28:23 2026
ARC2 started with pid=23, OS id=18704
Mon Sep 21 09:28:23 2026
ARC3 started with pid=25, OS id=18708
ARC1: Archival started
ARC2: Archival started
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
ARC2: Becoming the heartbeat ARCH
Thread 1 advanced to log sequence 1095077 (thread open)
Thread 1 opened at log sequence 1095077
Current log# 6 seq# 1095077 mem# 0: /u01/app/oracle/oradata/sqsydb/redo06.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Mon Sep 21 09:28:23 2026
SMON: enabling cache recovery
[9432] Successfully onlined Undo Tablespace 2.
Undo initialization finished serial:0 start:69858820 end:69859100 diff:280 (2 seconds)
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
ARC3: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
Database Characterset is ZHS16GBK
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Archived Log entry 938249 added for thread 1 sequence 1095076 ID 0x5be538fd dest 1:
SMON: Parallel transaction recovery tried
Starting background process QMNC
Mon Sep 21 09:28:26 2026
QMNC started with pid=58, OS id=19578
Completed: ALTER DATABASE OPEN
Mon Sep 21 09:28:29 2026
Starting background process CJQ0
Mon Sep 21 09:28:29 2026
CJQ0 started with pid=31, OS id=19789
Mon Sep 21 09:33:34 2026
Starting background process SMCO
Mon Sep 21 09:33:34 2026
SMCO started with pid=20, OS id=21066
Mon Sep 21 09:45:54 2026
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x186016B, opiaba()+639] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_5817.trc (incident=105931):
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x186016B] [SI_KERNEL(general_protection)] []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_105931/sqsydb_ora_5817_i105931.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Sep 21 09:46:00 2026
Dumping diagnostic data in directory=[cdmp_20260921094600], requested by (instance=1, osid=5817), summary=[incident=105931].
Mon Sep 21 09:46:02 2026
Sweep [inc][105931]: completed
Sweep [inc2][105931]: completed
Mon Sep 21 09:46:21 2026
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_pmon_9392.trc (incident=105707):
ORA-00600: internal error code, arguments: [17147], [0x53A7772E8], [], [], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_105707/sqsydb_pmon_9392_i105707.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Errors in file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_pmon_9392.trc:
ORA-00600: internal error code, arguments: [17147], [0x53A7772E8], [], [], [], [], [], [], [], [], [], []
PMON (ospid: 9392): terminating the instance due to error 472
Mon Sep 21 09:46:23 2026
System state dump requested by (instance=1, osid=9392 (PMON)), summary=[abnormal instance termination].
System State dumped to trace file /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_diag_9402_20260921094623.trc
Dumping diagnostic data in directory=[cdmp_20260921094623], requested by (instance=1, osid=9392 (PMON)), summary=[abnormal instance termination].
Instance terminated by PMON, pid = 9392
Mon Sep 21 09:52:49 2026
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = 128 GB
Total Shared Global Region in Large Pages = 20 GB (100%)
Large Pages used by this instance: 10241 (20 GB)
Large Pages unused system wide = 3 (6144 KB)
Large Pages configured system wide = 10244 (20 GB)
Large Page size = 2048 KB
********************************************************************
从上面alter文件输出的日志可以确认当天上午数据库连续发生了两次同类型异常宕机
| 时间 | 阶段 | 关键日志 / 异常 | 结果 |
|---|---|---|---|
| 09:11:54 | 第一次故障开始 | ORA-07445 [opiaba()+639]、SIGSEGV,PC=0x186016B |
Oracle Server Process 首先发生异常 |
| 09:17:55 ~ 09:19:51 | 异常扩散 | ORA-00600 [17148]、ORA-07445 [opiexe()+3554]、ORA-07445 [keswxCurSetupPublish()+449]、ORA-00600 [kghfrh:ds] |
Oracle 内部 Heap / 内存状态异常 |
| 09:19:56 | 第一次宕机 | PMON terminating the instance due to error 472 |
Instance terminated by PMON |
| 09:27:50 | 第一次恢复 | Starting ORACLE instance (normal) |
数据库重新启动 |
| 09:45:54 | 第二次故障开始 | 再次出现 ORA-07445 [opiaba()+639],PC=0x186016B |
与第一次异常位置完全一致 |
| 09:46:21 | 第二次异常扩散 | ORA-00600 [17147] |
PMON 检测到内部异常 |
| 09:46:23 | 第二次宕机 | PMON terminating the instance due to error 472 |
Instance terminated by PMON |
| 09:52:49 | 第二次恢复 | Starting ORACLE instance (normal) |
数据库再次启动 |
一次故障最早出现:
Exception [type: SIGSEGV, SI_KERNEL(general_protection)]
[ADDR:0x0]
[PC:0x186016B, opiaba()+639]
ORA-07445:
[opiaba()+639]
[SIGSEGV]
数据库重启后不到 20 分钟,又再次出现:
ORA-07445 [opiaba()+639]
ORA-00600 [17147]
PMON (ospid: 9392):
terminating the instance due to error 472
Instance terminated by PMON
两次故障有一个非常明显的共同点:
PC = 0x186016B
opiaba()+639
也就是说,两次实例 Crash 之前,Oracle 都在同一个内部函数、同一个偏移位置发生 SIGSEGV。
因此排查重点从操作系统资源转向 Oracle Server Process 及其当时正在执行的 SQL。
二、找到触发异常的应用
检查两次最早报 ORA-07445 [opiaba()+639] 的 trace:
[oracle@gyl-sqsy-db trace]$ ls -lh sqsydb_ora_29402.trc
-rw-r----- 1 oracle oinstall 1.4K Sep 21 09:12 sqsydb_ora_29402.trc
[oracle@gyl-sqsy-db trace]$ ls -lh sqsydb_ora_5817.trc
-rw-r----- 1 oracle oinstall 1.4K Sep 21 09:46 sqsydb_ora_5817.trc
[oracle@gyl-sqsy-db trace]$ egrep -ni \
> "SESSION ID|MODULE NAME|SERVICE NAME" \
> sqsydb_ora_29402.trc
18:*** SESSION ID:(300.32311) 2026-09-21 09:11:53.980
20:*** SERVICE NAME:(SYS$USERS) 2026-09-21 09:11:53.980
21:*** MODULE NAME:(TongYu.Task.Manager.exe) 2026-09-21 09:11:53.980
[oracle@gyl-sqsy-db trace]$ egrep -ni \
> "SESSION ID|MODULE NAME|SERVICE NAME" \
> sqsydb_ora_5817.trc
18:*** SESSION ID:(474.3519) 2026-09-21 09:45:54.922
20:*** SERVICE NAME:(SYS$USERS) 2026-09-21 09:45:54.922
21:*** MODULE NAME:(TongYu.Task.Manager.exe) 2026-09-21 09:45:54.922
[oracle@gyl-sqsy-db trace]$
两次结果分别为:
SESSION ID:(300.32311) MODULE NAME:(TongYu.Task.Manager.exe)
和:
SESSION ID:(474.3519) MODULE NAME:(TongYu.Task.Manager.exe)
说明两次 opiaba 异常都来自同一个应用模块。
主 trace 中没有 Current SQL Statement,通过 AWR/ASH 按 SID、SERIAL# 和 MODULE 查询也没有保留下当时的记录。实例属于突然 Crash,内存里的 ASH 不一定来得及刷入 AWR,因此继续检查:
[oracle@gyl-sqsy-db incident]$ cd /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101249/
[oracle@gyl-sqsy-db incdir_101249]$ ls -lh
total 138M
-rw-r----- 1 oracle oinstall 137M Sep 21 09:12 sqsydb_ora_29402_i101249.trc
-rw-r----- 1 oracle oinstall 247K Sep 21 09:12 sqsydb_ora_29402_i101249.trm
[oracle@gyl-sqsy-db incdir_101249]$ cd /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_105931/
[oracle@gyl-sqsy-db incdir_105931]$ ls -lh
total 15M
-rw-r----- 1 oracle oinstall 15M Sep 21 09:46 sqsydb_ora_5817_i105931.trc
-rw-r----- 1 oracle oinstall 136K Sep 21 09:46 sqsydb_ora_5817_i105931.trm
[oracle@gyl-sqsy-db incdir_105931]$
真正的触发 SQL 在 incident trace 中如下:
| 时间 | 对应 incident trace |
|---|---|
| 09:12 | sqsydb_ora_29402_i101249.trc |
| 09:46 | sqsydb_ora_5817_i105931.trc |
三、根因定位
第一次 incident trace,查看sqsydb_ora_29402_i101249.trc文件如下:
[oracle@gyl-sqsy-db incdir_101249]$ vi /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_101249/sqsydb_ora_29402_i101249.trc
*** 2026-09-21 09:11:54.685
*** SESSION ID:(300.32311) 2026-09-21 09:11:54.685
*** CLIENT ID:() 2026-09-21 09:11:54.685
*** SERVICE NAME:(SYS$USERS) 2026-09-21 09:11:54.685
*** MODULE NAME:(TongYu.Task.Manager.exe) 2026-09-21 09:11:54.685
*** ACTION NAME:() 2026-09-21 09:11:54.685
Dump continued from file: /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/sqsydb_ora_29402.trc
ORA-07445: ³öÏÖÒì³£´íÎó: ºËÐÄת´¢ [opiaba()+639] [SIGSEGV] [ADDR:0x0] [PC:0x186016B] [SI_KERNEL(general_protection)] []
========= Dump for incident 101249 (ORA 7445 [opiaba()+639]) ========
----- Beginning of Customized Incident Dump(s) -----
Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x186016B, opiaba()+639] [flags: 0x0, count: 1]
Registers:
%rax: 0x00000000776989e8 %rbx: 0x00000004dc56f5e8 %rcx: 0x0000000000004300
%rdx: 0x0000000000000000 %rdi: 0x0000000000000080 %rsi: 0x0000000000000080
%rsp: 0x00007fff6b1d4f50 %rbp: 0x00007fff6b1d4fc0 %r8: 0x0000000518afed98
%r9: 0x0000000000000001 %r10: 0x0000000000000a84 %r11: 0x00000000776989d8
%r12: 0x00000004f2b4a6d8 %r13: 0x0000000000000000 %r14: 0x020000000077698a
%r15: 0x0000000000000004 %rip: 0x000000000186016b %efl: 0x0000000000010202
opiaba()+625 (0x186015d) jmp 0x186019a
opiaba()+627 (0x186015f) movzbl 0x2c(%rbx),%r15d
opiaba()+632 (0x1860164) mov %r14,-0x60(%rbp)
opiaba()+636 (0x1860168) mov %rax,%r14
> opiaba()+639 (0x186016b) movswq 0xa(%r14),%rcx
opiaba()+644 (0x1860170) cmp %ecx,%r15d
opiaba()+647 (0x1860173) jne 0x186018e
opiaba()+649 (0x1860175) mov 0x18(%rbx),%rdi
opiaba()+653 (0x1860179) lea 0xc(%r14),%rsi
*** 2026-09-21 09:11:54.799
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=dc57bu1ymdjzx) -----
DECLARE
TYPE tec IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE trmd IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE tem IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
rct NUMBER:=0;
rmd NUMBER:=0;
aecd tec;
armd trmd;
aem tem;
BEGIN
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C0,:C1,:C2,:C3,:C4,:C5,:C6,:C7,:C8,:C9,:C10,:C11,:C12,:C13,:C14,:C15,:C16,:C17,:C18,:C19,:C20,:C21,:C22,:C23,:C24,:C25,:C26,:C27,:C28,:C29,:C30,:C31,:C32,:C33,:C34,:C35,:C36,:C37,:C38,:C39,:C40,:C41,:C42,:C43,:C44,:C45,:C46,:C47,:C48,:C49,:C50,:C51,:C52,:C53,:C54,:C55,:C56,:C57,:C58,:C59,:C60,:C61,:C62,:C63,:C64,:C65,:C66,:C67,:C68,:C69,:C70,:C71,:C72,:C73,:C74,:C75,:C76,:C77,:C78,:C79,:C80,:C81,:C82,:C83,:C84,:C85,:C86,:C87,:C88,:C89,:C90,:C91,:C92,:C93,:C94,:C95,:C96,:C97,:C98,:C99,:C100,:C101,:C102,:C103,:C104,:C105,:C106,:C107,:C108,:C109,:C110,:C111,:C112,:C113,:C114,:C115,:C116,:C117,:C118,:C119,:C120,:C121,:C122,:C123,:C124,:C125,:C126,:C127,:C128,:C129,:C130,:C131,:C132,:C133,:C134);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C135,:C136,:C137,:C138,:C139,:C140,:C141,:C142,:C143,:C144,:C145,:C146,:C147,:C148,:C149,:C150,:C151,:C152,:C153,:C154,:C155,:C156,:C157,:C158,:C159,:C160,:C161,:C162,:C163,:C164,:C165,:C166,:C167,:C168,:C169,:C170,:C171,:C172,:C173,:C174,:C175,:C176,:C177,:C178,:C179,:C180,:C181,:C182,:C183,:C184,:C185,:C186,:C187,:C188,:C189,:C190,:C191,:C192,:C193,:C194,:C195,:C196,:C197,:C198,:C199,:C200,:C201,:C202,:C203,:C204,:C205,:C206,:C207,:C208,:C209,:C210,:C211,:C212,:C213,:C214,:C215,:C216,:C217,:C218,:C219,:C220,:C221,:C222,:C223,:C224,:C225,:C226,:C227,:C228,:C229,:C230,:C231,:C232,:C233,:C234,:C235,:C236,:C237,:C238,:C239,:C240,:C241,:C242,:C243,:C244,:C245,:C246,:C247,:C248,:C249,:C250,:C251,:C252,:C253,:C254,:C255,:C256,:C257,:C258,:C259,:C260,:C261,:C262,:C263,:C264,:C265,:C266,:C267,:C268,:C269);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
。。。
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C65340,:C65341,:C65342,:C65343,:C65344,:C65345,:C65346,:C65347,:C65348,:C65349,:C65350,:C65351,:C65352,:C65353,:C65354,:C65355,:C65356,:C65357,:C65358,:C65359,:C65360,:C65361,:C65362,:C65363,:C65364,:C65365,:C65366,:C65367,:C65368,:C65369,:C65370,:C65371,:C65372,:C65373,:C65374,:C65375,:C65376,:C65377,:C65378,:C65379,:C65380,:C65381,:C65382,:C65383,:C65384,:C65385,:C65386,:C65387,:C65388,:C65389,:C65390,:C65391,:C65392,:C65393,:C65394,:C65395,:C65396,:C65397,:C65398,:C65399,:C65400,:C65401,:C65402,:C65403,:C65404,:C65405,:C65406,:C65407,:C65408,:C65409,:C65410,:C65411,:C65412,:C65413,:C65414,:C65415,:C65416,:C65417,:C65418,:C65419,:C65420,:C65421,:C65422,:C65423,:C65424,:C65425,:C65426,:C65427,:C65428,:C65429,:C65430,:C65431,:C65432,:C65433,:C65434,:C65435,:C65436,:C65437,:C65438,:C65439,:C65440,:C65441,:C65442,:C65443,:C65444,:C65445,:C65446,:C65447,:C65448,:C65449,:C65450,:C65451,:C65452,:C65453,:C65454,:C65455,:C65456,:C65457,:C65458,:C65459,:C65460,:C65461,:C65462,:C65463,:C65464,:C65465,:C65466,:C65467,:C65468,:C65469,:C65470,:C65471,:C65472,:C65473,:C65474);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C65475,:C65476,:C65477,:C65478,:C65479,:C65480,:C65481,:C65482,:C65483,:C65484,:C65485,:C65486,:C65487,:C65488,:C65489,:C65490,:C65491,:C65492,:C65493,:C65494,:C65495,:C65496,:C65497,:C65498,:C65499,:C65500,:C65501,:C65502,:C65503,:C65504,:C65505,:C65506,:C65507,:C65508,:C65509,:C65510,:C65511,:C65512,:C65513,:C65514,:C65515,:C65516,:C65517,:C65518,:C65519,:C65520,:C65521,:C65522,:C65523,:C65524,:C65525,:C65526,:C65527,:C65528,:C65529,:C65530,:C65531,:C65532,:C65533,:C65534,:C65535,:C65536,:C65537,:C65538,:C65539,:C65540,:C65541,:C65542,:C65543,:C65544,:C65545,:C65546,:C65547,:C65548,:C65549,:C65550,:C65551,:C65552,:C65553,:C65554,:C65555,:C65556,:C65557,:C65558,:C65559,:C65560,:C65561,:C65562,:C65563,:C65564,:C65565,:C65566,:C65567,:C65568,:C65569,:C65570,:C65571,:C65572,:C65573,:C65574,:C65575,:C65576,:C65577,:C65578,:C65579,:C65580,:C65581,:C65582,:C65583,:C65584,:C65585,:C65586,:C65587,:C65588,:C65589,:C65590,:C65591,:C65592,:C65593,:C65594,:C65595,:C65596,:C65597,:C65598,:C65599,:C65600,:C65601,:C65602,:C65603,:C65604,:C65605,:C65606,:C65607,:C65608,:C65609);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
:rmd:=rmd;
:aecd:=aecd;
:aem:=aem;
:armd:=armd;
END;
SQL 是一个很大的匿名 PL/SQL 块:
BEGIN
BEGIN
INSERT INTO SCM_PURBILL (...)
VALUES (:C0, :C1, ... , :C134);
END;
BEGIN
INSERT INTO SCM_PURBILL (...)
VALUES (:C135, :C136, ... , :C269);
END;
。。。
BEGIN
INSERT INTO SCM_PURBILL (...)
VALUES (:C65340, :C65341, ... , :C65474);
END;
BEGIN
INSERT INTO SCM_PURBILL (...)
VALUES (:C65475, :C65476, ... , :C65609);
END;
END;
每条 SCM_PURBILL INSERT 使用 135 个绑定变量。最后一个绑定变量达到:C65609。编号从 0 开始,因此总数为:65609 + 1 = 65610,486 × 135 = 65610。
第二次 incident trace,查看sqsydb_ora_29402_i101249.trc文件如下:
[oracle@gyl-sqsy-db incdir_105931]$ vi /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/incident/incdir_105931/sqsydb_ora_5817_i105931.trc
*** 2026-09-21 09:45:55.092
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=58621xsd5yjy8) -----
DECLARE
TYPE tec IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE trmd IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE tem IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
rct NUMBER:=0;
rmd NUMBER:=0;
aecd tec;
armd trmd;
aem tem;
BEGIN
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C0,:C1,:C2,:C3,:C4,:C5,:C6,:C7,:C8,:C9,:C10,:C11,:C12,:C13,:C14,:C15,:C16,:C17,:C18,:C19,:C20,:C21,:C22,:C23,:C24,:C25,:C26,:C27,:C28,:C29,:C30,:C31,:C32,:C33,:C34,:C35,:C36,:C37,:C38,:C39,:C40,:C41,:C42,:C43,:C44,:C45,:C46,:C47,:C48,:C49,:C50,:C51,:C52,:C53,:C54,:C55,:C56,:C57,:C58,:C59,:C60,:C61,:C62,:C63,:C64,:C65,:C66,:C67,:C68,:C69,:C70,:C71,:C72,:C73,:C74,:C75,:C76,:C77,:C78,:C79,:C80,:C81,:C82,:C83,:C84,:C85,:C86,:C87,:C88,:C89,:C90,:C91,:C92,:C93,:C94,:C95,:C96,:C97,:C98,:C99,:C100,:C101,:C102,:C103,:C104,:C105,:C106,:C107,:C108,:C109,:C110,:C111,:C112,:C113,:C114,:C115,:C116,:C117,:C118,:C119,:C120,:C121,:C122,:C123,:C124,:C125,:C126,:C127,:C128,:C129,:C130,:C131,:C132,:C133,:C134);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C135,:C136,:C137,:C138,:C139,:C140,:C141,:C142,:C143,:C144,:C145,:C146,:C147,:C148,:C149,:C150,:C151,:C152,:C153,:C154,:C155,:C156,:C157,:C158,:C159,:C160,:C161,:C162,:C163,:C164,:C165,:C166,:C167,:C168,:C169,:C170,:C171,:C172,:C173,:C174,:C175,:C176,:C177,:C178,:C179,:C180,:C181,:C182,:C183,:C184,:C185,:C186,:C187,:C188,:C189,:C190,:C191,:C192,:C193,:C194,:C195,:C196,:C197,:C198,:C199,:C200,:C201,:C202,:C203,:C204,:C205,:C206,:C207,:C208,:C209,:C210,:C211,:C212,:C213,:C214,:C215,:C216,:C217,:C218,:C219,:C220,:C221,:C222,:C223,:C224,:C225,:C226,:C227,:C228,:C229,:C230,:C231,:C232,:C233,:C234,:C235,:C236,:C237,:C238,:C239,:C240,:C241,:C242,:C243,:C244,:C245,:C246,:C247,:C248,:C249,:C250,:C251,:C252,:C253,:C254,:C255,:C256,:C257,:C258,:C259,:C260,:C261,:C262,:C263,:C264,:C265,:C266,:C267,:C268,:C269);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
。。。
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C67230,:C67231,:C67232,:C67233,:C67234,:C67235,:C67236,:C67237,:C67238,:C67239,:C67240,:C67241,:C67242,:C67243,:C67244,:C67245,:C67246,:C67247,:C67248,:C67249,:C67250,:C67251,:C67252,:C67253,:C67254,:C67255,:C67256,:C67257,:C67258,:C67259,:C67260,:C67261,:C67262,:C67263,:C67264,:C67265,:C67266,:C67267,:C67268,:C67269,:C67270,:C67271,:C67272,:C67273,:C67274,:C67275,:C67276,:C67277,:C67278,:C67279,:C67280,:C67281,:C67282,:C67283,:C67284,:C67285,:C67286,:C67287,:C67288,:C67289,:C67290,:C67291,:C67292,:C67293,:C67294,:C67295,:C67296,:C67297,:C67298,:C67299,:C67300,:C67301,:C67302,:C67303,:C67304,:C67305,:C67306,:C67307,:C67308,:C67309,:C67310,:C67311,:C67312,:C67313,:C67314,:C67315,:C67316,:C67317,:C67318,:C67319,:C67320,:C67321,:C67322,:C67323,:C67324,:C67325,:C67326,:C67327,:C67328,:C67329,:C67330,:C67331,:C67332,:C67333,:C67334,:C67335,:C67336,:C67337,:C67338,:C67339,:C67340,:C67341,:C67342,:C67343,:C67344,:C67345,:C67346,:C67347,:C67348,:C67349,:C67350,:C67351,:C67352,:C67353,:C67354,:C67355,:C67356,:C67357,:C67358,:C67359,:C67360,:C67361,:C67362,:C67363,:C67364);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
BEGIN
rct:=rct+1;
INSERT INTO scm_purbill (ID,AREAID,SUBAREAID,BILLNO,BILLSEQ,HOSGOODID,HOSGOODS,DEALGOODS,DEALGOODID,HOSID,HOSCODE,DEALID,DEALCODE,SUPPLIERID,BILLDATE,HOSQTY,HOSPRICE,DEALQTY,DEALPRICE,SUMVALUE,HOSADDRID,HOSDEPTID,HOSDEPTCODE,DEALADDRID,DEALADDRCODE,STATUS,STOPFLAG,EXPFLAG,EXPUSER,IMPDATE,IMPUSER,INPTID,EXPDATE,MESSAGE,INVENTORY,INVFLAG,BOXFLAG,GVFLAG,MEMO1,MEMO2,GVFLAGDATE,WHSPOS,ISMATCH,HOSADDRCODE,WMSQTY,CARDNO,PRESCRIPTNO,PATIENTNAME,IDCARDNO,GENDER,PATIENTADDRESS,PATIENTPHONE,METHODDESC,PATTERN,BATCHORDER,PROCESSSTATUS,YBKH,JGZH,XSZH,JZZH,SBKH,APPMSG,HEADERID,ISPRINT,CHANGEMESS,EXECUTENO,EXECUTEDATE,RELEASEDATE,EXPSEQ,BLSOURCE,ISCHARGE,ISGETPRES,RTLPRC,AREACODE,UPLOADIMG,LOTNO,ENDDATE,ISPOS,SQRUID,SQRDATA,SQRDATE,SQREXPFLAG,SFEXFLAG,JYEXFLAG,SALTYPE,FEETYPE,DTLLINES,SENDACCAMOUNT,SENDPAYMENT,UPDATETIME,UPDATEUSER,SHIPPERID,ALLOCATIONBILL,OTHERSUPPLIERS,PROVINCE,CITY,HOSMSUNITNO,REALNAME,DEPARTMENT,TOTALAMOUNT,DIAGNOSERESULT,AGE,COMMITTEE,DISTRICT,REALPHONE,REALADDRESS,DIGITALTECHFLAG,DIGITALTECHDATE,EXPRESSTRADENO,STORECODE,NEWSUPPLIERID,DELIVERYCOMPANY,STORENAME,STOREADDRESS,CONTRACTNO,CONTRACTROWS,CONTRACTAUROWS,CONTRACTNOAUROWS,SENDPAYMENTFLAG,ORDERTYPE,CARRIERPAYTYPE,GDPAYTYPE,RECEIPTNO,CONTRACTGOODSROWS,DEALMSUNITNO,AUROWS,SETTLEMENT,ISINSURED,CONTRACTAMOUNT,ISSCAN,SCANEXPFLAG,SCANEXPDATE,BOOKTIME,IWMSFLAG,IWMSDATE) VALUES (:C67365,:C67366,:C67367,:C67368,:C67369,:C67370,:C67371,:C67372,:C67373,:C67374,:C67375,:C67376,:C67377,:C67378,:C67379,:C67380,:C67381,:C67382,:C67383,:C67384,:C67385,:C67386,:C67387,:C67388,:C67389,:C67390,:C67391,:C67392,:C67393,:C67394,:C67395,:C67396,:C67397,:C67398,:C67399,:C67400,:C67401,:C67402,:C67403,:C67404,:C67405,:C67406,:C67407,:C67408,:C67409,:C67410,:C67411,:C67412,:C67413,:C67414,:C67415,:C67416,:C67417,:C67418,:C67419,:C67420,:C67421,:C67422,:C67423,:C67424,:C67425,:C67426,:C67427,:C67428,:C67429,:C67430,:C67431,:C67432,:C67433,:C67434,:C67435,:C67436,:C67437,:C67438,:C67439,:C67440,:C67441,:C67442,:C67443,:C67444,:C67445,:C67446,:C67447,:C67448,:C67449,:C67450,:C67451,:C67452,:C67453,:C67454,:C67455,:C67456,:C67457,:C67458,:C67459,:C67460,:C67461,:C67462,:C67463,:C67464,:C67465,:C67466,:C67467,:C67468,:C67469,:C67470,:C67471,:C67472,:C67473,:C67474,:C67475,:C67476,:C67477,:C67478,:C67479,:C67480,:C67481,:C67482,:C67483,:C67484,:C67485,:C67486,:C67487,:C67488,:C67489,:C67490,:C67491,:C67492,:C67493,:C67494,:C67495,:C67496,:C67497,:C67498,:C67499);
armd(rct):=SQL%ROWCOUNT;
rmd:=rmd+SQL%ROWCOUNT;
aecd(rct):=0;
EXCEPTION
WHEN OTHERS THEN
armd(rct):=0;
aecd(rct):=SQLCODE;
aem(rct):=SQLERRM;
end;
:rmd:=rmd;
:aecd:=aecd;
:aem:=aem;
:armd:=armd;
END;
和第一次SQL 结构相同,最后一个绑定变量达到::C67499,因此总数为:67499 + 1 = 67500,500 × 135 = 67500。
两次都超过 65535。
| 故障 | SQL_ID | INSERT 数量 | 每条 Bind | Bind 总数 |
|---|---|---|---|---|
| 第一次 | dc57bu1ymdjzx |
486 | 135 | 65610 |
| 第二次 | 58621xsd5yjy8 |
500 | 135 | 67500 |
这个现象与 Oracle Bug 12578873 的描述一致:单个 PL/SQL 执行单元使用超过 65535 个绑定变量时,可能在 opiaba 路径发生异常,并进一步引发 ORA-07445、ORA-00600 甚至实例 Crash。
故障链路如下:
TongYu.Task.Manager.exe
|
| 批量写入 SCM_PURBILL
v
单个 BEGIN...END 拼接 486/500 条 INSERT
|
| 135 bind / row
v
65610 / 67500 个 bind
|
v
ORA-07445 [opiaba()+639]
|
v
ORA-00600 [17147]/[17148]/[kghfrh:ds]
|
v
PMON terminating instance
四、Patch 12578873 实施
MOS 文档 1466343.1 对应的 One-off Patch 为:p12578873_112040_Linux-x86-64.zip
补丁 README 明确写明:
Oracle Database 11g Release 11.2.0.4.0
PLSQL Patch for Bug# 12578873 for Linux-x86-64 Platforms
12578873:
INSTANCE CRASH WITH ORA-7445 [OPIABA()+784]
WHEN USING MORE THAN 65535 BINDS
与本次环境和故障现象完全匹配。
4.1 升级 OPatch
原 OPatch 版本为:11.2.0.3.4,而 README 要求至少:11.2.0.3.5
先使用 Patch 6880880 更新 OPatch:
[oracle@gyl-sqsy-db ~]$ unzip -o -q p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME
[oracle@gyl-sqsy-db ~]$ export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
[oracle@gyl-sqsy-db ~]$ opatch version
OPatch Version: 11.2.0.3.44
OPatch succeeded.
[oracle@gyl-sqsy-db ~]$
同时检查 README 要求的系统工具:
[oracle@gyl-sqsy-db ~]$ which make
/usr/bin/make
[oracle@gyl-sqsy-db ~]$ which ar
/usr/bin/ar
[oracle@gyl-sqsy-db ~]$ which ld
/usr/bin/ld
[oracle@gyl-sqsy-db ~]$ which nm
/usr/bin/nm
[oracle@gyl-sqsy-db ~]$
均正常存在。
4.2 检查补丁冲突
当前 Oracle Home 原本没有安装其他 Interim Patch。进入补丁目录检查冲突如下:
[oracle@gyl-sqsy-db ~]$ cd /home/oracle/12578873
[oracle@gyl-sqsy-db 12578873]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 11.2.0.3.44
Copyright (c) 2026, Oracle Corporation. All rights reserved.
PREREQ session
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.44
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_08-52-03AM_1.log
Invoking prereq "checkconflictagainstohwithdetail"
Prereq "checkConflictAgainstOHWithDetail" passed.
OPatch succeeded.
[oracle@gyl-sqsy-db 12578873]$
说明 Patch 12578873 与当前 Oracle Home 没有冲突。
4.3 停止数据库和监听
正式安装前先做 checkpoint,正常停库:
SQL> alter system checkpoint;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
停止监听:
[oracle@gyl-sqsy-db 12578873]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-SEP-2026 09:41:09
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gyl-sqsy-db)(PORT=1521)))
The command completed successfully
[oracle@gyl-sqsy-db 12578873]$
确认数据库和 listener 进程均已退出:
[oracle@gyl-sqsy-db 12578873]$ ps -ef | grep ora_ | grep sqsydb | grep -v grep [oracle@gyl-sqsy-db 12578873]$ ps -ef | grep tnslsnr | grep -v grep [oracle@gyl-sqsy-db 12578873]$
均无输出。
4.4 正式安装补丁
确认当前目录,打补丁如下:
[oracle@gyl-sqsy-db 12578873]$ opatch apply
Oracle Interim Patch Installer version 11.2.0.3.44
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.44
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_09-41-52AM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 12578873
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/11.2.0/db_1')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '12578873' to OH '/u01/app/oracle/product/11.2.0/db_1'
Patching component oracle.precomp.common, 11.2.0.4.0...
Patching component oracle.rdbms.rsf, 11.2.0.4.0...
Patching component oracle.rdbms.rman, 11.2.0.4.0...
Patching component oracle.rdbms, 11.2.0.4.0...
Patch 12578873 successfully applied.
Log file location: /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_09-41-52AM_1.log
OPatch succeeded.
[oracle@gyl-sqsy-db 12578873]$ opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.44
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.44
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_09-42-28AM_1.log
Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2026-09-28_09-42-28AM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: gyl-sqsy-db
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Database 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
Interim patches (1) :
Patch 12578873 : applied on Mon Sep 28 09:42:07 CST 2026
Unique Patch ID: 17885707
Created on 27 Oct 2014, 05:06:22 hrs PST8PDT
Bugs fixed:
12578873
--------------------------------------------------------------------------------
OPatch succeeded.
[oracle@gyl-sqsy-db 12578873]$
4.5 验证补丁
执行如下:
[oracle@gyl-sqsy-db 12578873]$ opatch lsinventory -detail \
> | tee /home/oracle/patch_backup_12578873/lsinventory_after.txt
Oracle Interim Patch Installer version 11.2.0.3.44
Copyright (c) 2026, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.44
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2026-09-28_09-42-50AM_1.log
Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2026-09-28_09-42-50AM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: gyl-sqsy-db
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Database 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
Installed Products (136):
Agent Required Support Files 10.2.0.4.5
Assistant Common Files 11.2.0.4.0
Bali Share 1.1.18.0.0
Buildtools Common Files 11.2.0.4.0
Character Set Migration Utility 11.2.0.4.0
Cluster Verification Utility Common Files 11.2.0.4.0
Database Configuration and Upgrade Assistants 11.2.0.4.0
Database SQL Scripts 11.2.0.4.0
Database Workspace Manager 11.2.0.4.0
Deinstallation Tool 11.2.0.4.0
Enterprise Edition Options 11.2.0.4.0
Enterprise Manager Agent 10.2.0.4.5
Enterprise Manager Agent Core Files 10.2.0.4.5
Enterprise Manager Common Core Files 10.2.0.4.5
Enterprise Manager Common Files 10.2.0.4.5
Enterprise Manager Database Plugin -- Agent Support 11.2.0.4.0
Enterprise Manager Database Plugin -- Repository Support 11.2.0.4.0
Enterprise Manager Grid Control Core Files 10.2.0.4.5
Enterprise Manager plugin Common Files 11.2.0.4.0
Enterprise Manager Repository Core Files 10.2.0.4.5
Exadata Storage Server 11.2.0.1.0
Expat libraries 2.0.1.0.1
Generic Connectivity Common Files 11.2.0.4.0
HAS Common Files 11.2.0.4.0
HAS Files for DB 11.2.0.4.0
Installation Common Files 11.2.0.4.0
Installation Plugin Files 11.2.0.4.0
Installer SDK Component 11.2.0.4.0
JAccelerator (COMPANION) 11.2.0.4.0
Java Development Kit 1.5.0.51.10
LDAP Required Support Files 11.2.0.4.0
OLAP SQL Scripts 11.2.0.4.0
Oracle 11g Warehouse Builder Required Files 11.2.0.4.0
Oracle Advanced Security 11.2.0.4.0
Oracle Application Express 11.2.0.4.0
Oracle Call Interface (OCI) 11.2.0.4.0
Oracle Clusterware RDBMS Files 11.2.0.4.0
Oracle Code Editor 1.2.1.0.0I
Oracle Configuration Manager 10.3.8.1.0
Oracle Configuration Manager Client 10.3.2.1.0
Oracle Configuration Manager Deconfiguration 10.3.1.0.0
Oracle Containers for Java 11.2.0.4.0
Oracle Core Required Support Files 11.2.0.4.0
Oracle Data Mining RDBMS Files 11.2.0.4.0
Oracle Database 11g 11.2.0.4.0
Oracle Database 11g 11.2.0.4.0
Oracle Database 11g Multimedia Files 11.2.0.4.0
Oracle Database Deconfiguration 11.2.0.4.0
Oracle Database Gateway for ODBC 11.2.0.4.0
Oracle Database User Interface 2.2.13.0.0
Oracle Database Utilities 11.2.0.4.0
Oracle Database Vault J2EE Application 11.2.0.4.0
Oracle Database Vault option 11.2.0.4.0
Oracle DBCA Deconfiguration 11.2.0.4.0
Oracle Display Fonts 9.0.2.0.0
Oracle Enterprise Manager Console DB 11.2.0.4.0
Oracle Extended Windowing Toolkit 3.4.47.0.0
Oracle Globalization Support 11.2.0.4.0
Oracle Globalization Support 11.2.0.4.0
Oracle Help For Java 4.2.9.0.0
Oracle Help for the Web 2.0.14.0.0
Oracle Ice Browser 5.2.3.6.0
Oracle Internet Directory Client 11.2.0.4.0
Oracle Java Client 11.2.0.4.0
Oracle JDBC Server Support Package 11.2.0.4.0
Oracle JDBC/OCI Instant Client 11.2.0.4.0
Oracle JDBC/THIN Interfaces 11.2.0.4.0
Oracle JFC Extended Windowing Toolkit 4.2.36.0.0
Oracle JVM 11.2.0.4.0
Oracle Label Security 11.2.0.4.0
Oracle LDAP administration 11.2.0.4.0
Oracle Locale Builder 11.2.0.4.0
Oracle Message Gateway Common Files 11.2.0.4.0
Oracle Multimedia 11.2.0.4.0
Oracle Multimedia Annotator 11.2.0.4.0
Oracle Multimedia Client Option 11.2.0.4.0
Oracle Multimedia Java Advanced Imaging 11.2.0.4.0
Oracle Multimedia Locator 11.2.0.4.0
Oracle Multimedia Locator RDBMS Files 11.2.0.4.0
Oracle Net 11.2.0.4.0
Oracle Net Listener 11.2.0.4.0
Oracle Net Required Support Files 11.2.0.4.0
Oracle Net Services 11.2.0.4.0
Oracle Netca Client 11.2.0.4.0
Oracle Notification Service 11.2.0.3.0
Oracle Notification Service (eONS) 11.2.0.4.0
Oracle ODBC Driver 11.2.0.4.0
Oracle ODBC Driverfor Instant Client 11.2.0.4.0
Oracle OLAP 11.2.0.4.0
Oracle OLAP API 11.2.0.4.0
Oracle OLAP RDBMS Files 11.2.0.4.0
Oracle One-Off Patch Installer 11.2.0.3.4
Oracle Partitioning 11.2.0.4.0
Oracle Programmer 11.2.0.4.0
Oracle Quality of Service Management (Client) 11.2.0.4.0
Oracle RAC Deconfiguration 11.2.0.4.0
Oracle RAC Required Support Files-HAS 11.2.0.4.0
Oracle Real Application Testing 11.2.0.4.0
Oracle Recovery Manager 11.2.0.4.0
Oracle Security Developer Tools 11.2.0.4.0
Oracle Spatial 11.2.0.4.0
Oracle SQL Developer 11.2.0.4.0
Oracle Starter Database 11.2.0.4.0
Oracle Text 11.2.0.4.0
Oracle Text Required Support Files 11.2.0.4.0
Oracle UIX 2.2.24.6.0
Oracle Universal Connection Pool 11.2.0.4.0
Oracle Universal Installer 11.2.0.4.0
Oracle USM Deconfiguration 11.2.0.4.0
Oracle Wallet Manager 11.2.0.4.0
Oracle XML Development Kit 11.2.0.4.0
Oracle XML Query 11.2.0.4.0
Parser Generator Required Support Files 11.2.0.4.0
Perl Interpreter 5.10.0.0.2
Perl Modules 5.10.0.0.1
PL/SQL 11.2.0.4.0
PL/SQL Embedded Gateway 11.2.0.4.0
Platform Required Support Files 11.2.0.4.0
Precompiler Common Files 11.2.0.4.0
Precompiler Required Support Files 11.2.0.4.0
Provisioning Advisor Framework 10.2.0.4.3
RDBMS Required Support Files 11.2.0.4.0
RDBMS Required Support Files for Instant Client 11.2.0.4.0
RDBMS Required Support Files Runtime 11.2.0.4.0
regexp 2.1.9.0.0
Required Support Files 11.2.0.4.0
Sample Schema Data 11.2.0.4.0
Secure Socket Layer 11.2.0.4.0
SQL*Plus 11.2.0.4.0
SQL*Plus Files for Instant Client 11.2.0.4.0
SQL*Plus Required Support Files 11.2.0.4.0
SQLJ Runtime 11.2.0.4.0
SSL Required Support Files for InstantClient 11.2.0.4.0
XDK Required Support Files 11.2.0.4.0
XML Parser for Java 11.2.0.4.0
XML Parser for Oracle JVM 11.2.0.4.0
There are 136 products installed in this Oracle Home.
Interim patches (1) :
Patch 12578873 : applied on Mon Sep 28 09:42:07 CST 2026
Unique Patch ID: 17885707
Created on 27 Oct 2014, 05:06:22 hrs PST8PDT
Bugs fixed:
12578873
Files Touched:
ins_precomp.mk --> ORACLE_HOME/precomp/lib/proc
/ph1tok.o --> ORACLE_HOME/lib/libpls11.a
/ph1tok_pic.o --> ORACLE_HOME/lib/libpls11_pic.a
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/irman
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle
Patch Location in Inventory:
/u01/app/oracle/product/11.2.0/db_1/inventory/oneoffs/12578873
Patch Location in Storage area:
/u01/app/oracle/product/11.2.0/db_1/.patch_storage/12578873_Oct_27_2014_05_06_22
--------------------------------------------------------------------------------
OPatch succeeded.
[oracle@gyl-sqsy-db 12578873]$
该补丁 README 没有要求执行 datapatch、catbundle.sql 或其他 post-install SQL,因此二进制补丁完成后直接启动服务即可。
4.6 启动并验证数据库
先启动 listener:
[oracle@gyl-sqsy-db 12578873]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-SEP-2026 09:42:39
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Starting /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/gyl-sqsy-db/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gyl-sqsy-db)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gyl-sqsy-db)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 28-SEP-2026 09:42:39
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/gyl-sqsy-db/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gyl-sqsy-db)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
[oracle@gyl-sqsy-db 12578873]$
再启动数据库:
[oracle@gyl-sqsy-db 12578873]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Sep 28 09:42:54 2026
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 2.1379E+10 bytes
Fixed Size 2262656 bytes
Variable Size 2751465856 bytes
Database Buffers 1.8589E+10 bytes
Redo Buffers 36073472 bytes
Database mounted.
Database opened.
SQL> set lines 200 pages 100
select
instance_name,
status,
database_status,
startup_time
from v$instance;
select
name,
open_mode,
log_mode
from v$database;SQL> SQL> 2 3 4 5 6
INSTANCE_NAME STATUS DATABASE_STATUS STARTUP_TIME
---------------- ------------ ----------------- -------------------
sqsydb OPEN ACTIVE 2026-09-28 09:42:56
SQL> SQL> 2 3 4 5
NAME OPEN_MODE LOG_MODE
--------- -------------------- ------------
SQSYDB READ WRITE ARCHIVELOG
SQL>
监听注册正常:
[oracle@gyl-sqsy-db 12578873]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 28-SEP-2026 09:43:44
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gyl-sqsy-db)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 28-SEP-2026 09:42:39
Uptime 0 days 0 hr. 1 min. 4 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/gyl-sqsy-db/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=gyl-sqsy-db)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "sqsydb" has 1 instance(s).
Instance "sqsydb", status READY, has 1 handler(s) for this service...
Service "sqsydbXDB" has 1 instance(s).
Instance "sqsydb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@gyl-sqsy-db 12578873]$
最后检查补丁实施后的 alert.log:
[oracle@gyl-sqsy-db 12578873]$ sed -n '/Mon Sep 28 09:42:56 2026/,$p' \
> /u01/app/oracle/diag/rdbms/sqsydb/sqsydb/trace/alert_sqsydb.log \
> | egrep "ORA-|terminat|Incident|Exception"
[oracle@gyl-sqsy-db 12578873]$
无输出。
说明从补丁安装并重新启动数据库以后,没有新的:ORA-07445,ORA-00600,Incident,Exception,Instance terminated。
Patch 12578873 至此安装完成。
五、应用侧处理
数据库补丁解决的是 Oracle 内核在该场景下发生内存破坏、最终导致实例 Crash 的问题,但应用仍然不应该继续生成包含数万个独立绑定变量的匿名 PL/SQL 块。
当前每条 INSERT 有 135 个 bind,理论边界为:65535 / 135 = 485.44,也就是说,第 486 条已经超过这一范围。
临时处理可以把单批数量降到 400 条以内:400 × 135 = 54000
长期则建议修改批量写入方式。
对于 .NET + ODP.NET,可以使用 OracleCommand.ArrayBindCount;数据库侧也可以使用 PL/SQL FORALL。核心是复用一组绑定变量批量执行,而不是生成:
:C0 :C1 ... :C67499
这样一个包含数万个独立 bind 的匿名块。
六、总结
这次故障表面现象是 PMON 连续两次终止实例,但 PMON 并不是根因,只是 Oracle 检测到内部状态异常后的最终处理者。
真正有价值的排查思路,是从 alert.log 中向前追溯第一个异常,而不是停留在最后的 Instance terminated by PMON。本次通过 ORA-07445 [opiaba()+639] 找到对应 Server Process,再根据 trace 中的 SESSION ID、MODULE NAME 定位到 TongYu.Task.Manager.exe,最后进入 incident trace 获取 Current SQL Statement,确认应用在一个匿名 PL/SQL 块中批量拼接 486~500 条 SCM_PURBILL INSERT,绑定变量数量分别达到 65610 和 67500,超过 65535。
整个故障链路可以概括为:
alert.log 发现 ORA-07445 [opiaba]
↓
定位异常 Server Process
↓
通过 MODULE 找到 TongYu.Task.Manager.exe
↓
检查 incident trace 中的 Current SQL
↓
确认单个 PL/SQL 块 bind 数超过 65535
↓
匹配 Oracle Bug 12578873
↓
安装 One-off Patch 12578873
↓
应用侧同时降低批量大小并调整批处理方式
这类问题单纯重启数据库只能暂时恢复服务,不能消除触发条件。对于 ORA-07445、ORA-00600 这类内部错误,排查重点应放在最早出现异常的进程、对应 trace、incident trace 以及当时执行的 SQL,再结合 MOS Bug 和补丁信息确认最终处理方案。
本次数据库侧已完成 Patch 12578873 安装,应用侧也应避免继续生成包含数万个独立绑定变量的超大匿名 PL/SQL 块,从数据库和应用两个层面同时消除风险。




