ora-07445:exception encountered:core dump [kkorminl()+32] ......

这篇博客介绍了作者在加班时遇到的Oracle数据库ora-07445错误,核心转储问题导致/oracle目录空间占用过大。通过查看alert日志,发现问题可能与数据库的自动SQL调优顾问任务有关,并找到了相关的 MOS 文档17339455.8,提供了问题的解决方案。

 加班中收到磁盘空间报警短信,/oracle目录使用率超过85%,登录服务器查看,发现diag下面的cdump目录大小超过十个G,

怀疑数据库存在问题,导致一直做dump导出信息,于是查看alert日志,发现如下报错:

ora-07445:exception encountered:core dump [kkorminl()+32] [SIGSEGV][ADDR:OxFFFFFFFFDFFFF8][PC:Ox105B4FB00][Address not mapped to object]

查了下之前的日志,发现这个错误发生在晚上十点后。

数据库版本是11.2.0.4,在mos上查了下,确实存在对应的bug,文档17339455.8:

Description

 
ORA-7445 [kkorminl] or similar can occur when running DBMS_SQLTUNE
Index Advisor on queries with inlists. This is most likely to occur when running 
an automatic tuning task that runs Index Advisor.
 
Workaround
 If the issue occurs during automatic tuning then an option to avoid the dumps is to
 disable the automatic tuning job.
 eg:
  BEGIN
   dbms_auto_task_admin.disable(
    client_name => 'sql tuning advisor',
    operation => NULL,
    window_name => NULL);
  END;
  /
 

意思在执行dbms_sqltune时候,存在问题,会报错。

查看alert日志,发现确实在报错之前,数据库上在运行automatic SQL Tuning Advisor

通过执行上述操作,停掉自动任务



ORA-07445 错误表明 Oracle 数据库在执行过程中遇到了严重的异常,导致核心转储(core dump)。具体错误信息 `exception encountered: core dump [qecsel] [SIGSEGV] [Address not mapped to object]` 表示数据库进程尝试访问一个未映射到其地址空间的内存地址,从而引发段错误(Segmentation Fault)[^3]。 ### 原因分析 1. **内存访问越界** 该错误通常由数据库内部组件访问非法内存地址引起。例如,在 SQL 解析或执行阶段,某些函数如 `qecsel`(用于选择操作的优化器组件)可能引用了未正确分配或释放的内存区域。 2. **SQL 语句问题** 特定的 SQL 查询结构可能导致优化器在生成执行计划时出现异常。复杂的子查询、视图合并、或者使用特定提示(hint)都可能触发此问题。 3. **Oracle 软件缺陷** 某些版本的 Oracle 存在已知的 bug,与特定模块(如 `qecsel`)相关,可能在处理特定 SQL 或数据结构时导致崩溃。 4. **内存不足或配置不当** 如果系统内存资源紧张,或者 SGA/PGA 配置不合理,也可能导致此类内存访问错误。 5. **操作系统兼容性或补丁缺失** 不兼容的操作系统版本、内核参数设置不当,或缺少关键补丁,也可能影响 Oracle 进程的稳定性。 --- ### 解决方案 #### 1. 收集诊断信息 - 查看对应的跟踪文件(trace file),路径通常记录在 alert log 中。 - 使用 `adrci` 工具分析 incident 并提取详细堆栈信息: ```bash adrci show home set home diag/rdbms/<dbname>/<instance> show incident ``` #### 2. 分析 SQL 语句 - 定位触发错误的 SQL 语句,检查是否包含复杂嵌套、不常见的语法结构或 hint。 - 尝试简化查询逻辑或禁用部分优化器特性(如 `_optimizer_unnest_sq` 等参数)进行测试。 #### 3. 应用补丁 - 检查 Oracle 官方支持文档 ID 1288518.1 和其他相关 Note,确认是否存在适用于当前版本的补丁。 - 使用 OPatch 工具安装 CPU 或 PSU 更新以修复潜在缺陷。 #### 4. 修改初始化参数 - 调整以下参数可能有助于规避问题: - `OPTIMIZER_FEATURES_ENABLE`:尝试回退到更早版本的行为。 - `_OPTIMIZER_UNNEST_SQ`:关闭子查询解嵌套功能。 - `QUERY_REWRITE_ENABLED`:禁用查询重写。 #### 5. 升级数据库版本 - 如果问题由已知缺陷引起,考虑升级到更高版本(如从 11.2.0.3 升级到 11.2.0.4 或 12c 及以上)。 #### 6. 检查操作系统环境 - 确保内核参数(如 `shmmax`, `shmall`, `ulimit`)配置合理。 - 更新操作系统并安装最新补丁。 --- ### 技术文档参考 - Oracle Support 文档:[ORA-07445 [qecsel] When Running a Query (Doc ID 1288518.1)](https://support.oracle.com/epmos/faces/ui/km/DocumentDisplay.jspx?id=1288518.1) 提供了针对该错误的具体案例和修复建议[^3]。 - Metalink Note: ORA-07445 in qecsel / qeaeo / qkexr — 常见于优化器组件中,建议检查 SQL 结构并应用相应补丁。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值