问题描述:数据库连接太多,连接打开没有长时间不关闭,时间长了会连接不上数据库。
解决方式:
1、增加process数量
2、检查应用程序使用数据库连接后有没有释放连接。
查看系统参数配置
SQL>show parameter process
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 300
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sessions integer 335
SQL> select count(*) from v$process;
COUNT(*)
----------
297
SQL>select count(*) from v$session;
COUNT(*)
----------
297
查看哪些程序产生大量的连接
SQL> selectprogram,status,count(*) from v$session
group by program,status having count(*) > 5
order by program,status;
定位session 最后run的SQL
SQL> select sql_text,count(*) from v$sql s , v$session se where se.prev_hash_value =s.hash_value group by sql_text;
在操作系统上查看进程
$ps -ef | grep ora
修改processes后,session等参数会自动修改
SQL> alter system set processes=5000 scope=spfile;
修改/etc/sysctl.conf 文件
kernel.sem=5010 641280 5010 128
#/sbin/sysctl -p
重新启动数据库
/
后记:
本例中最后进行了增大数据库的日志文件操作,通常来说,日志文件的大小对数据库性能影响比较显著。日志切换的时候影响数据库。
对数据库监控可以用 Quest Spotlight on oracle
官方网站:http://www.quest.com/ ,可以免费试用30天哦。现在的版本是8.01