首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么KILL SESSION命令会断开我的连接?

为什么KILL SESSION命令会断开我的连接?
EN

Stack Overflow用户
提问于 2017-05-19 06:48:31
回答 1查看 232关注 0票数 0

使用sqlplus作为我的客户端:

代码语言:javascript
复制
SQL> select count(*) from TABLE;

  COUNT(*)
----------
     26243

SQL> alter system kill session '9997,55';
alter system kill session '9997,55'
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel

该会话标识符不是我当前会话的标识符,它是一个有问题的会话。然后,我必须退出sqlplus并重新连接到数据库。我的会话没有被终止。

查找文档是非常困难的-文档中没有指定任何关于终止尝试的断开的内容,当我在我的查询中添加“断开”这个词时,"alter system disconnect session“就会出现。

有人能帮我解释一下发生了什么吗?

绝对不会杀死我当前的会话:

代码语言:javascript
复制
SQL> select sys_context('USERENV','SID') from dual;

SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
301

SQL> alter system kill session '3501,591';
alter system kill session '3501,591'
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
EN

回答 1

Stack Overflow用户

发布于 2017-05-19 09:17:49

当您将客户端连接到数据库服务器时,它会在服务器上启动一个会话。该会话可能执行零个或多个事务,然后(通常)客户端断开与数据库服务器的连接,正常结束该会话。

有时,您会异常地断开客户端连接(例如,ctrl-c或计算机重启),数据库服务器将注意到客户端停止通信,并将回滚会话的任何当前事务,然后正常结束。

KILL会话应该很少需要,通常由DBA的会话执行,以便在DBA无法让用户结束其客户端会话时结束导致问题的客户端会话。最终用户将收到您在上面看到的错误,指出数据库会话不再可用。

看起来您正在当前连接的会话上运行KILL会话。没有必要这样做。如果您尝试终止另一个会话,则需要使用要终止的会话的SID/序列号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44058943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档