分类: Oracle
2008-04-23 11:33:17
问:oracle进程内存占用一直增加,达到1G左右的时候就会连接失败,监听进程死掉,或者CPU达到100%,如何解决?
Peak Wong:
性能调优一直是一个很有意思的命题,增强硬件配置是一种方法,但我们平时遇到的最多的问题是如何在没办法增强硬件配置的情况下,将数据库性能优化,这里给出一个思维流程,希望对各位有益:
1、 PATCH是否都打了,ORACLE系统内存参数是否太大,超出OS的MEMORY。
2、 查查是不是程序没有关闭连接导致连接数不断上升引起的,你是什么操作系统?
3、 都作了什么设置呢?比如sga的分配,是什么情况呢?
4、 要进行调优,及参数设置.
启动“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”中保存.在9i缺省的启动参数是spfile.不要用pfile文件启动数据库.
物理内存大于2.5G以上的通用设置:
启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
配置SGA和PGA大小方法如下:
物理内存大于2.5G以上的通用设置
中文名 参数名 参数值 设置方法
SGA的最大大小 Sga_max_size 1200M 例程> 配置> 内存项卡
日志缓冲区 Log_buffer 3145728 例程> 配置> 一般信息选项卡> 所有初始化参数
大型池 Large_pool_size 24M 例程> 配置> 内存项卡
池 _pool_size 20M 例程> 配置> 一般信息选项卡> 所有初始化参数
共享池 Shared_pool_size 96M 例程> 配置> 内存项卡
数据缓冲区高速缓存 Db_cache_size 800M 例程> 配置> 内存项卡
Keep池 Db_keep_cache_size 224M 例程> 配置> 一般信息选项卡> 所有初始化参数
Pga自动管理 workarea_size_policy AUTO 例程> 配置> 一般信息选项卡> 所有初始化参数
总计pga目标 pga_aggregate_target 500M 例程> 配置> 内存项卡
说明:
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的输入.