前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句

[译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句

作者头像
Lucifer三思而后行
发布2022-04-13 17:42:20
4.1K0
发布2022-04-13 17:42:20
举报

原文地址:https://oracle-base.com/articles/18c/alter-system-cancel-sql-18c 原文作者:Tim Hall

Oracle Database 18C 引入了 ALTER SYSTEM CANCEL SQL 命令,用于取消会话中的 SQL 语句,提供了杀死恶意会话的替代方法。

目录

语法

ALTER SYSTEM CANCEL SQL 命令的基本语法如下所示:

代码语言:javascript
复制
ALTER SYSTEM CANCEL SQL 'SID, SERIAL[, @INST_ID][, SQL_ID]';

如果不加 INST_ID,默认代表当前实例。如果 SQL_ID 不写,则代表是在当前指定会话中运行的 SQL。参考如下:

代码语言:javascript
复制
-- 当前实例的会话中的当前 SQL
ALTER SYSTEM CANCEL SQL '738, 64419';

-- INST_ID = 1 的实例会话中的当前 SQL
ALTER SYSTEM CANCEL SQL '738, 64419, @1';

-- 在此实例的会话中指定的 SQL
ALTER SYSTEM CANCEL SQL '738, 64419, 84djy3bnatbvq';

-- 在实例的会话中指定 SQL 和 INST_ID = 1
ALTER SYSTEM CANCEL SQL '738, 64419, @1, 84djy3bnatbvq';

可以从视图中检索所有四条信息 GV$SESSION,如下所示。

指定要取消的会话

在后台会话中取消 SQL 语句可能具有很大的破坏性,因此在查询会话和 SQL 时要非常小心。

GVSESSION 使用视图查询有问题的会话和 SQL,以下查询连接到 GVPROCESS 视图以获取 SPID 列,这对于此命令并不是必需的:

代码语言:javascript
复制
SET LINESIZE 150
COLUMN spid FORMAT A10
COLUMN username FORMAT A30
COLUMN program FORMAT A45

SELECT s.inst_id,
       s.sid,
       s.serial#,
       s.sql_id,
       p.spid,
       s.username,
       s.program
FROM   gv$session s
       JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE  s.type != 'BACKGROUND';

然后可以将相关值替换到前面部分中的命令 SID, SERIAL#, INST_ID and SQL_ID 中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-01-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 语法
  • 指定要取消的会话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档