跳到主要内容
返回博客列表[译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句 原文地址:https://oracle-base.com/articles/18c/alter-system-cancel-sql-18chttps://oracle-base.com/articles/18c/alter-system-cancel-sql-18c 原文作者:Tim Hall Oracle Database 18C 引入了 ALTER SYSTEM CANCEL SQL 命令,用
2738+ 篇实战文章 1500+ 步骤截图 10 大核心模块
Oracle Database 18C 引入了 ALTER SYSTEM CANCEL SQL 命令,用于取消会话中的 SQL 语句,提供了杀死恶意会话的替代方法。
语法
本章目标 :掌握本章核心知识点
前置要求 :完成前序章节学习
预计时长 :60 分钟
ALTER SYSTEM CANCEL SQL 命令的基本语法如下所示:
1 ALTER SYSTEM CANCEL SQL 'SID, SERIAL[, @INST_ID][, SQL_ID]';
如果不加 INST_ID,默认代表当前实例。如果 SQL_ID 不写,则代表是在当前指定会话中运行的 SQL。参考如下:
1 -- 当前实例的会话中的当前 SQL
2 ALTER SYSTEM CANCEL SQL '738, 64419';
3
4 -- INST_ID = 1 的实例会话中的当前 SQL
5 ALTER SYSTEM CANCEL SQL '738, 64419, @1';
6
7 -- 在此实例的会话中指定的 SQL
8 ALTER SYSTEM CANCEL SQL '738, 64419, 84djy3bnatbvq';
9
10 -- 在实例的会话中指定 SQL 和 INST_ID = 1
11 ALTER SYSTEM CANCEL SQL '738, 64419, @1, 84djy3bnatbvq';
可以从视图中检索所有四条信息 GV$SESSION,如下所示。
指定要取消的会话
在后台会话中取消 SQL 语句可能具有很大的破坏性,因此在查询会话和 SQL 时要非常小心。
GV$SESSION 使用视图查询有问题的会话和 SQL,以下查询连接到 GV$PROCESS 视图以获取 SPID 列,这对于此命令并不是必需的:
1 SET LINESIZE 150
2 COLUMN spid FORMAT A10
3 COLUMN username FORMAT A30
4 COLUMN program FORMAT A45
5
6 SELECT s.inst_id,
7 s.sid,
8 s.serial#,
9 s.sql_id,
10 p.spid,
11 s.username,
12 s.program
13 FROM gv$session s
14 JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
15 WHERE s.type != 'BACKGROUND';
然后可以将相关值替换到前面部分中的命令 SID, SERIAL#, INST_ID and SQL_ID 中。
[译] ALTER SYSTEM CANCEL SQL : 在 Oracle Database 18c 的会话中取消 SQL 语句 - DBA 学习之路