网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.修改oracle的internal口令.
.Linux 磁碟配额( Quota ).
.VNI-2015:验证错误的解決方法总.
.Oracle数据库较好的重新启动步骤.
.在不同字符集的数据库之间导入数.
.关于如何更新 XQuery 的具体步骤.
.在Oracle 10g中建立没有域名的DB.
.关于Oracle开放Toplink全部源码.
.Oracle9i数据库设计指引全集二.
.安装 Oracle 9iR2 on RHEL AS 3 .
.案例学习Oracle错误:ORA-00604.
.在MTS使用ODP读写Oracle是出现无.
.[HOWTO]ORACLE中如何实现ASC字符.
.用.NET新提供的managed provider.
.SQL*PLUS命令的使用大全.
.Oracle 10月份发表的一系列漏洞.
.ORACLE入门之物理文件大小的限制.
.Oracle9i 数据库管理实务讲座(二.
.Export/Import 使用技巧与常见错.
.教你修复被优化大师Kiss掉的Orac.

深入探讨ORA-04031的产生原因及解决方法

发表日期:2008-4-2


现象:ORA-04031: unable to allocate 4096 bytes of shared memory

具体原因及解决方法:

ORA-04031出现的问题有以下几个可能性:

1. 没有绑定编量造成shared_pool碎片过多,同时shared_pool_size太小

(1)这个情况是比较常见的。

(2)第二种情况通常会建议使用绑定变量,或者用简单的加大shared_pool,临时的解决方法就是alter system flush shared_pool。

2. Large_pool,Java_pool太小造成的

(1)这个通过错误信息的提示很容易判断(Ora-04031 cannot allocate .. memeory in [large_pool])

(2)解决方法就是简单的加大 Large_pool or Java_pool

3. 过度的开CURSOR而不关闭。

目前,此问题发生的越来越多,特别是在JAVA的运行环境中,屡见不鲜。加大Shared_pool或者flush shared_pool往往只能延迟问题出现的时间,而无法避免此问题。

判断方法:

select count(*) from v$open_cursor ;
select * from v$sysstat 
where name = 'opened cursors current';

假如出来的值特大(以万为单位)时,基本就可以确定是这个原因了。

解决这个问题的方法就是检查程序,看是否没有正常的关闭cursor(对于JAVA来说,就是没有关闭Statement)。或者select sql_text from v$open_cursor,看看都是哪些cursor没关闭,再去检查车程序。

也有的程序使用了保持一定量的cursor一直open,从而避免cursor过多次的开启,来提高性能。对于这种情况,则应该选择适当的shared_pool_size和控制keep_opening的cursor的量。

另外,Oracle参数session_cached_cursors也有可能过大,解决的方法就是把它降低到适当的值。

上一篇:修复Oracle数据库参数文件的另类方法 人气:796
下一篇:详细讲解ORA-04030的产生原因及解决方法 人气:2248
浏览全部Oracle的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐