求教:还是关于oracle的会话

morganle 2003-12-03 10:46:21
在9i中,连接上数据库之后,如果出现了网络问题(断网,类似把网线拔掉再插上)非正常退出时,该连接的会话却还在会话列表中,还占用会话资源。都显示为inactive,需要等很长时间才能自动清除,不知道有没有什么办法能使这些会话在指定的时间内自动清除!

顺便问:进程和会话之间到底有什么说道?哪位给我讲一讲啊,或者给我提供点学习资料!不胜感谢!
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leecooper0918 2003-12-06
  • 打赏
  • 举报
回复

会话就是一次数据库的连接,如果你是程序员的话,可以理解为
Connetion (ADO)或者statement(JAVA)

select * from v$SESSION where status='INACTIVE' and
type!='BACKGROUND' 可以查询出用户会话成状态为非激活
状态的,这些会话有可能是导致死锁的会话,也有可能只是
一般的会话,比如我在PL/SQL Developer 中新开一个
command windows,但是我一段时间闲置不用,状态也是
非激活的。

清理会话的命令是 alter system kill session 'SID,serial#'
命令执行完毕后, 这些会话会被标记成'KILLED', 由后台进程
来清理系统资源。

另外,在sqlnet.ora 中可以设置相关参数,或者通过建立profile
来管理用户对数据库连接.
chanet 2003-12-06
  • 打赏
  • 举报
回复
1. OTN 中文论坛: zhengxp@transtar.com.cn (郑先生,是坛主)
2. Oracle 开发论坛: www.oracle-dev.com
3. bbs.itebook.net
morganle 2003-12-06
  • 打赏
  • 举报
回复
我知道可以手动杀掉进程,但有没有更智能的自动方法呢
qfsb_p 2003-12-04
  • 打赏
  • 举报
回复
你可以杀掉会话对应的进程,这样系统就会自动清除这些会话。

载$session和$process视图中可以获得对应进程信息,然后用kill(unix os)或者orakill(windows os)杀掉spid对应的进程。

unix: kill spid

如果你的Oracle是在windows平台上的,有一些的不同,因为windows是以thead来代替process的,需要用到sid和spid两个值,所用的命令也由kill替换为Orakill,
格式为:orakill sid spid
caoruomou 2003-12-04
  • 打赏
  • 举报
回复
帮你up一下

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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