当前位置: 首页 > news >正文

UNION ALL导致的ORA-07445错误

前几天写到在客户现场处理了一个ORA-07445的oracle bug,当时采取的办法是修改隐含参数"_optimizer_cost_based_transformation"=off。

当时修改的时候由于没有仔细查阅这个参数的用途,只是凭着字面意思猜测感觉和执行、优化相关,当时还说怕怕的,怕又什么影响。

结果,非常杯具的事情在第2天发生了,一个日常的在凌晨执行的数据加工存储过程,平时只要15分钟,当时在周六早上一直到6、7点都没完成,就导致数据加工的ETL完成通知短信没有发出。客户在10点多给我电话的时候,已经把ETL停止掉,单独执行这个过程,结果还是无法完成(超过半个小时)。11点多赶到现场,初步看了下情况和日志,统计分析相关表的信息,大表,需要很长时间,吃完午饭回来,统计分析工作完成,开始重新执行过程,还是超过了20分钟无法完成。

看来和这个参数是有关系的啦,无奈,改回这个参数默认值=linear,看看时间,今天的升级计划无论如何都需要晚上加班完成了。然后关掉数据库,让客户重启机器,预计10分钟后可以开始重新执行和验证。结果10分钟过去了,机器还是ping不同,怪了,最怕机器没关机的时候运行好好的,重启就起不来了,这样类似的事情遇到过几次。于是,KVM连过去,发现竟然是因为机器有超过436天未重启,导致有436天未对EMC存储进行检测,现在机器正在强制对EMC存储进行检测,漫长的等待,大概25-30分钟后才完成。

接下来一切顺利,开始重新执行这个过程,果然,15分钟后就完成了,咳,这么杯具,没办法,只好重新将这个语句拿出来分析,看看到底是那个函数或者功能导致的这个bug,这个insert。。。select语句,嵌套了多层子查询,从后面开始往前删除条件,最后定为到union all所在的子查询。

为了确认,现场客户想朋友拿了个oracle support帐户,登陆后查询过程查询到因为union导致7445的bug记录。虽然我这个是union all,但是基本可以确认是同类似的bug。

Bug 4664788: QUERY WITH UNION FAILS WITH ORA-7445 KKQUDHUS

Bug 属性

类型B - Defect已在产品版本中修复11.1
严重性2 - Severe Loss of Service产品版本10.2.0.1.0
状态80 - Development to Q/A平台23 - Oracle Solaris on SPARC (64-bit)
创建时间10-Oct-2005平台版本5.9
更新时间04-Jan-2011基本 Bug-
数据库版本10.2.0.1.0
影响平台Generic
产品源Oracle

相关产品

产品线Oracle Database Products系列Oracle Database
区域Oracle Database产品5 - Oracle Server - Enterprise Edition
 Hdr: 4664788 10.2.0.1.0 RDBMS 10.2.0.1.0 QRY OPTIMIZER PRODID-5 PORTID-23 ORA-7445
Abstract: QUERY WITH UNION FAILS WITH ORA-7445 KKQUDHUS

*** 10/10/05 02:41 am ***
*** 10/10/05 03:32 am *** (CHG: Sta->16)
*** 10/10/05 03:32 am ***
*** 10/11/05 11:07 pm *** (CHG: Asg->NEW OWNER OWNER)
*** 10/11/05 11:25 pm ***

Query
select username
from dba_users u
where username in (select t.owner from dba_tables t
where table_name not in ( select e.table_name
from dba_external_tables e
where e.owner=t.owner))
union
select 't' from dual;

*** 10/11/05 11:34 pm *** (CHG: Sta->11 Asg->NEW OWNER OWNER)
*** 10/11/05 11:34 pm ***
*** 10/11/05 11:40 pm *** (CHG: Asg->NEW OWNER OWNER)
*** 10/11/05 11:40 pm ***
*** 10/19/05 12:29 am ***
*** 10/21/05 12:56 pm ***
*** 10/21/05 01:27 pm ***
*** 12/01/05 05:51 pm *** (CHG: Asg->NEW OWNER OWNER)
*** 12/02/05 04:30 pm *** (CHG: Fixed->11.1)
*** 12/02/05 04:30 pm *** (CHG: Sta->80)
*** 12/02/05 04:30 pm ***
Rediscovery Information:
Crash in kkqudhus with kkquhcus above it in the stack trace.
Workaround:
Set _optimizer_cbqt_no_size_restriction to false (disables two-pass unnest).
*** 05/03/07 06:06 pm ***
*** 05/03/07 06:07 pm ***
*** 05/03/07 06:07 pm ***
*** 05/24/07 01:23 pm ***
*** 07/16/07 09:39 am ***
*** 01/03/11 10:48 pm ***
*** 01/04/11 01:01 am ***

从查询07445过程方式可以看到,07445和00600同属与oracle bug,因为专门为这2类错误号提供的查询口径。从这个bug可以看到,一直到11.1才进行了修复,目前在用的10.2.0.3版本,要跨越这么大的升级是不可能的,只能修改SQL语句。

知道了这个bug就好办,接下来的工作就是修改SQL语句。

小结

修改任何参数都存在风险,更别说是隐含参数了。注意喽!

-The End-

相关文章:

  • 计算机网络: IP地址,子网掩码,默认网关,DNS服务器详解
  • 纠结+纠结
  • HTTP 返回状态代码详细解释
  • gcrawler:一个基于gevent的简单爬虫框架
  • Struts2+MySQL登录注册
  • Sql 连接串
  • java类与对象,用程序解释
  • 代码生成器修改备注
  • 常用的字符串方法 String ;
  • 在SQL Server 2008上实现资源的负载均衡
  • 【转】angular基本概念的认识与实战
  • SQL Server中未公布的扩展存储过程
  • 利用jQuery中live为动态生成Dom添加datepicker效果
  • ABAP clear,refresh,free清空内表的区别
  • 作为软件开发人员应该知道的最基本的东西
  • 「译」Node.js Streams 基础
  • axios 和 cookie 的那些事
  • ComponentOne 2017 V2版本正式发布
  • gops —— Go 程序诊断分析工具
  • JavaScript中的对象个人分享
  • Koa2 之文件上传下载
  • Rancher-k8s加速安装文档
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • spring + angular 实现导出excel
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 安卓应用性能调试和优化经验分享
  • 记录:CentOS7.2配置LNMP环境记录
  • 实现菜单下拉伸展折叠效果demo
  • 使用API自动生成工具优化前端工作流
  • 详解NodeJs流之一
  • 再谈express与koa的对比
  • 智能网联汽车信息安全
  • 走向全栈之MongoDB的使用
  • gunicorn工作原理
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #100天计划# 2013年9月29日
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $$$$GB2312-80区位编码表$$$$
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • ( 10 )MySQL中的外键
  • (2)STL算法之元素计数
  • (Java)【深基9.例1】选举学生会
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (八十八)VFL语言初步 - 实现布局
  • (二)hibernate配置管理
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)