注册
达梦数据库如果kill会话
技术分享/ 文章详情 /

达梦数据库如果kill会话

Solreal 2025/09/30 22 0 0

达梦数据库kill会话

在达梦数据库(DM Database)中,可以使用 SP_CLOSE_SESSION 存储过程来终止会话。这个存储过程需要提供会话 ID (SESS_ID) 作为参数,用于指定哪个会话需要被终止。

下面是使用 SP_CLOSE_SESSION 存储过程的详细步骤:

一、查看会话信息

连接到达梦数据库。
执行查询来查看当前的会话信息。达梦数据库提供的系统视图 V$SESSION 可以帮助您获取会话的相关信息。

select SESS_ID,STATE,USER_NAME from v$sessions;

该查询会返回所有当前会话的信息,包括会话 ID (SESS_ID)、用户、状态、数据库名称等信息。您需要记住想要终止的会话的 SESS_ID。

二、终止会话
使用 SP_CLOSE_SESSION 存储过程来终止指定会话。语法如下:

SP_CLOSE_SESSION(<SESS_ID>);

其中 <session_id> 需要替换为您要终止的会话的 SESS_ID。

示例
查看当前会话:

SQL> select SESS_ID,STATE,USER_NAME from v$sessions; 行号 SESS_ID STATE USER_NAME ---------- -------------------- ------ --------- 1 140712591173448 IDLE SYSDBA 2 140712523931528 ACTIVE SYSDBA 已用时间: 0.236(毫秒). 执行号:1301.

其中 SESS_ID(会话 ID)为 140712523931528。

终止会话:

SP_CLOSE_SESSION(140712523931528);

将终止会话 ID 为 140712523931528 的会话。

输出示例:

–此时有两个会话。本次操作kill 139773889373592

SQL> select SESS_ID,STATE,USER_NAME,CREATE_TIME from v$sessions; 行号 SESS_ID STATE USER_NAME CREATE_TIME ---------- -------------------- ------ --------- -------------------------- 1 139773872320856 ACTIVE SYSDBA 2025-05-28 06:20:49.000000 2 139773889373592 IDLE TEST 2025-05-28 06:28:49.000000 已用时间: 0.593(毫秒). 执行号:612. SQL> SP_CLOSE_SESSION(139773889373592); DMSQL 过程已成功完成 已用时间: 0.388(毫秒). 执行号:613.

–再次查询,139773889373592 已经被kill了

SQL> select SESS_ID,STATE,USER_NAME,CREATE_TIME from v$sessions; 行号 SESS_ID STATE USER_NAME CREATE_TIME ---------- -------------------- ------ --------- -------------------------- 1 139773872320856 ACTIVE SYSDBA 2025-05-28 06:20:49.000000 已用时间: 0.231(毫秒). 执行号:614.

–如果此时test的窗未断开的话,还是可以执行sql的,dm会新建一个会话。
–窗口1 继续执行查询。可以查询出结果。

SQL> select * from test; 服务器[LOCALHOST:5236]:处于普通打开状态 已连接 行号 C1 C2 C3 ---------- ----------- ----------- ---------- 1 1 1 2015-11-06 2 2 2 2015-11-05 3 3 3 2015-11-04 已用时间: 0.660(毫秒). 执行号:1400.

–窗口2查看会话,发现dm新建了一个会话。create_time已经变了。

SQL> select SESS_ID,STATE,USER_NAME,CREATE_TIME from v$sessions; 行号 SESS_ID STATE USER_NAME CREATE_TIME ---------- -------------------- ------ --------- -------------------------- 1 139773872320856 ACTIVE SYSDBA 2025-05-28 06:20:49.000000 2 138850040 IDLE TEST 2025-05-28 06:31:12.000000 已用时间: 0.268(毫秒). 执行号:615.

注意事项
权限:终止会话需要适当的权限。通常,只有数据库管理员或具有足够权限的用户才能执行此操作。

小心操作:在终止会话之前,应确保不会对系统中的事务造成不利影响。终止会话可能会导致未提交的事务回滚,因此会影响数据的一致性。

日志记录:对终止会话等管理操作应进行适当的日志记录,以便日后审计和问题排查。

并发性影响:请注意终止会话可能会影响系统的并发性和性能,尤其是在高负载环境下。

总结
在达梦数据库中,可以使用 SP_CLOSE_SESSION 存储过程来终止会话。首先,需要使用 V$SESSIONS 视图查看当前会话信息并确定要终止的会话 ID (SESS_ID)。然后,通过调用 SP_CLOSE_SESSION 并传入SESS_ID 来终止特定会话。在执行终止操作时需谨慎,确保不会对系统和数据完整性产生不良影响,并且要确保只有有权限的用户执行此类操作。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服