首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle进程内存占用一直增加,达到1G左右的时候就会连接失败,监听进程死掉,或者CPU达到100%,怎么解决

2012-01-18 
oracle进程内存占用一直增加,达到1G左右的时候就会连接失败,监听进程死掉,或者CPU达到100%,如何解决?我怀

oracle进程内存占用一直增加,达到1G左右的时候就会连接失败,监听进程死掉,或者CPU达到100%,如何解决?
我怀疑是程序,什么资源没释放,操作多了,内存就会越来越多,到最后就会到极限,有可能是什么资源占用导致的呢?如果是SQL语句写的有问题,我该如何查找呢?有什么工具和方法吗?

[解决办法]
之前看到过一个专业的分析的工具,忘记什么名字了。
sql有问题的话,你可以查看你的系统的日志,会知道一些原因。

Oracle也可以给自己可以利用的资源做出利用策略,但是所有的操作,都是有日志的。

从你说的情况来看,
可能有很多很长时间占用数据库的操作,或者打开的连接一直没有关系。

服务器都作了什么设置呢?比如sga的分配,是什么情况呢?

可以去OEM上面看看,目前数据库的瓶颈在什么地方。里面有一些可以利用的消息。
看问题在什么地方,决定做什么吧。
[解决办法]
要进行调优,及参数设置.

启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
ORACLE9i调优只涉及如下几个参数:
a) processes = 2000;
b) open_links = 100;
c)open_cursors = 30000;
d)sessions=2500;
e) parallel_automatic_tuning=true
f) undo_retention=3600
g) undo_management=AUTO
请确保在“SPFILE”中保存.在Oracle9i缺省的启动参数是spfile.不要用pfile文件启动数据库.


物理内存大于2.5G以上的通用设置:
启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
配置SGA和PGA大小方法如下:

物理内存大于2.5G以上的通用设置
中文名参数名参数值设置方法
SGA的最大大小Sga_max_size1200M例程>配置>内存项卡
日志缓冲区Log_buffer3145728例程>配置>一般信息选项卡>所有初始化参数
大型池Large_pool_size24M例程>配置>内存项卡
Java池Java_pool_size20M例程>配置>一般信息选项卡>所有初始化参数
共享池Shared_pool_size96M例程>配置>内存项卡
数据缓冲区高速缓存Db_cache_size800M例程>配置>内存项卡
Keep池Db_keep_cache_size224M例程>配置>一般信息选项卡>所有初始化参数
Pga自动管理workarea_size_policyAUTO例程>配置>一般信息选项卡>所有初始化参数
总计pga目标pga_aggregate_target500M例程>配置>内存项卡

说明:
1.此内存设置不包含在数据库服务器上的其它应用程序的物理内存的大小.如果有其它的应用程序,可以参照下面的计算: sga_max_size+ pga_aggregate_target+应用程序物理内存+OS物理内存 <= 系统物理内存*75%.如果服务器上只有Oracle服务器,在2.5G以上物理内存的服务器上Oracle内存参数都可以参照上面的设置.如果服务器上有其它的应用,而服务器总的物理内存大于2.5,请自己计算后再选择的方案.
2.sga_max_size+ pga_aggregate_target <=1.7G,在32bit操作系统上有这个限制.
3.Log_buffer的大小为3M.但是在设置的时候必须输入换算后的3145728. 其他的参数支持M的输入.

热点排行