iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >数据库中分区维护DDL导致DML异常中断举例分析
  • 672
分享到

数据库中分区维护DDL导致DML异常中断举例分析

2024-04-02 19:04:59 672人浏览 安东尼
摘要

这篇文章主要讲解了“数据库中分区维护DDL导致DML异常中断举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中分区维护DDL导致DML异常中断举

这篇文章主要讲解了“数据库中分区维护DDL导致DML异常中断举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中分区维护DDL导致DML异常中断举例分析”吧!

今天有同事反馈一个insert语句执行时异常中断,报错信息是:ERROR at line 1:
ORA-12805: parallel query server died unexpectedly

这个报错可能的原因很多,没太多价值,检查对应时间点的后台alert和trace文件,发现有7445报错

ORA-07445: exception encountered: core dump [kdzt_acmp_project()+124] [SIGSEGV] [ADDR:0x0] [PC:0x308DF84] [SI_KERNEL(general_protection)] []
第一反应是遇到BUG了,上MOS查了下,发现Bug 24301654的报错信息和我这个有点像,贴一部分出来,除了内存地址不同别的基本相同
Problem Key: ORA-7445 [kdzt_acmp_project()+124]
Error: ORA-7445 [kdzt_acmp_project()+124] [SIGSEGV] [ADDR:0x0] [PC:0x2DB1BB0] 
[SI_KERNEL(general_protection)] [] [] [] [] [] [] []

但看了下SR的回复- Bug 21097914 is similar, but CT's case doesn't have ">= rowid" predicates.我这个语句也没用到rowid范围扫,又看了下trace文件,看到一些类似如下的内容
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1
true                 _is_lock_table_for_ddl_wait_lock= 1

遂怀疑是当时该表或分区有DDL操作导致,INSERT的目标表是分区表,并且每个小时都会有分区维护操作,检查对应时间点前后的分区维护日志,看到时间确实有重合的地方,又看了一下当时的等待事件,
library cache lock                                                       65
library cache: mutex X                                               23
平时这个等待事件很低,这里确实比平时高了

于是做了一下测试:
1.新建一个测试分区表,并建立少量相同命名的分区
2.A窗口执行当时的insert语句
3.很快在另个窗口(B窗口)执行分区维护语句,包括1个add partition,1个truncate partition和1个drop partition操作
4.如预期一样,A窗口出现了
insert into xxxxx PARTITION(xxxxxxx) NOLOGGING
*
ERROR at line 1:
ORA-12805: parallel query server died unexpectedly

然后在A窗口执行一段时间后再执行分区维护语句,发现A窗口是可以正常执行结束的,之后又试了将3个分区维护命令分开操作,对A窗口的语句也不会有影响,结合以上情况个人判断是:
当DML sql语句还处于解析阶段时(该语句很长,并包含大量的聚合函数):
如果发起耗时稍长的DDL语句,会导致解析失败并报错,
如果解析结束再执行DDL,就不会导致DML语句中断,
如果DDL时间很短,也可以完成解析并正常执行DML
本来还想做个trace,时间有限就不继续研究了,先提醒研发尽量先执行分区维护再执行DML(都放在同个存储过程里),应该就可以避免这个问题了,之前还遇到很多ORA-07445都是BUG导致,难得遇到一个应该不是BUG的07445,感觉值得记录一下

180507update:
最后oracle原厂的结论是命中了BUG 21097914,打对应patch或升级到12.1.0.2.170418之后的版本均可修复

感谢各位的阅读,以上就是“数据库中分区维护DDL导致DML异常中断举例分析”的内容了,经过本文的学习后,相信大家对数据库中分区维护DDL导致DML异常中断举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 数据库中分区维护DDL导致DML异常中断举例分析

本文链接: https://www.lsjlt.com/news/66673.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库中分区维护DDL导致DML异常中断举例分析
    这篇文章主要讲解了“数据库中分区维护DDL导致DML异常中断举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中分区维护DDL导致DML异常中断举...
    99+
    2024-04-02
  • python selenium中Excel数据维护的示例分析
    小编给大家分享一下python selenium中Excel数据维护的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我们来举一个从Excel中读取账号和密码的例子并调用:制作Excel我们要对以上输入的用...
    99+
    2023-06-29
  • MySQL中mysqldump导出数据异常重启及drop栈帧的示例分析
    小编给大家分享一下MySQL中mysqldump导出数据异常重启及drop栈帧的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一...
    99+
    2024-04-02
  • linux中mysqldump导出数据库、数据、表结构的示例分析
    这篇文章主要为大家展示了“linux中mysqldump导出数据库、数据、表结构的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中mysqldump导出数据库、数据、表结构的示...
    99+
    2023-06-09
  • 分析解决Python中sqlalchemy数据库连接池QueuePool异常
    目录数据库相关错误的解决办法错误一:数据库连接池超过限制错误二:数据库事务未回滚数据库相关错误的解决办法 错误一:数据库连接池超过限制 SqlAlchemy QueuePool li...
    99+
    2024-04-02
  • MongoDB技术开发中遇到的数据库维护问题解决方案分析
    MongoDB技术开发中遇到的数据库维护问题解决方案分析引言:随着互联网和大数据的不断发展,MongoDB作为一种NoSQL数据库,因其高性能、高可用性和灵活性而逐渐成为了企业中非常受欢迎的选择。然而,在MongoDB的开发过程中,我们也会...
    99+
    2023-10-22
    MongoDB 问题解决方案 数据库维护
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作