關於進程猛增導致數據庫崩潰的事件

[复制链接]
查看11 | 回复7 | 2011-2-18 11:42:47 | 显示全部楼层 |阅读模式
老鳥們:
1請教一個問題,今天IT突然打電話過來說連接不上數據庫 報錯為: ORA-00020: 超過處理作業數目上限 (%s),
2本人用sqlplus連入數據庫發現 實例為空間狀態,無法做任何查詢,顯示not log in
3查看alertlog沒有任何異常,
4最後查看PS -ef |wc -l 發現有1000多個進程
5最後關掉監聽器,shutdown abort 實例,才恢復正常.
但是大俠們,這個動作和處理工作應該是很危險的吧,我本來殺掉進程但是太多了,我已經如何追蹤根本原因呢?

回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
max process
max session
有这2个参数
回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
ora-00020超出最大进程数的解决方法
一般原因是因为你的应用程序的连接数超过了ORACLE系统设置的最大连接数。你可以到ORACLE的OEM下,用SYS as/sysdba进入OEM,在Instance的 Configuration下打开All initialization parameters,打到指定的Processes项,该项系统安装一般默认为150,你可以修改到你想需要的,一般200~2000之间。修改之后需要重新启动数据库,建议最好重新启动操作系统。当然你也可以在windows上,在dos命令符下键入:set oracle_sid=xxx ,一样的道理。
ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)
但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,
需要重新启动unix操作系统,参数才能生效。不过它的大小会受制于硬件的内存或ORACLE SGA。范围
可从200——2000不等。
semmns的计算公式为:SEMMNS>processes+instance_processes+system

processes=数据库参数processes的值 instance_processes=5(smon,pmon,dbwr,lgwr,arch)
system=系统所占用信号量。系统所占用信号量可用下列命令查出:#ipcs -sb
其中列NSEMS显示系统已占用信号量。
其它一些跟连接有关的参数,如 licence_max_sessions, licence_sessions_warning 等默认设置都为
零,也就是没有限制。我们可以放心大胆地使用数据库了。

回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
listener.log 检查了吗 gv$session 按照username,machine,program 等group 看看有什么异常
回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
不该shutdown abort数据库
用toad多登几次一般就进去了,再用v$session或者toad的session browser就能查到是那个程式出问题了
回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
花好月不圆 发表于 2011-12-12 22:57
listener.log 检查了吗 gv$session 按照username,machine,program 等group 看看有什么异常

我用sqlplus 在本機登陸,都已經無法登陸了!而且shutdown immediate 都無法關掉了,等了20多分鐘,客戶已經無法忍耐了,我就只有shutdown abort了!
請問有進一步跟蹤和優化的方法么?
回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
mkstone 发表于 2011-12-12 19:43
max process
max session
有这2个参数

好回帖,我好好研讀和測試一下!後續給你結果!!
再請問一下你,我查了系統進程也一下子猛增到了1200多,這個是什麽原因造成的呢?重新啟動數據庫之後只有200多個進程了???

回复

使用道具 举报

千问 | 2011-2-18 11:42:47 | 显示全部楼层
听海★蓝心梦 发表于 2011-12-12 21:14
ora-00020超出最大进程数的解决方法
一般原因是因为你的应用程序的连接数超过了ORACLE系统设置的最大连 ...

好回帖,我好好研讀和測試一下!後續給你結果!!
再請問一下你,我查了系統進程也一下子猛增到了1200多,這個是什麽原因造成的呢?重新啟動數據庫之後只有200多個進程了???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行