`

如何释放v$session 中status='KILLED'的进程

 
阅读更多
如何释放v$session 中status='KILLED'的进程
 

有些进程被杀掉之后一直没有被回收

session需要释放它所使用的资源,包括锁,回滚段 等资源;如果session已经运行了很长时间,kill session 可能是一个非常消耗时间的过程

察看session目前使用的回滚段块的数目信息
SELECT USED_UBLK FROM V$TRANSACTIOn a ,v$session b where a.addr=b.taddr;

你可以看看要回滚的数量
1.判断是否在回滚
select * from V$TRANSACTIOn where bitand(flag,power(2,7))>0
flag字段值可以标识事务类型
select to_char( 7811, '0000000X' ), to_char( 7683, '0000000X') from dual;

TO_CHAR(7 TO_CHAR(7
--------- ---------
00001E83 00001E03
^ ^
0 indicates "normal user transaction"
8 indicates "rollback,most likely - means no more changes and you cannot commit"

2.回滚量:UBABLK字段
3.查看回滚时间
col td format a40
col es format 999,999
col totalwork format 999,999
col units format a10
SELECT decode(target_desc,NULL,decode(target,NULL,opname, concat(opname, concat (' - ',target))),decode(target,NULL,concat(opname, concat (' : ',target_desc)),concat(opname, concat (' : ',concat(target_desc,concat (' - ',target)))))) td,sofar,totalwork,units, start_time,TO_CHAR(elapsed_seconds,'99999990.00'), decode(sofar, 0, 0, round(elapsed_seconds*(totalwork-sofar)/sofar)) 剩下的时间

FROM v$session_longops 

WHERE sid = &v_sid 

AND serial# =&v_serial#

and sofar< totalWork
D SOFAR TOTALWORK UNITS START_TIME TO_CHAR(ELAPSED_SECONDS,'99999 剩下的时间
------------------------------------ ----- --------- -------- ----------- ------------------------------ ----------
Table Scan - SINO.ACC_POENTRYD 16099 16099 Blocks 2005-4-15 1 8.00 0查看剩下的时间
4.你使用了alter session kill一个死进程,可能当时只是把session标识了killed,而v$process还存在,你可以用下面方法解决
UNIX平台
SQL> SELECT spid 
FROM v$process 
WHERE NOT EXISTS ( SELECT 1 
FROM v$session 
WHERE paddr = addr); 

% kill 
WINDOWS:
select p.spid "OS Thread", b.name "Name-User", s.osuser, 
s.program 
from v$process p, v$session s, v$bgprocess b 
where p.addr = s.paddr 
and p.addr = b.paddr 
UNION ALL 
select p.spid "OS Thread", s.username "Name-User",
s.osuser, s.program
from v$process p, v$session s 
where p.addr = s.paddr 
and s.username is not null; 使用orakill如
SQL> SELECT spid, osuser, s.program,sid
FROM v$process p, v$session s
WHERE p.addr=s.paddr;
SPID OSUSER PROGRAM SID
------------------------ -------------------- --------------- ----------
6484 lifeng.fang sqlplus.exe 11
SQL> host orakill charset 6484;

Kill of thread id 6484 in instance charset successfully signalled.
5.你可以在sqlnet.ora加dcd

分享到:
评论

相关推荐

    有效关闭Oracle死锁进程,和释放状态为killed的session

    有效关闭Oracle死锁进程,和释放状态为killed的session

    oracle中已killed session的处理

    oracle中已killed session的处理

    SESSION处于KILLED状态下如何找出对应的进程

    SESSION处于KILLED状态下如何找出对应的进程

    Oracle_Kill_Sessio.pdf

    在用Toad 使用sys as dba用户登录,kill oracle session时,发现有一些session 并杀不掉于是用命令行进行...select sid,serial#,username,status from v$session where status!='KILLED' and username is not null;

    操作系统=进程管理=实验报告

    当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 2、修改上述程序,每一个...

    oracle 不小心把表数据锁掉,sys查询被锁对象和解锁SQL语句

    一些ORACLE中的进程被杀掉后,状态被置为killed,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那是在ORACLE中杀不掉的,在OS一级再杀。  1.下面的语句用来查询...

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

    一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。 1.下面的语句用来...

    Ruby 中$开头的全局变量、内部变量、隐藏变量介绍

    代码如下:&gt;&gt; $$=&gt; 17170我们可以从当前进程杀死它自己 代码如下:&gt;&gt; `kill -9 #{$$}`[1] 17170 killed irb$? 表示最近一个子进程的状态 代码如下:&gt;&gt; `echo hello`=&gt; “hello\n”&gt;&gt; $?=&gt; #&lt;Process&gt;&gt;&gt; $?.success?=...

    (修改版)实现进程的软中断通信。要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断

    使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: ...

    操作系统进程管理实验报告

    (1)进程的软中断通信 #include &lt;stdio.h&gt; #include &lt;signal.h&gt; #include &lt;unistd.h&gt; #include int wait_flag; void stop(); main( ) { int pid1, pid2; // 定义两个进程号变量 signal(2,...

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

    ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...

    进程通信----软中断

    使用系统调用fork()创建两个子程序,再用系统调用signal()接收父进程从键盘上来的中断信号(即按Ctrl+c键);当有中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程有信号后分别输出 Child ...

    如何快速的杀掉Oracle的Session

    当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。  3、 系统忽然慢了现来,你发现是某个session在做怪...

    进程的软中断通信

    用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Ctrl+C键);捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: ...

    进程管理实验(操作系统)

    当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。(2) 进程的...

    They Killed Kenny!

    They Killed Kenny!

    ElasticSearch启动之后自己Killed解决方案.docx

    ElasticSearch启动之后自己Killed解决方案.docx

    3操作系统实验.doc

    实验一:信号机制 实验目的 1、了解什么是信号 2、熟悉LINUX系统中进程之间软中断通信的基本原理 实验内容 1、编写程序:用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键...

    普通用户不能su切换到其它用户提示killed,或者无法登录系统

    root用户无法su切换到其它用户,提示killed 普通用户无法su切换到其它用户,提示Authentication is denied 普通用户根本无法登录系统等。 除检查/etc/security/下文件外

    linux实验五 进程间通信实验

    2、熟悉LINUX系统中进程之间软中断通信的基本原理。 3、了解什么是管道 4、熟悉UNIX/LINUX支持的管道通信方式 二、实验内容 1、编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进 程...

Global site tag (gtag.js) - Google Analytics