如何终止正在运行的 SELECT 语句

2024-05-11

如何通过终止会话来停止正在运行的 SELECT 语句?

该命令不断根据 SELECT 语句向我提供输出,我想在其间停止它。


As you keep getting pages of results I'm assuming you started the session in SQL*Plus. If so, the easy thing to do is to bash ctrl + break many, many times until it stops.

下面我将按照凶猛/邪恶的顺序详细介绍更复杂和更通用的方法。第一个可能适合您,但如果不适合您,您可以继续沿着列表向下移动。

其中大多数都是不推荐的,并且可能会产生意想不到的后果。

1. 神谕级- 杀死数据库中的进程

As per 欧比旺·克诺比的回答 https://stackoverflow.com/a/9545671/458741改变会话 http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2014.htm#sthref3285文档

alter system kill session 'sid,serial#';

为了找到sid、会话 ID 和serial#,序列号,运行以下查询 - 总结自甲骨文基地 http://www.oracle-base.com/articles/misc/KillingOracleSessions.php- 并找到您的会话:

select s.sid, s.serial#, p.spid, s.username, s.schemaname
     , s.program, s.terminal, s.osuser
  from v$session s
  join v$process p
    on s.paddr = p.addr
 where s.type != 'BACKGROUND'

如果您正在运行RAC http://www.sysdba.de/oracle-dokumentation/11.1/rac.111/b28254/toc.htm那么你需要稍微改变一下以考虑到多个实例,inst_id是识别它们的东西:

select s.inst_id, s.sid, s.serial#, p.spid, s.username
     , s.schemaname, s.program, s.terminal, s.osuser
  from Gv$session s
  join Gv$process p
    on s.paddr = p.addr
   and s.inst_id = p.inst_id
 where s.type != 'BACKGROUND'

如果您没有运行 RAC,此查询也可以工作。

如果您使用 PL/SQL Developer 之类的工具,那么会话窗口也将帮助您找到它。

对于稍强的“kill”,您可以指定 IMMEDIATE 关键字,它指示数据库不等待事务完成:

alter system kill session 'sid,serial#' immediate;

2. OS level- 发出一个SIGTERM http://en.wikipedia.org/wiki/SIGTERM

kill pid

这假设您使用的是 Linux 或其他 *nix 变体。 ASIGTERM是操作系统向特定进程发出的终止信号,要求其停止运行。它试图让进程正常终止。

如果出现此错误,可能会导致您终止重要的操作系统进程,因此在输入时要小心。

您可以找到pid,进程 ID,通过运行以下查询,它还会告诉您有用的信息,例如运行进程的终端以及运行它的用户名,以便您可以确保选择正确的信息。

select p.*
  from v$process p
  left outer join v$session s
    on p.addr = s.paddr
 where s.sid = ?
   and s.serial# = ?

再次强调,如果您正在运行 RAC,则需要稍微更改为:

select p.*
  from Gv$process p
  left outer join Gv$session s
    on p.addr = s.paddr
 where s.sid = ?
   and s.serial# = ?

改变where条款至where s.status = 'KILLED'将帮助您找到已杀死但仍在“运行”的进程。

3. OS- 发出一个SIGKILL http://en.wikipedia.org/wiki/SIGKILL

kill -9 pid

使用相同的pid你在 2 中捡到了一个SIGKILL是操作系统向特定进程发出的导致该进程立即终止的信号。再次打字时要小心。

这应该很少是必要的。如果你在做DML http://en.wikipedia.org/wiki/Data_Manipulation_Language or DDL http://en.wikipedia.org/wiki/Data_Definition_Language它将停止正在处理的任何回滚并且may使得在发生故障时很难将数据库恢复到一致状态。

所有剩余的选项将终止所有会话并导致您的数据库(在 6 和 7 服务器的情况下)变得不可用。仅在绝对必要时才应使用它们......

4. Oracle - Shutdown http://dba-oracle.com/t_oracle_shutdown_immediate_abort.htm数据库

shutdown immediate

这实际上比SIGKILL,尽管显然它作用于数据库中的所有进程而不是您的特定进程。它是always对你的数据库有礼貌是件好事。

关闭数据库只能在获得 DBA 同意的情况下进行(如果您有 DBA 的话)。很高兴告诉那些使用数据库的人。

它关闭数据库,终止所有会话并执行rollback http://ss64.com/ora/syntax-redo.html所有未提交的交易。如果您有大量未提交的事务需要回滚,则可能需要一段时间。

5. Oracle- 关闭数据库(不太好的方法)

shutdown abort

这大约与SIGKILL,尽管再次在数据库中的所有进程上。这是向数据库发出的一个信号,要求数据库立即停止一切并死亡——严重崩溃。它终止所有会话并且不回滚;因此,这可能意味着数据库需要更长的时间来startup http://psoug.org/reference/start_stop.html再次。尽管有煽动性的语言shutdown abort并不是纯粹的邪恶,通常可以安全使用。

和以前一样,首先通知相关人员。

6. OS- 重新启动服务器

reboot

显然,这不仅会停止数据库,还会停止服务器,因此请谨慎使用,并征得系统管理员以及 DBA、开发人员、客户和用户的同意。

7. OS- 最后一个阶段

我已经重新启动不起作用...一旦你到达这个阶段,你最好希望你正在使用虚拟机。我们最终删除了它......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何终止正在运行的 SELECT 语句 的相关文章

  • 无法使用 RODBC 附加到具有自动编号列的表

    我正在尝试使用 RODBC 将新行插入到 Microsoft Access 数据库中的表中 问题是主键列是一个自动编号 它似乎不允许我省略此列 我正在使用带有append TRUE 的sqlSave 函数和带有单行的数据框 我已经尝试过以下
  • 在 jdbc 程序中使用时,通过 SQL 客户端插入表中的记录未显示

    我使用 SQL 客户端和 JDBC 程序将几行插入到我的表 EMP 中 使用 SQL 客户端插入的记录不会显示在 Java 的输出控制台中 我正在使用 Java 8 和 oracle 11g 数据库来插入和读取数据库 除了通过 SQL 客户
  • TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

    如果某些列返回 FALSE 如何显示不同的值 例如 COLUMN BASIC 返回 FALSE 但我需要向用户显示 YES 或 NO 情况为 FALSE 返回 NO 如果是 varchar 或 bit 则处理 NULL case when
  • MySQL SELECT 输出同一行中每个 id 的下一个日期

    我查询的表结构如下 ID Date Before value After value 1 2014 04 25 Win Loss 1 2014 04 30 Loss Win 1 2014 08 18 Win Loss 1 2014 08 2
  • SQL统计高于和低于平均分的学生人数

    我在下面有一个示例表 我试图获取高于平均分数的学生人数和低于平均分数的学生人数 name subject classroom classarm session first term score first term grade std1 m
  • 如何从 TOAD for Oracle 执行函数并将结果绑定到数据网格

    我有一个函数 它将 pl sql 对象的 VARRAY 作为其参数之一 如何执行此存储过程并将其返回的结果集绑定到 TOAD for Oracle 中的数据网格 经过一番搜索后 我找到了自己问题的答案 假设您的 varray 类型称为 va
  • Postgres 简单的“数据透视表”

    如果我有一个这样的数据表 name type count test blue 6 test2 red 3 test red 4 我怎样才能查询它以获得一个表 name num red num blue test 4 6 test2 3 0
  • SQL Server 2008 R2 的 Try_Convert

    我正在使用 SQL Server 2008 R2 并且有一个VARCHAR我想要转换为的列DECIMAL 28 10 using CONVERT 但其中许多行的格式错误 因此无法将它们解析为数字 在这种情况下 我只想通过将结果设置为 0 或
  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • Oracle存储过程使用数组作为表插入的参数

    我一直在寻找一个明显的例子 但没有运气 抱歉 如果已经回答了 我正在尝试做一些非常简单的事情 一个存储过程 它将获取输入并将它们插入到表中 我希望它获取多行数组并一次全部插入 我认为这很简单 但我还没有找到一个可以展示我的例子 在很多例子中
  • PostgreSQL Age() 函数:在不同月份登陆时出现不同/意外的结果

    今天 我在 PostgreSQL 9 6 中运行此查询时遇到了无法解释的结果 SELECT age 2018 06 30 2018 05 19 AS one age 2018 07 01 2018 05 20 AS two 两列的预期结果
  • 为什么此 SQL 更新失败(“列名无效”)?

    我有一个 SQL Server CE 表 如下所示 我正在尝试像这样更新其唯一记录 update workTables set fileType INV 但我得到 Why UPDATE 请查看相关问题here https stackover
  • 表名搜索

    我使用以下命令在特定数据库的存储过程中搜索字符串 USE DBname SELECT Name FROM sys procedures WHERE OBJECT DEFINITION OBJECT ID LIKE xxx 修改上面的内容是否
  • Oracle 9i:同义词表不存在?

    我创建了一个包 其中包含一个存储过程 我计划从单独的应用程序调用该存储过程 存储过程将返回架构中所有视图和表的排序列表 为此 它对 DBA TABLES 和 DBA VIEWS 同义词执行简单的选择 如下所示 CREATE OR REPLA
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • 获取家庭成员

    假设以下家庭 其构建架构是 create table PersonConn child int parent int insert into PersonConn values 1 2 insert into PersonConn valu
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA

随机推荐

  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • C#“var”关键字在 VB.NET 中的等价物是什么?

    例如 我如何获得 VB NET静态类型局部变量是static赋值右侧的表达式的类型 像这样 Dim http msdn microsoft com en us library 7ee5a7s1 aspx我的变量 3 你还需要 选项推断 ht
  • 滑动时向 PageView 添加新页面

    我目前正在制作一个日历应用程序 我想向右或向左滑动以转到下个月或上个月 我使用 PageView 时首先设置了一个包含 3 个项目的数组 第一个页面是第二个项目 我想向右滑动并在末尾添加一个页面 我想向左滑动并在开头添加一个页面 目前 如果
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id
  • Golang 优雅地关闭 HTTP 服务器并进行错误处理

    我正在让我的 HTTP 服务器正常关闭 我从帖子中获取了提示here https stackoverflow com questions 39320025 how to stop http listenandserve 并且到目前为止已经像
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • jQuery 插件 (DataTables) 仅在页面刷新时正确加载

    我在使用数据表时遇到问题 当我从不同页面上的链接转到带有表格的页面时 它只会加载表格的 HTML 文本 版本 没有任何 CSS 格式 也没有 JavaScript 排序 搜索等 但是 当我刷新页面时 它将完美加载 在寻找这个问题的答案后 我
  • 将 PDF 转换为 JPG 时质量低

    我正在尝试使用 Imagemagic RMAgick 将 PDF 文档转换为图像 原始 PDF 也是从图像创建的 不是原生矢量 PDF image Magick Image from blob original pdf self forma
  • 检测注册表虚拟化

    我有一组 C v2 应用程序 并且在 Win7 以及较小程度上的 Vista 中的注册表虚拟化方面遇到了困难 我有一个共享注册表配置区域 我的应用程序需要在 HKLM Software Company 中访问该区域 在 Vista 之前 所
  • Android:我无法让 ViewPager WRAP_CONTENT

    我设置了一个简单的 ViewPager 每个页面上都有一个高度为 200dp 的 ImageView 这是我的寻呼机 pager new ViewPager this pager setLayoutParams new LayoutPara
  • Iphone safari 无法在键盘打开时调整视口大小

    当键盘弹出时 Mobile safari 不会更新 window innerHeight 至少在9 3 5中 并且有几个答案 例如this https stackoverflow com a 17604856 2423187一 有评论说在
  • 使用Sed查找并替换json字段

    我有一组 json 文件 其中在最后一个键值对之后有需要替换的逗号 RepetitionTime 0 72 TaskName WM Manufacturer Siemens ManufacturerModelName Skyra Magne
  • Netbeans 8 和 xdebug 非常非常慢

    我读过有关此问题的其他帖子 但我无法在本地 Web 服务器 Windows 7 上的 apache 2 4 9 php 5 5 12 上使用 xdebug 2 2 5 和 netbeans 8 0 1 获得令人满意的性能 有些页面加载时间超
  • XSLT:如何防止 XSLT 代码在输出 xml 中生成冗余空格

    使用我的 XSL 代码 每当我删除一个元素 它都会在输出 xml 中引入一个空白行空间 这会妨碍树形结构外观XML的 你能建议我 如何摆脱它 这是示例代码示例 XML 示例
  • 获取签出修订版的 git 标签?

    我正在做 git tag current tag example to test task git checkout tag example to test task HEAD is now at 75fdde3 commit commen
  • cudaMemcpy() 与 cudaMemcpyFromSymbol()

    我试图找出原因cudaMemcpyFromSymbol 存在 似乎 symbol func 可以做的所有事情 nonSymbol cmd 也可以做 symbol func 似乎可以轻松移动数组或索引的一部分 但这也可以使用 nonSymbo
  • Alembic 无法识别 False 默认值

    在维护 SQLAlchemy 数据模型并利用 alembic 进行版本控制时 我所做的以下代码更改导致了空修订 some column Column Boolean nullable False default False 以前是 some
  • 多视图几何

    我从相距一定距离的两台相同品牌的相机捕获了两张图像 捕获了相同的场景 我想计算两个相机之间的现实世界旋转和平移 为了实现这一点 我首先提取了两张图像的 SIFT 特征并进行匹配 我现在有基本矩阵也单应性矩阵 然而无法进一步进行 有很多混乱
  • matplotlib 后端对渲染格式有什么限制?

    我对 matplotlib 使用的后端在确定可以呈现哪些格式方面所扮演的角色感到困惑 例如 文件说 http matplotlib org faq usage faq html what is a backend agg 后端生成 PNG
  • 如何终止正在运行的 SELECT 语句

    如何通过终止会话来停止正在运行的 SELECT 语句 该命令不断根据 SELECT 语句向我提供输出 我想在其间停止它 As you keep getting pages of results I m assuming you starte