`
nakupanda
  • 浏览: 414636 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用OraKill结束失控的Oracle进程

 
阅读更多
用OraKill结束失控的Oracle进程

一个用户进程偶尔会挂起或占用过多资源而拒绝其它会话。如果 DBA 依然能够访问数据库,她通常可以发出以下查询:

select s.username, s.osuser, s.sid, s.serial#, p.spid

from v$session s,v$process p

where s.paddr = p.addr

and s.username is not null;

这个查询将返回数据库用户名、操作系统用户名、会话 ID,序列号和系统进程 ID(SPID)。然后,DBA 用户就可以发出以下命令(前面的查询返回的使用 SID 和SERIAL# 信息):

ALTER SYSTEM KILL SESSION 'sid,serial#';

ALTER SYSTEM KILL SESSION '9,203';

使用这条语句有两个问题。第一,分配给这个进程的任何锁或资源在会话完全超时之前不会被释放。第二,查询和 kill 命令需要能够访问数据库。如果一个进行失去控制,那么数据库访问可能会出现问题。

在一个 UNIX 数据库中,下一步是 ps 命令输出的 UNIX 提示中定位进程(同样是查找 OSUSER 和 SPID 等 ID)然后使用 kill -9 spid 结束失控的后台进程。然而,在 Windows 中,只有一个进程 ORACLE.EXE,而且用户连接是在 Windows 线程中处理的,而不在进程中处理的。如果使用 Windows 任务管理器结束 Oracle 线程,就有可能影响所有用户和后台线程,并导致数据库崩溃。

出于这些原因,Oracle 在Oracle Home/bin 目录下提供了一个 orakill.exe 命令,这个命令的参数与ALTER SYSTEM KILL SESSION 相同,但是不要求数据库连接。要定位一个特定的线程,需要寻找一个能够显示属于一个进程的所有线程的程序。Windows 任务管理器只能显示线程数和进程。你需要从微软的资源工具包中寻找一个用于 Windows 2000 和 NT 的工具程序,比如免费的QuickSlice,或者Qslice.exe(该工具是基于 Windows 的),或者PStat(Pstat.exe 是一个命令行工具)。简单地在 orakill 命令后输入线程 ID(以十进制表示)和 SID 即可:

orakill

orakill ORCL 2760

"Kill of thread id 2760 in instance ORCL successfully signalled[sic]."

应该只有在不能访问数据库来执行ALTER SYSTEM KILL SESSION 的情况才使用orakill。如果意外结束了一个必要的后台进程,比如 PMON,那么很可能会导致数据库崩溃。新手永远不要这样做。
分享到:
评论

相关推荐

    如何解决Oracle杀死死锁进程

    解决 Oracle 杀死死锁进程 Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。...

    ORACLE进程无法KILL处理方案.docx

    在这个解决方案中,我们将使用 ORACLE 提供的视图和系统表来查找锁定的对象,并杀死对应的进程以释放锁定的资源。下面是详细的处理步骤: 1. 查看哪些对象被锁 首先,我们需要查看哪些对象被锁定。我们可以使用...

    Orakill的工具

    Orakill是一个专门为Oracle数据库设计的工具,用于在Windows操作系统环境下强制结束特定的用户进程或线程,而不必关闭整个Oracle实例。这个工具对于解决由于某个用户进程长时间占用资源而导致Oracle系统性能下降的...

    Windows环境中Kill掉Oracle线程

    Orakill 的使用方法如下:在 Dos 提示符下,输入“orakill sid thread”,其中 sid 是 Oracle 的 Sid 号,thread 是 Oracle 的线程 id 号。在 Sql*plus 工具里面可以查询到 Oracle 的线程号。 例如,可以使用以下 ...

    oracle 死锁时候 ,杀进程方法

    - **在Windows环境中**,可以使用Oracle提供的`orakill`工具来终止进程: ```bash orakill <实例名> ``` 其中`<实例名>`是指Oracle数据库实例的名称,而`<SPID>`则是需要终止的进程ID。 #### 4. 总结 本文...

    如何快速的杀掉Oracle的Session

    3. 使用`kill`命令(Unix)或`orakill`命令(Windows)结束进程。 4. 检查`v$session`视图确认Session是否已被移除。 对于批量结束所有Oracle用户的进程,Windows环境可以执行SQL查询生成批处理文件执行,而在Unix...

    oracle锁表后,如何解锁

    2. 操作系统级别 kill:在 Windows 平台中,可以使用 `orakill ORACLE_SID ospid` 命令;在 Linux/Unix 平台中,可以使用 `orakill ORACLE_SID ospid` 或 `kill -9 ospid` 命令。 其中,SID 和 SERIAL# 是锁定进程...

    ORACLE如何停止一个JOB

    - **操作系统级别的KILL**:在某些情况下,如果数据库级别的KILL命令响应较慢,可以考虑在操作系统层面使用`orakill`(Windows)或`kill -9`(UNIX/Linux)直接终止进程。 - **调整Job Queue Processes**:为了...

    Oracle服务器命令行工具汇总

    9. **orakill.exe**:Oracle线程删除工具,用于终止特定的Oracle线程或进程。这对于处理挂起的数据库操作非常有用。 10. **orapwd.exe**:Oracle密码文件创建工具,用于创建包含密码信息的文件,这对于管理数据库的...

    快速杀死oracle的session

    - 在Windows环境下,可以直接使用Oracle提供的`orakill`工具来杀死目标Session。 ```cmd orakill 目标SID 目标SPID ``` - 或者创建一个批处理文件`kill.bat`,自动执行上述操作。 ```batch @echo off set ...

    oracle锁表及解锁

    要检查Oracle数据库中的锁状态,可以使用以下查询语句: ```sql SELECT /*+RULE*/ s.username, DECODE(l.type, 'TM', 'TABLELOCK', 'TX', 'ROWLOCK', NULL) LOCK_LEVEL, o.owner, o.object_name, o.object_type, ...

    oracle job停止

    - 需要使用Oracle的`SYS`用户登录数据库以访问`dba_jobs_running`, `v$process`, 和 `v$session`等视图。 - 当遇到某个会话持续处于活跃状态导致CPU使用率高的情况时,直接`KILL SESSION`可能无法解决问题。此时...

    处理oracle中杀不掉的锁.txt

    - Oracle提供了一个名为`orakill`的工具来帮助在Windows系统中杀死特定的线程。使用方法如下: ```bash orakill <sid> ``` - `<sid>`代表要杀死的进程所属的实例名。 - `<thread>`是要杀掉的线程号,即第三步...

    查询oracle锁

    在Oracle数据库管理系统中,"查询Oracle锁"是一项关键任务,用于诊断和解决并发操作中的阻塞问题。当多个事务尝试同时访问同一资源时,可能会发生锁冲突,导致某些事务等待其他事务完成。了解如何查询并分析这些锁...

    oracle解决死锁![参考].pdf

    如果需要,还可以在操作系统层面使用`KILL`命令(如`KILL -9 SPID`或`ORAKILL SID SPID`)终止进程。 然而,简单地杀死进程并不总是最佳解决方案,因为这可能导致未提交的数据丢失或者需要进行恢复操作。因此,理解...

    如何安全快速的批量删除Oracle数据库外部会话session

    在Linux中,可以使用`kill -9 SPID`命令,而在Windows中,可以使用`orakill ORACLE_SID spid`。首先,你需要查询`gv$session`和`gv$process`视图获取对应进程的SPID,确保不会误杀,然后执行相应的操作系统命令。 ...

    32位 oracle_product_instantclient_11_2_BIN.rar

    32位oracle11.2.0.1 BIN文件夹,数据库管理员版,包含sqlplus,imp,exp,impdp,expdp等完整工具。exe列表:adrci、agtctl、amdu、asmtool、asmtoolg、CreatDep、csscan、dbv、dg4odbc、dg4pwd、dgmgrl、diskmon、...

    怎样查找锁与锁等待及杀特定会话

    在Windows平台上,可以使用Oracle提供的工具`orakill`来杀死特定的线程(实际上是Oracle进程)。而在Linux/Unix系统中,可以直接使用`kill`命令来终止数据库进程对应的OS进程。 #### 四、总结 在Oracle数据库中,...

    oracle表被锁定的完美解决方法

    4. 在操作系统级别使用`kill`或`orakill`命令结束进程。 最后,记住定期监控数据库的锁定情况,并尽可能避免长时间的锁定,以确保数据库的高效运行。如果你在解决过程中遇到任何问题,欢迎提问,我们将尽力提供帮助...

Global site tag (gtag.js) - Google Analytics