解决方案 »
- 我用的是oacle 10g,有没有取英文首字母的函数啊!
- 求一条SQL语句。。
- 随机数字问题
- rhel 5.3 安装oracle 10.2.0 出错!
- oracle中clob字段不能用distinct?
- ORACLE中Net8配置问题
- windows2003中安装ORACLE9I
- ********如何在oracle判断一个变量是否为整形(number)?~********
- alter table map_tbl rename column recep_id to recp_id这个怎么不行啊
- 关于regexp_substr 截取
- Oracle如何增加32位的随机主键 在线等 急
- ORACLE 11G R2 RAC 设置监听密码并取消本地用户认证后 无法动态注册
from v$session
where sid = (select blocking_session
from v$session
where blocking_session is not null)2. 杀进程alter system kill session 'sid, serial#' immediate; 杀掉等待资源的session1. 查询sid和serial#select sid, serial# from v$session where blocking_session is not null;2. 杀进程alter system kill session 'sid, serial#' immediate;
--查看锁表进程
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
--------------------------------------------
------------------------------
---狙掉进程SID和serial#
alter system kill session 'xxx,xx';
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid 2.下面的语句用来杀死一个进程: alter system kill session '42,21993'; (其中24,111分别是上面查询出的sid,serial#) 可以用如下查询批量得到上面类似的语句: select l.oracle_username||CHR(9)||object_name||CHR(9)||machine,
'alter system kill session ''' ||s.sid||','||s.serial#||'''; '
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid; 3.如果利用上面的命令杀死一个进程后,进程状态被置为 "killed", 但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先获得进程(线程)号: select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=#sid; (#sid是上面的sid) 4.在操作系统中杀掉相应的进程(线程): 1)在Linux上,用root身份执行命令: kill -9 12345(12345是第3步查询出的spid) 2)在windows 用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread 其中: sid:表示要杀死的进程属于的实例名 thread:是要杀掉的线程号,即第3步查询出的spid。 例:c:>orakill orcl 12345 完全可以写一个组合查询的存储过程来自动执行上述四步操作,方便地杀光所有不自动释放资源的进程,但一般情况下不推荐这样做,毕竟在系统中用root用户kill进程本身就是带有一定风险的!