ORA-04031 错误分析及处理方法

news2024/9/23 23:35:48

一、问题描述

使用普通用户登录数据库报ORA-04031错误
在这里插入图片描述

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Mon Mar 25 09:14:59 2024

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> conn trui/oracle
Error accessing PRODUCT_USER_PROFILE
Warning:  Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
ERROR:
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","BEGIN
DBMS_APPLICATION_INFO....","sga heap(1,0)","kglsim object batch")


Error accessing package DBMS_APPLICATION_INFO
SP2-0575: Use of Oracle SQL feature not in SQL92 Entry Level.
Connected.

二、原因分析

ORA-04031错误是Oracle数据库的内存分配错误,它表示在SGA(System Global Area)中无法分配足够的共享内存空间。

对于大多数应用来说,共享池的大小对于Oracle 性能来说都是很重要的。共享池中保存数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句。
  
当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先刷新池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031 错误。
  
所以,可以通过增加SGA的空间来解决ORA-04031 错误。

三、处理方法

查看当前内存参数

SQL> show parameter sga

NAME                                   TYPE                         VALUE
------------------------------------ ----------------------     ------------------------------
lock_sga                             boolean                     FALSE
pre_page_sga                         boolean                     FALSE
sga_max_size                         big integer                 1536M
sga_target                           big integer                 1536M

修改 sga_max_size 和 sga_target参数值(比当前值大),本例设为2G

SQL> alter system set sga_max_size=2G scope=spfile;

System altered.

SQL> alter system set sga_target=2G scope=spfile;

System altered.

重启数据库使修改值生效

sga_max_size是用来约束sga_target的,sga_max_size和sga_target是静态参数,修改时需加scope=spfile,修改后需要重启数据库生效。一般情况下sga_max_size=sga_target 。

SQL> shutdown immediate
SQL> startup

验证参数是否修改成功

SQL> show parameter sga

NAME                                   TYPE                         VALUE
------------------------------------ ----------------------     ------------------------------
lock_sga                             boolean                     FALSE
pre_page_sga                         boolean                     FALSE
sga_max_size                         big integer                 1536M
sga_target                           big integer                 1536M

四、附上实际处理过程记录

查看当前内存参数

SQL> show parameter sga

NAME                                   TYPE                         VALUE
------------------------------------ ----------------------     ------------------------------
lock_sga                             boolean                     FALSE
pre_page_sga                         boolean                     FALSE
sga_max_size                         big integer                 1536M
sga_target                           big integer                 1536M

修改 sga_max_size参数值(比当前值大),本例设为2G

SQL> alter system set sga_max_size=2G scope=spfile;

System altered.

修改 sga_target 参数时出现ORA-04031错误

SQL> alter system set sga_target=2G scope=spfile;
alter system set sga_target=2G scope=spfile
*
ERROR at line 1:
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","alter
system set sga_target=...","sga heap(1,0)","kglsim object batch")

尝试 shutdown immediate关闭数据库,依然是ORA-04031错误

SQL> shutdown immediate
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","select count(*) from reg$","sga heap(1,0)","kglsim object batch")

尝试刷新共享池后再次shutdown,依然失败

SQL>  alter system flush shared_pool ;

System altered.

SQL>  shutdown immediate
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 3896 bytes of shared memory ("shared pool","select count(*) from reg$SQL>

使用shutdown abort关闭数据库

SQL> shutdown abort
ORACLE instance shut down.

启动数据库后查看当前参数值

SQL> startup

SQL> show parameter sga

NAME                                   TYPE                         VALUE
------------------------------------ ----------------------     ------------------------------
lock_sga                             boolean                     FALSE
pre_page_sga                         boolean                     FALSE
sga_max_size                         big integer                 2G
sga_target                           big integer                 1536M

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学点儿Java_Day12_IO流

1 IO介绍以及分类 IO: Input Output 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据…

详细分析Linux中的core dump异常(附 Demo排查)

目录 1. 基本知识2. 进阶知识3. Demo4. 彩蛋 1. 基本知识 Core dump 是指在程序异常终止时,操作系统将程序的内存映像保存到磁盘上的一种机制。 在 Linux 系统中,core dump 提供了一种调试程序错误的重要方式,它记录了程序在崩溃时的内存状态…

文献学习(自备)

收官大作,多组学融合的新套路发NC!! - 知乎 (zhihu.com) Hofbauer cell function in the term placenta associates with adult cardiovascular and depressive outcomes | Nature Communications 病理性胎盘炎症会增加几种成人疾病的风险&a…

CAD自动轻量化,工业仿真动画快速制作

随着现代工业的蓬勃发展,制造业企业在产品宣传展示、工作流程讲解、机械维修维护等方面对展示形式提出了更高的要求。工业动画以其直观、生动的特点,能够深入剖析产品的结构、工作原理和操作流程,为企业带来了全新的宣传展示方式。 但是由于…

Obsidian插件-高亮块(Admonition)

在插件市场里面搜索Admonition并安装插件,就可以使用高亮块了。 添加高亮块 用法稍微有一些不同。按照下面的格式,输入Markdown就可以创建一个高亮块。 内容内容内容输入*ad-*会出现相应的类型可以选择

【QGIS从shp文件中筛选目标区域导出为shp】

文章目录 1、写在前面2、QGIS将shp文件中目标区域输出为shp2.1、手动点选2.2、高级过滤 3、上述shp完成后,配合python的shp文件,即可凸显研究区域了 1、写在前面 利用shp文件制作研究区域mask,Matlab版本,请点击 Matlab利用shp文…

超分之SwinIR官方代码解读

文章目录 一、解读SwinIR模型文件:network_swinir.py1. 带有相对为位置偏置的(W-MSA)2. STL(Swin Transformer)3. RSTB(Residual Swin Transformer Block)4. SwinIR(主框架网络) 二、解读SwinIR测试主文件:…

企业员工培训考试系统开发方案

一、引言 在当今知识经济时代,企业对员工的综合素质和专业技能有着越来越高的要求。为了适应这一趋势,构建一个全面而高效的企业员工培训考试系统变得尤为重要。该系统旨在通过提供多样化的培训课程和全面的考核机制,促进员工持续学习和能力…

结构体,联合体,枚举( 1 )

目录 前言 1.结构体 1.1结构体的声明 1.2结构体变量的创建和初始化 1.3结构体成员的访问字符 1.4结构体的内存大小 1.4.1对齐规则 1.5结构体传参 前言 在编程的世界里,数据结构的选择对于程序的效率和可读性有着至关重要的影响。不同的数据结构适用于不同的…

手写SpringBoot(二)之动态切换Servlet容器

系列文章目录 手写SpringBoot(一)之简易版SpringBoot 手写SpringBoot(二)之动态切换Servlet容器 手写SpringBoot(二)之动态切换Servlet容器 文章目录 系列文章目录手写SpringBoot(二&#xff…

面向图像分类的视觉Transformer

一种面向对象分类的视觉Transformer,即ViT。该模型避免了卷积带来的归纳偏置,弥补了卷积神经网络在超长周期建模的不足。 1、DeiT(data-efficient image transformer)采用了知识蒸馏策略(将大型模型的复杂知识&#xf…

工厂数据分析系统用这个开源库准没错

ScottPlot是一款简单易用、高度定制、性能卓越的.NET绘图库,支持跨平台操作。除提供标准图表类型外,还支持交互式操作,呈现生动的数据展示。在工厂数字化系统中,可用于生产数据可视化、设备监测和质量控制。无论用于科学研究、数据…

蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法&#xff0c;时间复杂度是(nm)。 (注意的优先级比^高&#xff0c;记得加括号(a[i]^a[j])x&#xff09; #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…

ThreadLocal和Synchronized的区别

目录 背景过程ThreadLocal什么是ThreadLocal&#xff1f;既然都是保证线程访问的安全性&#xff0c;那么和Synchronized区别是什么呢&#xff1f;ThreadLocal的使用TheadLocal使用场景原理高并发场景下ThreadLocal会造成内存泄漏吗&#xff1f;什么原因导致&#xff1f;如何避免…

JavaScript 权威指南第七版(GPT 重译)(四)

第九章&#xff1a;类 JavaScript 对象在第六章中有所涉及。该章将每个对象视为一组独特的属性&#xff0c;与其他对象不同。然而&#xff0c;通常有必要定义一种共享某些属性的对象类。类的成员或实例具有自己的属性来保存或定义它们的状态&#xff0c;但它们还具有定义其行为…

蓝桥杯省三保底代码——数显+按键功能实现

目录 前言 一、为什么能保底省三 二、数显模块的实现 1.数码管显示​编辑 1&#xff09;断码表 2&#xff09;位选 3&#xff09;段选 4&#xff09;扫描 2.菜单 三、按键功能的实现 1.按键扫描 2.菜单切换 四、完整代码演示 五、结语 前言 上一期介绍全家桶时&…

C语言分支循环语句详解

分支和循环语句是什么 在我们写程序的时候&#xff0c;总会遇到想一直循环执行某种语句的时候&#xff0c;这时候我们就要使用一种语句叫循环语句&#xff0c;或者带一些判断条件的语句&#xff0c;在C语言中提供了像这些的循环语句和分支语句 if else 语句 这是一种判断语句…

Model-Free Q-Learning for the Tracking Problem of Linear Discrete-Time Systems

Model-Free Q-Learning for the Tracking Problem of Linear Discrete-Time Systems&#xff0c;2024&#xff0c; Chun Li , Jinliang Ding , Senior Member, IEEE, Frank L. Lewis , Life Fellow, IEEE, and Tianyou Chai , Life Fellow, IEEE 对完全未知动力学的线性离散时…

远程桌面连接弹出“出现身份验证错误,要求的函数不受支持”解决办法

windows远程桌面连接,出现如图所示“出现身份验证错误&#xff0c;要求的函数不受支持”错误&#xff0c;无法连接。 解决办法&#xff1a; 打开本地组策略编辑器&#xff0c;按winr组合键输入gpedit.msc命令打开。 选择“计算机配置”--“管理模板”--“系统”--“凭据分配”…

OpenHarmony实战开发-Web组件的使用

介绍 本篇Codelab使用ArkTS语言实现一个简单的免登录过程&#xff0c;向大家介绍基本的cookie管理操作。主要包含以下功能&#xff1a; 获取指定url对应的cookie的值。设置cookie。清除所有cookie。免登录访问账户中心。 原理说明 本应用旨在说明Web组件中cookie的管理操作。…