今天接到有人反映有套数据库db alert中会经常性的出现ora-7445 [kkqteParseSqlForPG()+1840], 下面简单的记录下这个问题。
# DB Alert
Thread 1 advanced to log sequence 139083 (LGWR switch)
Current log# 1 seq# 139083 mem# 0: +DATAGP/anbob/onlinelog/group_1.269.854275533
Current log# 1 seq# 139083 mem# 1: +DATAGP/anbob/onlinelog/group_1.268.854275533
Mon Sep 21 02:05:22 2015
Exception [type: SIGSEGV, Invalid permissions for mapped object] [ADDR:0x63] [PC:0x107C00D30, kkqteParseSqlForPG()+1840] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/anbob/anbob1/trace/anbob1_ora_22283288.trc (incident=253347):
ORA-07445: 出现异常错误: 核心转储 [kkqteParseSqlForPG()+1840] [SIGSEGV] [ADDR:0x63] [PC:0x107C00D30] [Invalid permissions for mapped object] []
Incident details in: /u01/app/oracle/diag/rdbms/anbob/anbob1/incident/incdir_253347/anbob1_ora_22283288_i253347.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.复制
# 7445 trace file
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name: AIX
ORA-07445: 出现异常错误: 核心转储 [kkqteParseSqlForPG()+1840] [SIGSEGV] [ADDR:0x63] [PC:0x107C00D30] [Invalid permissions for mapped object] []
----- Current SQL Statement for this session (sql_id=am4xxtggvg67g) -----
SELECT * FROM anbob.V_ITPRO_LOG_SSO WHERE RESULT != 'xxxxxxx' and LOGINTIME>to_date('2015-09-21 01:58:21','yyyy-mm-dd hh24:mi:ss') and LOGINTIME<=to_date('2015-09-21 02:00:21','yyyy-mm-dd hh24:mi:ss') order by LOGINTIME asc
-----CallStackTrace-----
skdstdst()+40<ksedst1()+112<ksedst()+40<dbkedDefDump()+1516<ksedmp()+72<ssexhd()+267248bc<kkqteGeneratePreds()+404<
kkqteTransform()+444<kkqctdrvTE()+1552<kkqtedtr()+168<qksqbApplyToQbcLoc()+372<qksqbApplyToQbc()+5<kkqctdrvTD()+3596<
kkqtedrv()+88<kkqdrv()+1060<kkqctdrvIT()+720<apadrv()+2820<opitca()+3660<kksLoadChild()+8296<kxsGetRuntimeLock()<
kksfbc()+12876<kkspsc0()+1240<kksParseCursor()+11<opiosq0()+1844<kpooprx()+332<kpoal8()+6872<opiodr()+720<
ttcpip()+1028<opitsk()+1508<opiino()+940<opiodr()+720<opidrv()+1132<sou2o()+136>opidrv>opimai_real()+608>ssthrdmain()+268>opimai_real()>main()+204
Starting SQL statement dump
SQL Information
user_id=97 user_name=YUNSHJ module=JDBC Thin Client action=
sql_id=am4xxtggvg67g plan_hash_value=0 problem_type=3
----- Current SQL Statement for this session (sql_id=am4xxtggvg67g) -----
SELECT * FROM anbob.V_ITPRO_LOG_SSO WHERE RESULT != 'xxxxxx' and LOGINTIME>to_date('2015-09-21 01:58:21','yyyy-mm-dd hh24:mi:ss') and LOGINTIME<=to_date('2015-09-21 02:00:21','yyyy-mm-dd hh24:mi:ss') order by LOGINTIME asc sql_text_length=233 sql=SELECT * FROM anbob.V_ITPRO_LOG_SSO WHERE RESULT != 'xxxxxx' and LOGINTIME>to_date('2015-09-21 01:58:21','yyyy-mm-dd hh24:mi:ss') and LOGINTIME<=to_date('2015-09-21 02:00:21','yyyy-mm-dd hh24:mi:ss') order by LOGINTIME asc
Optimizer state dump:
Compilation Environment Dump
optimizer_mode_hinted = false
optimizer_features_hinted = 0.0.0
parallel_execution_enabled = true
parallel_query_forced_dop = 0
parallel_dml_forced_dop = 0
parallel_ddl_forced_degree = 0
parallel_ddl_forced_instances = 0
_query_rewrite_fudge = 90
optimizer_features_enable = 11.2.0.3
...
...
...
_optimizer_table_expansion = true
...复制
Note:
触发错误的SQL 是条SELECT FROM VIEW的查询,在SQLPLUS 中查询无报错, 而且查看view的基表存在partition index并无unusable 状态local分区, 在MOS中发现ORA-07445, core dump [kkqteParseSqlForPG()] [SIGSEGV] upon execution of a SQL (文档 ID 1327807.1) 记录,
有可能是11 r2 引入的一个新特性Optimizer Table Expansion Transformation (介绍可参考https://blogs.oracle.com/optimizer/entry/optimizer_transformations_table_expansion)引起, 该特性在使用分区索引时分区裁剪使用索引访问的SQL转换时可以提升性能,受隐藏参数
_optimizer_table_expansion控制(默认启用)。 根据MOS中记录的CALL Stack 和本案例非常相似如下:
=== ODM Cause Justification ===
Generated stack:
kkqteGeneratePreds kkqteTransform kkqctdrvTE kkqtedtr qksqbApplyToQbcLoc qksqbApplyToQbcLoc
qksqbApplyToQbcLoc qksqbApplyToQbcLoc qksqbApplyToQbcLoc qksqbApplyToQbc
kkqctdrvTD kkqtedrv kkqdrv kkqctdrvIT apadrv
该日志提供的解决方法是
打补丁 patch 9665974且说是在11.2.0.2中修复
或
禁用参数 ALTER SYSTEM SET “_optimizer_table_expansion”=FALSE;
本案例是11.2.0.3的环境,看来该bug并未完全修复,且发现在11.2.0.4中都存在一个问题ORA-07445[qcsraic()] CALL stack描述如下
Call stack in the incident trace file written by the error includes all or some of the following functions:
qcsraic <- qcspqbDescendents <- qcspqb
< - kkmdrv <- kkqteParseSqlForPG <- kkqteGeneratePreds <- kkqteTransform <- kkqtedtr
< - qksqbApplyToQbcLoc <- qksqbApplyToQbc <- kkqtedrv <- kkqdrv <- kkqctdrvIT
< - apadrv <- opitca <- kksLoadChild <- kxsGetRuntimeLock <- kksfbc
< - kkspsc0 <- kksParseCursor <- opiosq0 <- opiall0 <- opial7
< - opiodr <- ttcpip <- opitsk <- opiino <- opiodr
< - opidrv <- sou2o <- opimai_real <- ssthrdmain <- main
< - libc_start_main <- start
而且在Note 1959974.1记录真实原因未知, 不过解决方法也是”_optimizer_table_expansion” = false, 查询该参数确实存在的BUG不少,个人建议禁用该参数,注意修改该参数可能改变原有SQL的执行计划,建议测试后再修改生产。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
1267次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
382次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
367次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
356次阅读
2025-04-07 12:14:29
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
173次阅读
2025-04-14 15:58:34
SQL 优化之 OR 子句改写
xiongcc
123次阅读
2025-04-21 00:08:06
融合Redis缓存的PostgreSQL高可用架构
梧桐
109次阅读
2025-04-08 06:35:40
PostgreSQL拓展PGQ实现解析
chirpyli
107次阅读
2025-04-07 11:23:17
中国PostgreSQL培训认证体系新增PGAI应用工程师方向
开源软件联盟PostgreSQL分会
102次阅读
2025-05-06 10:21:13
告别老旧mysql_fdw,升级正当时
NickYoung
94次阅读
2025-04-29 11:15:18
热门文章
移除DataGuard Standby配置导致Primary启动失败
2023-08-17 21331浏览
使用dblink产生的”SELECT /*+ FULL(P) +*/ * FROM XXXXX P ” 解析
2023-06-20 20901浏览
Troubleshooting 'ORA-28041: Authentication protocol internal error' change password 12c R2 DB
2020-04-08 13675浏览
浅谈ORACLE免费数据库Oracle Database XE (Express Edition) 版
2018-10-31 7641浏览
High wait event ‘row cache mutex’ in 12cR2、19c
2020-08-14 5598浏览