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

Oracle遭遇bug导致共享内存无法分配报ORA-04031错误

1.故障描述

     在7月17日上午11时左右,收到告警短信,提示集群节点2宕机,当即登陆该节点进行查看,发现数据库状态正常。但日志里出现大量的ORA-04031报错,提示无法分配shared_pool,当时手动执行shared pool刷新脚本进行刷新,刷新后shared pool使用率依旧为70%左右。

        此时有业务反馈数据库节点3无法连接,客户决定对节点3进行重启,重启后恢复正常,经过后续观察,节点2 ORA-04031报错也再没有出现。

2.原因分析

        经分析,故障原因为触发了 Bug 26405036  Large Allocation Of "ges enqueues" and "ges resource dynamic" In The Shared Pool ,导致数据库shared pool内存爆满所致。

详细BUG详情及补丁参考附件。

3.建议解决措施

  1. 打补丁26405036: VERY HIGH "GES ENQUEUES" ON THE SHARED POOL
  2.  workaround可以在出现问题时临时使用如下命令清理内存:

        SQL> oradebug setmypid

        SQL> oradebug lkdebug -m reconfig lkdebug

4.关于BUG说明

在MOS上搜索到相关的BUG现象:

        版本和本库匹配(本库版本Linux 11.2.0.4.181016,fix在19.1.0才包含),现象也匹配。

5.解决方法

Apply patch 26405036

可以通过打补丁解决此问题:

6.打补丁操作步骤

(1)环境确认

$ unzip -d <PATCH_TOP_DIR>  p26405036_12201181016DBOCT2018RU_Linux-x86-64.zip

$ cd <PATCH_TOP_DIR>/26405036

$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./

注:

For a RAC environment, shut down all the services (database, ASM, listeners, nodeapps, and CRS daemons) running from the Oracle home of the node you want to patch. After you patch this node, start the services on this node.Repeat this process for each of the other nodes of the Oracle RAC system. OPatch is used on only one node at a time.

对于RAC,打这个补丁需要停掉该节点上面的所有服务,然后同一时间只能在一个节点打补丁。

(2)补丁实施

To install the patch, follow these steps:

1. Set your current directory to the directory where the patch is located and then run the OPatch utility by entering the following commands:

$ cd <PATCH_TOP_DIR>/26405036

$ opatch apply

2. Verify whether the patch has been successfully installed by running the following command:

$ opatch lsinventory

3. Start the services from the Oracle home.

7.风险预估

补丁回退:

1. Deinstall the patch by running the following command:

$ opatch rollback -id 26405036

2. Start the services from the Oracle home.

3. Ensure that you verify the Oracle Inventory and compare the output with the one run before the patch installation and re-apply any patches that were rolled back as part of this patch apply. To verify the inventory, run the following command:

$ opatch lsinventory

8.参考文档

Bug 26405036 - Large Allocation Of "ges enqueues" and "ges resource dynamic" In The Shared Pool (文档 ID 26405036.8)

http://www.lryc.cn/news/425755.html

相关文章:

  • SAP BRIM用于应收账款AR收入中台
  • LVS原理简介
  • Qt五大核心特性之元对象系统
  • 开放式耳机伤耳朵吗?开放式耳机在一定程度上保护我们的耳朵
  • JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车系统源码
  • 批量智慧:揭秘机器学习中的批量大小
  • 苹果Vision Pro生态发展:现状、挑战与未来展望
  • 湖南第一师范学院来访炼石,推动密码与数据安全合作
  • 全面解析ETL:数据仓库架构中的关键处理过程
  • keepalived的介绍与配置
  • 二叉树概念与使用
  • MongoDB 在 Java 中的使用教程
  • 微前端架构下的配置管理:策略、实现与最佳实践
  • React Native中好用的UI组件库
  • WebSocket 快速入门
  • MySQL中的存储文件和IO机制详细解析
  • 复习之 java 锁
  • 数据结构与算法 - 图
  • 白骑士的HTML教学基础篇 1.1 HTML简介
  • c语言基础知识学习
  • Qt/QML学习-Dial
  • 达梦数据库系列—48.DMHS实现Mysql到DM8的同步
  • PostgreSQL的启动过程
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ的区别简介
  • 7.1 多态案例
  • 革新测试管理:集远程、协同、自动化于一身的统一测试管理平台
  • HAProxy的详解
  • 网络安全实训第一天(dami靶场搭建,XSS、CSRF、模板、任意文件删除添加、框架、密码爆破漏洞)
  • 4.1 SQL的起源与发展
  • android中实现禁掉有线网络