达到最大连接数了,请教一个oracle连接数的问题!

neverland_83 2009-04-02 04:09:47
我设了oracle的processes数为300,但是现在发现我的一个应用模块存在连接泄露,占用了大量连接,但所有的后台进程和服务进程加起来是298个,就不能再也连接进去了,不知道是怎么回事?
是不是oracle有预留连接?
我现在想通过sqlplus连上去看看,但是sqlplus / as sysdba连接不上。
在这种情况下我是否还可以通过sqlplus连上数据库?否则的话我连到底是哪个客户端进程发生异常产生了那么多服务进程都不知道啊。
...全文
1353 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
neverland_83 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 vc555 的回复:]
引用 8 楼 neverland_83 的回复:
找oracle专家搞清楚了,oracle不提供我说的那种功能,这种情况下就只能kill了。
但实际上我认为这是oracle做的不妥的地方,因为在这种情况下我很可能很想搞清楚是哪个客户端进程申请了这么多服务进程连接,但不让登陆就查不了。非得kill掉很不爽。
而且这样数据库也不是正常关闭的。

1.只是kill掉几个session,又没叫你去kill ORACLE的后台进程,数据库怎么会DOWN掉?何来“而且这样数…
[/Quote]
我说的这些都是要写成自动脚本的,我现在是吧ps出来的oracle进程全部都干掉了,因为我觉得随便找几个服务进程kill掉再连上去shutdown,与直接kill掉关键进程也没什么区别,而最重要的是,你怎么预测你程序的异常,连接泄露时有可能极短时间内就能把连接泄露完,那就很可能kill了几个服务进程还没等再登上sqlplus时就已经有泄露干净了,这时如何处理?
另外ps只能看到客户端进程和服务端进程,并不能得知客户端进程和服务进程的对应关系,我又不是只有一个客户段进程,不等数据库如何判断哪些服务端进程是这个客户端申请的?
wenking2006 2009-04-06
  • 打赏
  • 举报
回复
又了解到了一些知识
wangsong145 2009-04-05
  • 打赏
  • 举报
回复
试试alter system kill session
Amin01 2009-04-03
  • 打赏
  • 举报
回复
ps查看进程,加个|oracle就知道哪些oracle的进程连接上来
kill点一个,登录上去再仔细查看不久清楚了
vc555 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 neverland_83 的回复:]
找oracle专家搞清楚了,oracle不提供我说的那种功能,这种情况下就只能kill了。
但实际上我认为这是oracle做的不妥的地方,因为在这种情况下我很可能很想搞清楚是哪个客户端进程申请了这么多服务进程连接,但不让登陆就查不了。非得kill掉很不爽。
而且这样数据库也不是正常关闭的。
[/Quote]
1.只是kill掉几个session,又没叫你去kill ORACLE的后台进程,数据库怎么会DOWN掉?何来“而且这样数据库也不是正常关闭的”

2.“因为在这种情况下我很可能很想搞清楚是哪个客户端进程申请了这么多服务进程连接”、
你用OS的命令看进程是可以看到哪个客户机连接的。
neverland_83 2009-04-03
  • 打赏
  • 举报
回复
找oracle专家搞清楚了,oracle不提供我说的那种功能,这种情况下就只能kill了。
但实际上我认为这是oracle做的不妥的地方,因为在这种情况下我很可能很想搞清楚是哪个客户端进程申请了这么多服务进程连接,但不让登陆就查不了。非得kill掉很不爽。
而且这样数据库也不是正常关闭的。
vc555 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 neverland_83 的回复:]
引用 3 楼 ling242a 的回复:
看是否有Inactive的连接
如有就kille掉
顺便说一下,既然有泄漏,应该把这个源头堵上
而不是去改连接数

悖论就在这里,连接全被我的客户端程序占完了,sqlplus根本登不上去,我怎么查哪个是Inactive的?
[/Quote]
你KILL几个连接就行了。
neverland_83 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ling242a 的回复:]
看是否有Inactive的连接
如有就kille掉
顺便说一下,既然有泄漏,应该把这个源头堵上
而不是去改连接数
[/Quote]
悖论就在这里,连接全被我的客户端程序占完了,sqlplus根本登不上去,我怎么查哪个是Inactive的?
neverland_83 2009-04-03
  • 打赏
  • 举报
回复
你们都没有理解我的意思,我就是要做一个监控程序,监控我的应用是否有连接泄露,如果连接泄露了,当然如果虽然泄到290了,但业务还在正常跑,我当然不想这时候就做什么极端操作,顶多是报个告警出来,如果告警没人处理,连接继续泄露达到最大了,这样就会影响我的业务运行了,监控到这种糟糕情况时我希望能有一种正常的手段将数据库shutdown掉重启一下,而不是kill掉。
虽然我没有搞过DB2不过听我一个同事说db2是有类似功能的,即不需要登陆到数据库中就可以通过某条命令关闭数据库。
oracle没有么?一定要sqlplus连上去?
phoenixYiYou 2009-04-03
  • 打赏
  • 举报
回复
同意楼上的!有泄漏就要改程序!不然,开再大的连接数可能也不行!呵呵!
白发程序猿 2009-04-03
  • 打赏
  • 举报
回复
看是否有Inactive的连接
如有就kille掉
顺便说一下,既然有泄漏,应该把这个源头堵上
而不是去改连接数
happydaisy1985 2009-04-02
  • 打赏
  • 举报
回复
在oracle的安装目录下:%oracle_home%\admin\orcl\pfile\有一个init.ora文件
lz把这个文件的processes的值再改的大一些,看看能用sqlplus登陆吗
chenbo8427 2009-04-02
  • 打赏
  • 举报
回复
kill 掉占用CPU最大的oracle 进程就可以了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧