网站建设资讯

NEWS

网站建设资讯

oracle怎么杀死会话 oracle杀死会话的权限

如何快速的杀掉Oracle的Session

举个例子

专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业环翠免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

通过session id (SID) 找到系统进程号 然后kill 进程

SQL select spid from v$process where addr=(select paddr from v$session where rownum=1 and sid=(select userenv('SID') from dual));

SPID

------------------------

12135

spid 系统进程号

SQL ho kill -9 12135

kill 掉这个进程 就完了

SQL select sysdate from dual;

select sysdate from dual

*

第 1 行出现错误:

ORA-03135: 连接失去联系

进程 ID: 12135

会话 ID: 65 序列号: 19533

如何迅速杀掉数据库里inactive的会话

在Oracle数据库中,经常会产生一些inactive的会话,但是仍然连接到数据库,一般情况下,我们可以使用alter system kill session 'sid,serial#'; 来强制杀掉他,但是如果我们有大量的这种进程,要手动一个一个去杀掉,是比较麻烦的。

下面有个方法,可以迅速的杀掉这些进程。

SELECT 'ALTER SYSTEM DISCONNECT SESSION ''' || B.SID || ',' || B.SERIAL# ||

'''IMMEDIATE;'

FROM V$LOCKED_OBJECT A, V$SESSION B, DBA_OBJECTS C

WHERE B.SID = A.SESSION_ID

怎么用oracle客户端杀掉session

有PL/sql软件么,登陆数据库,用tools——sessions,进入会话界面选中你要杀掉的session选择工具栏那个想像钥匙的按钮就可以杀掉了

[SQL][oracle疑难问题ORA-00031]:标记要终止的会话 解决方法

问题场景:在操作大数据量的时候,会出现种种问题导致数据不正确导致需要重新处理数据,如果这个时候删除表数据会无法删除成功,然后手动终止会话可能会提示“标记要终止的会话”,这是因为手动终止会话后,进程的状态被设置为“killed”,但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),详细操作如下:

1,查询临时会话的session:

--查找sql执行的会话session id, 用session id 这一栏的数据进行kill掉会话

SELECT B.SID,

  B.OBJECT,

  A.SQL_ID,

  A.LOGON_TIME,

  A.SQL_EXEC_START,

  A.MODULE,

  C.SQL_TEXT,

  C.SQL_FULLTEXT,

  A.OSUSER,

  A.EVENT#,

  A.EVENT,

  A.INST_ID,

  A.ACTION,

  A.PROCESS,

  A.STATUS,

  'alter system kill session ''' || a.sid || ', ' || a.serial# ||

  ', @' || a.inst_id || ''' IMMEDIATE;' kill_session,

  A.*

FROM GV$SESSION A, GV$ACCESS B,GV$SQL C

WHERE A.SID = B.SID

AND A.INST_ID = B.INST_ID

AND A.SQL_ID = C.SQL_ID(+)

AND A.INST_ID = C.INST_ID(+)

--AND A.TYPE 'BACKGROUND'

--AND A.STATUS = 'ACTIVE'

AND B.OWNER = 'BI_DM'

--AND A.INST_ID =1

--AND A.ACTION IN ('ORA$AT_SA_SPC_SY_4630','ORA$AT_OS_OPT_SY_4629')

AND B.OBJECT = 'TMP_T_JOBNAME'

--AND A.USERNAME LIKE 'DEV%'

--AND A.MACHINE IN (/*'infor',*/'winitdb')

ORDER BY A.SQL_EXEC_START;

2,执行session id 里面是语句

alter system kill session '2761, 65372, @2' IMMEDIATE;

在kill session的时候,当提示RA-00031:标记要终止的会话 时

按如下操作:

1,select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';

2,如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号: 

select b.spid,a.osuser,b.program from v$session a,v$process b where a.paddr=b.addr  and a.sid=9065     --9065就是上面的sid

.在OS上杀死这个进程(线程)

1)、在unix上,用root身份执行命令:#kill -9 9065(即第2步查询出的spid) 

2)、在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread 

其中:

sid:表示要杀死的进程属于的实例名 。可以用select name from v$database;查询

thread:是要杀掉的线程号,即第2步查询出的spid。 

    例:c:orakill system 9065

注意:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机

如何杀掉Oracle中的会话

sqlplus环境下 alter system kill session 'sid,serial#';

如果不行的话在操作系统下操作:

windows: orakill 实例名 spid

linux: kill -9 spid


网站栏目:oracle怎么杀死会话 oracle杀死会话的权限
标题URL:http://cdweb.net/article/hehdih.html