Oracle数据库共享内存分配不足问题的解决

问题:

ORA-04031: unable to allocate 19204 bytes of shared memory ("shared 

pool","unknown object","sga heap(1,0)","session param values") 

错误原因:

共享内存太小,分配给共享池的内存不足以满足用户请求,或者存在一定碎片,没有有

效的利用保留区,造成无法分配合适的共享区。一个ORACLE例程的系统全局区域

(SGA)包含几个内存区域(包括缓冲高速缓存、共享池、Java 池、大型池和重做日志缓冲)

SGA=db_cache+shared_pool+java_pool+large_pool 

处理方法:

手动调整SGA的大小,然后重新分配四大内存区域的大小。主要增加共享内存和缓冲高速缓存。

sql> show sga;  //查看SGA的具体大小信息。

sql>show parameter sga_max_size //查看SGA最大值

sql> show parameter shared_pool //查看共享内存

sql>show parameter db_cache    //查看数据缓存

sql> alter system set sga_max_size = 500M scope=spfile;//修改SGA最大值

sql> alter system set shared_pool_size =200M scope=spfile;  //修改共享内存
sql> alter system set db_cache_size =250M scope=spfile;    //修改数据缓存
sql> alter system set java_pool_size =144M scope=spfile;
sql> alter system set large_pool_size =24M scope=spfile;
系统默认150个线程的分配情况:

SGA(164M)=db_cache(24M)+shared_pool(80M)+java_pool(48M)+large_pool(8M)

关于Oracle数据库共享内存分配问题的知识就介绍到这里了,希望本次的介绍能够给您带来一些收获!
时间: 2024-11-05 16:36:54

Oracle数据库共享内存分配不足问题的解决的相关文章

Oracle数据库之内存管理

大页内存 备注 备注1:不能使用oracle自动内存管理: 备注2:目的是减少swap的使用: 备注3:建议SGA大于8G: 备注4:只限于linux系统: 备注5:不会使用/dev/shm空间: 备注6:需要设置内存锁: 如果配置了大页内存但没有被oracle使用 1.sga_max_size超过了大页内存: 2.没有设置内存锁: 3.没有取消自动内存管理: 查看系统大页内存的使用情况 cat /proc/meminfo | grep -i HugePages 备注1:一般大页内存的默认大小为

MySQL数据库共享内存和缓存介绍

转载至 http://www.server110.com/mysql/201311/2991.html 全局共享内存主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连接线程的 Thread Cache,缓存表文件句柄信息的 Table Cache,缓存二进制日志的 BinLog Buffer, 缓存 MyISAM 存储引擎索引键的 Key Buffer以及存储 InnoDB 数据和索引的

oracle数据库经常提示27102 out of memory解决方法

网上有很多解决方案,但是我一个也看不懂,不知道写的什么鬼的东西,为什么一句话就能解决的事,非得长篇大论说原理是什么,看得一脸懵逼 我的解决方法入戏 vi /etc/sysctl.conf 修改kernel.shmall(共享内存总量)的值,该值原来为2097152,我把它给为4097152(暂时不知道应该改什么值,但是把这个值变大就对了,我就是随便吧第一位的2改为4,然后问题就自动解决)了,然后sqlplus / as sysdba 执行select status from v$instance

用 ipcs 管理oracle unix 共享内存

UNIX and Linux Shared Memory and Oracle The UNIX and LINUX operating systems allocate memory based on an interprocess communication model (IPC) to manage memory segments for Oracle database environments. To obtain details on shared memory for UNIX an

Oracle数据库运行时rm误删文件的解决方法

网上可以看到不少有关oracle运行时误删数据文件的讨论,对于使用rm操作系统命令删除的文件,可以通过copy文件描述符来恢复文件,当然这种方式的前提还是数据库还在运行. 但在DB还在运行时直接copy文件描述符来恢复文件,这样操作其实有几个问题: copy过程中需要额外的存储空间 如果误删的文件包括system表空间,在checkpoint发起之前,所有copy操作必须完成,否则来不及copy的数据文件将会因为实例终止而完全丢失,还在copy中数据文件无效:即使不包括system表空间,也需要

Oracle数据库中scott用户不存在的解决方法

SCOTT用户是我们学习Oracle过程中一个非常重要的实验对象,在我们建立数据库的时候,如果是选择定制模式的话,SCOTT用户是不会默认出现的,不过我们可以通过使用几个简单命令来使这个用户出现.以下是解决方法(基于windows): 1.开始--运行--cmd 输入:sqlplus / as sysdba 连接到数据库 SQL>conn scott/tiger 如果scott不存在,会报ORA-01017的错误,并会断开连接 2.我们以SYS用户重新连接 SQL>conn sys/密码 as

JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0.1.0 数据库的时候出现了下列错误: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) 而直接通过plsql可以正常连接数据库,或

Oracle数据库运行时rm误删文件的解决方法 (2)-- 通过脚本实现恢复

根据上篇文章,整个恢复过程可以使用脚本完成,既节约时间,也增加恢复的成功率. 这个方法对误删的数据文件,包括online redo,undo,control file, system或普通数据文件均有效. 整个过程分两部分: 第一部分是通过tail命令hold住文件描述符FD,然后建立数据文件的soft link.完成此步,数据库可正常运行,业务不受影响.但需要防止重启服务器或断电等异常情况,建议此时如果还需继续运行数据库的话,可以通过rman单独对误删的数据文件做备份. 第二部分是在误删的数据

Navicat 连接 Oracle数据库 提示 cannot load OCI DLL 的解决

一.32位系统下 cannot load OCI DLL,126 解决方法:工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 二 .在64位系统下安装了Oracle 11g,在用Navicat去连接Oracle时,提示以下错误: Cannot load OCI DLL, 126: Instant Client package is required for Baic and TNS connection For more information: http://wi