`
longgangbai
  • 浏览: 7330813 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE在windows上使用orakill结束oracle会话的线程

 
阅读更多

在windows上使用orakill结束oracle会话的线程     
   由于oracle在windows平台采用了单进程多线程的实现方式,unix/linux上的server process在windows上
实际是一个thread。我们知道,在unix平台上,有时使用alter system kill的方式杀死一个用户会话后,
可能会标记为killed而不是立即释放该会话所占有的所有资源,或者由于某些原因,某些会话处于假死状态,
这时可能要在os级别强行kill对应的process。但在windows上,进程管理器中只能看到一个oracle进程,而
无法看到并且杀死具体的线程。

       这种情况下,我们当然可以借助第三方的线程管理工具来实现我们杀某个指定线程的目的,但实际上,oracle
本身也是提供了这种的工具的。这就是orakill工具。orakill的用法很简单,两个参数,第一个是oracle_sid,
第二个是线程号,也就是oracle的v$process中的spid:

C:\Documents and Settings\Administrator>orakill

Usage:  orakill sid thread

  where sid    = the Oracle instance to target
        thread = the thread id of the thread to kill

  The thread id should be retrieved from the spid column of a query such as:

        select spid, osuser, s.program from
        v$process p, v$session s where p.addr=s.paddr

C:\Documents and Settings\Administrator>


SQL> desc v$process;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ADDR                                               RAW(4)
 PID                                                NUMBER
 SPID                                               VARCHAR2(24)
 USERNAME                                           VARCHAR2(15)
 SERIAL#                                            NUMBER
 TERMINAL                                           VARCHAR2(16)
 PROGRAM                                            VARCHAR2(64)
 TRACEID                                            VARCHAR2(255)
 TRACEFILE                                          VARCHAR2(513)
 BACKGROUND                                         VARCHAR2(1)
 LATCHWAIT                                          VARCHAR2(8)
 LATCHSPIN                                          VARCHAR2(8)
 PGA_USED_MEM                                       NUMBER
 PGA_ALLOC_MEM                                      NUMBER
 PGA_FREEABLE_MEM                                   NUMBER
 PGA_MAX_MEM                                        NUMBER

SQL> col spid for a10;
SQL> col program  for a30;
SQL> select spid,program from v$process;

SPID       PROGRAM                                                             
---------- ------------------------------                                      
           PSEUDO                                                              
24880      ORACLE.EXE (PMON)                                                   
24884      ORACLE.EXE (VKTM)                                                   
24888      ORACLE.EXE (DIAG)                                                   
24892      ORACLE.EXE (DBRM)                                                   
24896      ORACLE.EXE (PSP0)                                                   
25028      ORACLE.EXE (MMAN)                                                   
23216      ORACLE.EXE (DIA0)                                                   
25036      ORACLE.EXE (DBW0)                                                   
25044      ORACLE.EXE (LGWR)                                                   
25040      ORACLE.EXE (CKPT)                                                   

SPID       PROGRAM                                                             
---------- ------------------------------                                      
25048      ORACLE.EXE (SMON)                                                   
25052      ORACLE.EXE (RECO)                                                   
25056      ORACLE.EXE (MMON)                                                   
25060      ORACLE.EXE (MMNL)                                                   
25064      ORACLE.EXE (D000)                                                   
25276      ORACLE.EXE (S000)                                                   
36532      ORACLE.EXE (SHAD)                                                   
25868      ORACLE.EXE (ARC0)                                                   
25864      ORACLE.EXE (ARC1)                                                   
25872      ORACLE.EXE (ARC2)                                                   
25984      ORACLE.EXE (ARC3)                                                   

SPID       PROGRAM                                                             
---------- ------------------------------                                      
24916      ORACLE.EXE (FBDA)                                                   
25068      ORACLE.EXE (SMCO)                                                   
25956      ORACLE.EXE (QMNC)                                                   
34960      ORACLE.EXE (W000)                                                   
26252      ORACLE.EXE (q001)                                                   
26496      ORACLE.EXE (CJQ0)                                                   
26456      ORACLE.EXE (q000)                                                   

已选择29行。

SQL> select  spid,osuser,s.program from v$process p,v$session  s
  2  where p.addr=s.paddr
  3  and p.program like '%ARC%';

SPID       OSUSER                         PROGRAM                              
---------- ------------------------------ ------------------------------       
25868      SYSTEM                         ORACLE.EXE (ARC0)                    
25864      SYSTEM                         ORACLE.EXE (ARC1)                    
25872      SYSTEM                         ORACLE.EXE (ARC2)                    
25984      SYSTEM                         ORACLE.EXE (ARC3)                    

SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\>orakill ticket 25868

Kill of thread id 25868 in instance ticket successfully signalled.

C:\>exit

SQL> spool off;

分享到:
评论

相关推荐

    Orakill的工具

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

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

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

    处理oracle中杀不掉的锁.txt

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

    oracle管理常用sql

    - `<SID>`: Oracle会话的SID号。 - `<THREAD>`: Oracle线程ID号。 - **获取SID和线程号**: ```sql SET PAGESIZE 100 SET LINESIZE 100 COLUMN Program FORMAT A20 SELECT s.sid AS "Sid", s.serial# AS ...

    oracle job停止

    - 在Windows环境下,可以通过以下命令快速杀死会话: ```cmd orakill sid spid ``` - 在UNIX环境下,可以使用以下命令: ```bash kill -9 spid ``` ##### 4. 检查JOB是否已停止 - 执行上述步骤后,检查该`...

    Oracle 查询死锁并解锁的终极处理方法

    在Unix上,这通常涉及到查找并终止与Oracle会话关联的进程,而在Windows中,`orakill`能直接根据会话的SID和线程号进行操作。 总结来说,当Oracle会话被死锁困扰时,应先通过查询找出问题会话,然后尝试使用`ALTER ...

    解析oracle对select加锁的方法以及锁的查询

    Oracle数据库在处理并发事务时,锁机制扮演着关键角色,确保数据的一致性和完整性。本文主要探讨了在Oracle中如何对SELECT语句加锁以及如何查询锁定信息。 一、Oracle中的SELECT加锁方法 Oracle提供了FOR UPDATE...

    数据库锁表问题解决方法

    - 在Windows或Unix中使用`orakill`命令杀死线程: ```bash orakill orcl 12345 ``` #### 四、注意事项 1. **谨慎使用`KILL`命令**:终止会话可能会导致正在进行的事务回滚,从而可能影响数据一致性。 2. **...

Global site tag (gtag.js) - Google Analytics