解决SGA 不能超过4G,数据库关闭缓慢的问题
2010-02-12 11:20
363 查看
OS:redhat 4 64bit
Database:oracle10gR2 for linux 64bit
Physical memory:32G
昨天晚上一哥们Q我说数据库关闭缓慢,我叫他贴出告警日志,部分关键信息如下:
Waiting for dispatcher 'D000' to shutdown
All dispatchers and shared servers shutdown
然后我又问他数据库是专有模式还是共享模式,他说专有模式,OK 根据告警信息可以判断 数据库打开了shared_servers,还有dispatcher,于是叫他运行如下两个命令
alter system set shared_servers=0;
alter system set dispatchers='';
然后重启数据库。到此 数据库关闭正常。
可过了不久 关闭数据库又极为缓慢,再次贴出告警信息,关键部分如下
SHUTDOWN: Active processes prevent shutdown operation
可以知道 数据库有一个活动进程阻止了shutdown 操作,OK,shutdown abort,重启
select sid,event from v$session;
查询到有一个 等待事件 jobq slave wait
ok 设置job_queue_processes=30;再次关闭数据库 ,正常关闭 job_queue_processes默认为10
重启数据库,再次关闭数据库 还是比较缓慢,告警日志如下
Shutting down instance (immediate)
License high water mark = 2
Fri Feb 12 11:33:27 2010
Stopping Job queue slave processes, flags = 7
Fri Feb 12 11:33:27 2010
Job queue slave processes stopped
呵呵,job queue这个进程延缓了 数据库的关闭。如果想要
彻底解决这个问题可以设置job_queue_processes=0,
一个生产系统是不会经常关闭的,如果没有出现 jobq slave wait等待事件就别理它了吧。
另外查看它的SGA 为3G,PGA为6G,我当时就郁闷了,怎么这样分配内存呢,然后叫他分配12G给SGA,12G给PGA(其实内存分配多少没有一个定值,根据实际情况调整,方法很多比如看等待事件,各种顾问程序...关键是要找到PGA,SGA的平衡点)之后重启数据库,结果报错,信息如下
SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
这个错误提示就是说SGA超过了最大值这里分配了12G
由于os是64bit,db也是64bit,不存在db限制,那么这个限制应该是linux内核参数引起的。这个内核参数就是
/etc/sysctl.conf 中的kernel.shmmax,这个参数决定了OS的最大共享内存,由于SGA是共享的,此参数设置过小必然导致SGA不能设置过大。更改kernel.shmmax解决问题。
Database:oracle10gR2 for linux 64bit
Physical memory:32G
昨天晚上一哥们Q我说数据库关闭缓慢,我叫他贴出告警日志,部分关键信息如下:
Waiting for dispatcher 'D000' to shutdown
All dispatchers and shared servers shutdown
然后我又问他数据库是专有模式还是共享模式,他说专有模式,OK 根据告警信息可以判断 数据库打开了shared_servers,还有dispatcher,于是叫他运行如下两个命令
alter system set shared_servers=0;
alter system set dispatchers='';
然后重启数据库。到此 数据库关闭正常。
可过了不久 关闭数据库又极为缓慢,再次贴出告警信息,关键部分如下
SHUTDOWN: Active processes prevent shutdown operation
可以知道 数据库有一个活动进程阻止了shutdown 操作,OK,shutdown abort,重启
select sid,event from v$session;
查询到有一个 等待事件 jobq slave wait
ok 设置job_queue_processes=30;再次关闭数据库 ,正常关闭 job_queue_processes默认为10
重启数据库,再次关闭数据库 还是比较缓慢,告警日志如下
Shutting down instance (immediate)
License high water mark = 2
Fri Feb 12 11:33:27 2010
Stopping Job queue slave processes, flags = 7
Fri Feb 12 11:33:27 2010
Job queue slave processes stopped
呵呵,job queue这个进程延缓了 数据库的关闭。如果想要
彻底解决这个问题可以设置job_queue_processes=0,
一个生产系统是不会经常关闭的,如果没有出现 jobq slave wait等待事件就别理它了吧。
另外查看它的SGA 为3G,PGA为6G,我当时就郁闷了,怎么这样分配内存呢,然后叫他分配12G给SGA,12G给PGA(其实内存分配多少没有一个定值,根据实际情况调整,方法很多比如看等待事件,各种顾问程序...关键是要找到PGA,SGA的平衡点)之后重启数据库,结果报错,信息如下
SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
这个错误提示就是说SGA超过了最大值这里分配了12G
由于os是64bit,db也是64bit,不存在db限制,那么这个限制应该是linux内核参数引起的。这个内核参数就是
/etc/sysctl.conf 中的kernel.shmmax,这个参数决定了OS的最大共享内存,由于SGA是共享的,此参数设置过小必然导致SGA不能设置过大。更改kernel.shmmax解决问题。
相关文章推荐
- 解决SGA 不能超过4G,数据库关闭缓慢的问题
- 解决TranctionScope调试时关闭数据库连接问题
- 解决Process进程不能及时关闭及阻塞问题
- 【转】彻底解决Android 应用方法数不能超过65K的问题
- 解决远程桌面关闭后teamviewer不能连接的问题
- 关于ORACLE 11g数据库不能导出空表问题解决
- 数据库日志超过 4G 数据库不能正常工作的原因
- Hibernate 不能实时获取数据库中更新的记录问题解决
- 解决 PasLibVlc 不能实现 TitleShow:=false 问题, 即关闭--no-video-title-show字幕
- 解决SQL SERVER 2008数据库表中修改字段后不能保存的问题
- 解决ubuntu下mysql不能远程连接数据库的问题
- 解决ubuntu下mysql不能远程连接数据库的问题
- fat32转ntfs解决大于4G文件不能保存问题
- 关于Web程序打开Word、Excel后,不能关闭的问题的一个解决办法
- 彻底解决Android 应用方法数不能超过65K的问题
- C#中DataGridView绑定了DataTable后,通过代码修改DataGridView中的数据,总有一行(被修改过并被用户选中的行集合中索引为0的行)不能被UpDate回数据库的问题和解决办法
- 故障分析:数据库一致性关闭缓慢问题诊断
- 解决修改MySQL的数据库存放路径后不能重启的问题
- 解决php5.3不能连接mssql数据库问题
- Android之解决打包apk方法数不能超过65k的问题