Oracle 解决4031错误

一、问题描述

什么是4031错误和4031错误产生的原因:
简单一个句话概括:

  • 由于服务器一直在执行大量的硬解析,导致Oracle 的shared pool Free空间碎片过多,大的chunk不足, 当又一条复杂的sql语句要硬解析时, 缺少1个足够大的Free chunk, 通常就会报4031错误.

二、解决方法

临时解决推荐方法1,其他一般推荐方法4和5,大佬推荐方法2和3解决。

方法1.清空Shared pool缓存.

此方法治标不治本,以后还会报4031,可以再次清理shared pool解决
执行

alter system flush shared_pool;

在这里插入图片描述

方法2.共享SQL

这一块需要自己理解,我是根据学习了相老师讲解的方法,可以搜索一下共享sql减少硬解析的方法;

方法3. 将复杂sql语句及执行计划强制保留在缓存

dbms.shared_pool.keep('object_name')

此话怎么理解? 其实导致4031错误的原因是shared_pool空间没有足够大的chunk提供给新的复杂sql语句进行硬解析, 其实也不是单纯地因为free 空间碎片太多, 其实当free空空间没有足够大的chunk时, oracle 会释放 Library cache中長时间不使用的chunk.

举个例子, 1个数据库实例中, free空间中chunk数量很少了,而且没有足够大的chunk, 这时有1个中等规模的sql要硬解析,就会从library cache中找那些不长用的chunk释放出来, 如果释放里面若干个小规模的chunk, 是无问题的.

但是如果其中library cache 有个很大的chunk存放着1个很复杂的sql语句, 但是长时间没有被使用了, 有可能这个chunk被释放出来被使用, 而且被拆解了… 其中一部分别使用, 另1部分被放入free空间中.

而之后偏偏那个很复杂的sql语句又执行了,需要硬解析, 而那个足够大的chunk已被分解… 则有可能报4031错误.

所以方法3就是指定一些sql语句的缓存长期保留, 不让他们被释放, 避免这种情况的发生.

方法4 增加shared pool空间.

一般当服务器增加内存的时候, 就可以给shared pool增加空间:

一般来讲Oracle 10g以后 SGA里面各大池空间都是动态分配的, 一般增加SGA大小即可.
在这里插入图片描述
这个大小不要小于你查询到的大小

alter system set sga_target = 5000M;                  --注意不能超过sga_max_size
alter system set sga_max_size = 5000M;              --该这个必须重启数据库, 目的 是限制sga_target, 以免sga_target不小心设置过大,倒置服务器内存耗尽挂掉

也可以单独设置shared pool的大小:
查询shared pool的大小
在这里插入图片描述
注意这个设置的大小不要小于查询到的大小

alter system set shared_pool_size  = 2G;      

注意默认情况下 用show parameter 来查查看 sga_target 和 shared_pool的话, value 都是0的, 并不是说它们的当前值就真的是0了,只是0是代表交由Oracle自己管理的意思.

可以用这个语句可以查看当前的各大池占用大小:

select component, current_size from v$sga_dynamic_components;

在这里插入图片描述

方法5: 保留区

oracle 为了避免4031错误, 其实还可以在shared pool划出1个保留的free 空间, 平时不会使用, 专门应对突然出现的复杂sql语句硬解析,相当与应急用的空间啦. 这个方法相当有效, 可以避免大部分的4031错误, 不过缺点就是平时减少了shared pool的可用空间, 减低了数据库缓存性能啦~

我们可以用下面这条语句来查看 在保留区请求失败的次数:

select request_misses from v$shared_pool_reserved;

我自己测试的,所以是0,如果这个数字不为0,就会出现4031错误
在这里插入图片描述

注意这个次数一旦 大于1, 就证明发生过4031错误! 因为既然去保留区申请空间了, 证明是1个复杂的sql语句, 还申请失败的话,就会报4031错误啦~ 所以这个次数最好就是0啦.
如果不为0我们就要扩大保留区:
查看保留区大小:
在这里插入图片描述
设置保留区大小都一样啦:
这个数字我随便写的,这个数字要大于你原来的保留区的大小

alter system set shared_pool_reserved_size = 500m;

注意不要设置过大啦, 你懂的.

扩展

shared pool最佳设置大小

select 'shared pool' component,   shared_pool_size_for_estimate estd_sp_size,estd_lc_time_saved_factor parse_time_factor,case when current_parse_time_elapsed_s + adjustment_s < 0then 0else      current_parse_time_elapsed_s + adjustment_send  response_timefrom ( select a.shared_pool_size_for_estimate,a.estd_lc_time_saved_factor,a.estd_lc_time_saved,e.value/100 current_parse_time_elapsed_s,c.estd_lc_time_saved - a.estd_lc_time_saved adjustment_sfrom   v$shared_pool_advice a,(select * from v$sysstat where name ='parse time elapsed') e,(select estd_lc_time_savedfrom   v$shared_pool_advicewhere shared_pool_size_factor = 1) c);

在这里插入图片描述
一般来讲, 当PARSE_TIME_FACTOR 为 1设置的大小最合理,我们可以设置2512M。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/372048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚信安全发布2024年6月威胁态势,高危漏洞猛增60%

近日&#xff0c;亚信安全正式发布《2024年6月威胁态势报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;报告显示&#xff0c;6月份新增信息安全漏洞 1794个&#xff0c;高危漏洞激增60%&#xff0c;涉及0day漏洞占67.67%&#xff1b;监测发现当前较活跃的勒索病毒…

438. 找到字符串中所有字母异位词

思路&#xff1a;字母异位词在排序后会得到相同的字符串&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; class Solution { public:vector<int> findAnagrams(string s, string p) {int np.length();//p的长度vector<int> ans{};if(n&g…

2024最新版若依-RuoYi-Vue3-PostgreSQL前后端分离项目部署手册教程

项目简介: RuoYi-Vue3-PostgreSQL 是一个基于 RuoYi-Vue3 框架并集成 PostgreSQL 数据库的项目。该项目提供了一套高效的前后端分离的开发解决方案&#xff0c;适用于中小型企业快速构建现代化的企业级应用。此项目结合了 RuoYi-Vue-Postgresql 和 RuoYi-Vue3 的优点&#xff0…

为什么要设计DTO类

为什么要使用DTO类&#xff0c;下面以新增员工接口为例来介绍。 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需求分析时&#xff0c;往往都是对照着产品原型进行分析&#xff0c;因为产品原型比较直观&#xff0c;便于我们理解业务。 后台系统中可以管理员工信息…

比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南

比赛获奖的武林秘籍&#xff1a;04 电子类比赛嵌入式开发快速必看的上手指南 摘要 本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容&#xff0c;并结合自身比赛经历给出了相关建议。 正文 如何开始上手做自己第一个项目…

MySQL数据库-Windows部署MySQL环境

Windows部署MySQL环境​​​​​​ 一、下载mysql数据库 进入MySQL官方网站&#xff08;MySQL :: MySQL DownloadsMySQL&#xff09;&#xff0c;随后按如下红框方式操作&#xff1a; ​ ​ ​ ​ 这里选择的是离线安装&#xff0c;第一个是在线安装 下载好安装包后开始…

前端学习(三)CSS介绍及选择符

##最近在忙期末考试&#xff0c;因此前端笔记的梳理并未及时更新。在学习语言过程中&#xff0c;笔记的梳理对于知识的加深very vital.因此坚持在明天学习新知识前将笔记梳理完整。 主要内容&#xff1a;CSS介绍及选择符 最后更新时间&#xff1a;2024/7/4 目录 内容&#x…

Element中的表格组件Table和分页组件Pagination

简述&#xff1a;在 Element UI 中&#xff0c;Table组件是一个功能强大的数据展示工具&#xff0c;用于呈现结构化的数据列表。它提供了丰富的特性&#xff0c;使得数据展示不仅美观而且高效。而Pagination组件是一个用于实现数据分页显示的强大工具。它允许用户在大量数据中导…

阶段三:项目开发---大数据开发运行环境搭建:任务5:安装配置Kafka

任务描述 知识点&#xff1a;安装配置Kafka 重 点&#xff1a; 安装配置Kafka 难 点&#xff1a;无 内 容&#xff1a; Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;…

c#第五次作业

目录 1. 实现通用打印泛型类&#xff0c;可以打印各个集合中的值&#xff0c;方便调试 2. 计算遍历目录的耗时 3. 有哪些算术运算符&#xff0c;有哪些关系运算符&#xff0c;有哪些逻辑运算符&#xff0c;有哪些位运算符&#xff0c;有哪些赋值运算符 1&#xff09;算术运算…

浅析C++引用

浅析C引用"&" ​ C中引入了一个新的语言特性——引用(&)&#xff0c;它表示某一对象的别名&#xff0c;对象与该对象的引用都是指向统一地址。那么我们就来看看关于引用的一些知识点吧&#x1f9d0; 特性 引用在定义时必须初始化一个变量可以有多个引用引…

STM32Cube高效开发教程<高级篇><FreeRTOS>(二)-----FreeRTOS的文件组成和基本原理

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(高级篇)》&#xff0c;有意向的读者可以购买正版书籍辅助学习&#xff0c;本书籍由王维波老师、鄢志丹老师、王…

MinIO:开源对象存储解决方案的领先者

MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统&#xff0c;致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释&#xff1a;MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适…

什么是T0策略?有没有可以持仓自动做T的策略软件?

​​行情低迷&#xff0c;持仓被套&#xff0c;不想被动等待&#xff1f;长期持股&#xff0c;想要增厚持仓收益&#xff1f;有没有可以自动做T的工具或者策略&#xff1f;日内T0交易&#xff0c;做到降低持仓成本&#xff0c;优化收益预期。 什么是T0策略&#xff1f; 可以提…

SpringBoot之内容协商

现象演示 假设有一个需求是根据终端的不同&#xff0c;返回不同形式的数据&#xff0c;比如 PC 端需要以 HTML 格式返回数据&#xff0c;APP、小程序端需要以 JSON 格式返回数据。这时我们是 coding 几个相似的接口&#xff1f;还是在一个接口里面做复杂判断处理&#xff1f;两…

7.8作业

一、思维导图 二、 1】按值修改 2】按值查找&#xff0c;返回当前节点的地址 &#xff08;先不考虑重复&#xff0c;如果有重复&#xff0c;返回第一个&#xff09; 3】反转 4】销毁链表 //按值修改 int value_change(linklistptr H,datatype e,int value) {if(HNULL||empty(H…

二次元转向SLG,B站游戏的破圈之困

文 | 螳螂观察 作者 | 夏至 2023年是B站游戏的滑铁卢&#xff0c;尽管这年B站的游戏营收还有40多亿&#xff0c;但相比去年大幅下降了20%&#xff0c;整整少了10亿&#xff0c;这是过去5年来的最大跌幅&#xff0c;也是陈睿接管B站游戏业务一年以来&#xff0c;在鼻子上碰的第…

【Java系列】深入解析 Lambda表达式

简化这个代码 这个就是Lambda表达式,可以简化匿名内部类的写法 package lambda;public class demo2 {public static void main(String[] args) {//第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象--接口多态// 但是这个实现类,我只要用一次,所以我…

SRS流媒体服务器概述

SRS/5.0(Bee) is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 翻译&#xff1a;SRS/5.0(Bee)是一款简洁、高效、实时的视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DAS…

广州银行多份招股书数据货不对板:内控风险难平,IPO曲折前行

作者|芋圆 来源|贝多财经 6月29日&#xff0c;广州银行第五次更新了招股说明书。 作为制造业大省的头部城商行&#xff0c;广州银行的发展一直备受关注。拆解可知&#xff0c;广州银行2023年在盈利能力、内控、资本充足性、资产质量等方面的表现&#xff0c;凸显了该行接下来…