oracle数据库快速解决实时生产库中包不能编译死锁等问题

上传人:平*** 文档编号:12459237 上传时间:2017-10-19 格式:DOC 页数:3 大小:36.50KB
返回 下载 相关 举报
oracle数据库快速解决实时生产库中包不能编译死锁等问题_第1页
第1页 / 共3页
oracle数据库快速解决实时生产库中包不能编译死锁等问题_第2页
第2页 / 共3页
oracle数据库快速解决实时生产库中包不能编译死锁等问题_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《oracle数据库快速解决实时生产库中包不能编译死锁等问题》由会员分享,可在线阅读,更多相关《oracle数据库快速解决实时生产库中包不能编译死锁等问题(3页珍藏版)》请在金锄头文库上搜索。

1、快速解决实时生产库中,包不能编译,死锁等问题1、使用 PLSQL 登陆该用户,执行如下 SQL,查看一下是否有 oracle 自己的进程.Select a.Username, a.SID, a.SERIAL# ,b.Sql_Text,c.spid From V$Session a, V$Sqlarea b,v$process cWhere a.Username Is Not NullAnd (a.Sql_Address = b.Address Or a.Prev_Sql_Addr = b.Address)and a.PADDR=c.ADDRand c.SPID in( select spid

2、from v$session s,v$process pwhere s.paddr=p.addr and s.sid in(select sid from v$session_wait )2、如果没有 ORACLE 进程则执行Select kill -9 | spidFrom V$Session a, V$Sqlarea b,v$process cWhere a.Username Is Not NullAnd (a.Sql_Address = b.Address Or a.Prev_Sql_Addr = b.Address)and a.PADDR=c.ADDRand c.SPID in( se

3、lect spid from v$session s,v$process pwhere s.paddr=p.addr and s.sid in(select sid from v$session_wait )3、先关掉系统使用的服务如 WEBSERVICE, 使用 telnet 工具或 SecureCRT 4.1 工具登陆到unix 中的 oracle 用户下,拷贝粘贴如下命令,如有双机,最好两个机器都执行一下该杀进程的命令.执行成功后则开始服务如(webservice),这样只快速解决由于包死锁带来的问题.备注:改涉及医保接口的表结构或编码医保接口相关包,最好能把 HIS 或接口 WEBSE

4、RVICE 停止后才进行修改,或晚上交易少的情况下进行变动By wat8/21/2009解决行锁select a.sql_text,b.sid,b.MACHINE,b.PROGRAM,b.serial# from v$sqlarea a,v$session b,v$locked_object c where a.address=b.sql_address and b.sid=c.SESSION_ID alter system kill session 180, 29757 ;查 SPIDselect a.spid,b.sid,b.serial#,b.username from v$proces

5、s a,v$session b where a.addr=b.paddr and b.status=KILLEDselect spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=180用户 root 登陆后,进行 kill -9 spid;一些 ORACLE 中的进程被杀掉后,状态被置为killed,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是 shutdown immediate 又怕可能进程杀不掉会一直停留在 shutdown immediate,直接

6、shutdown abort 又怕损坏数据库。 现在提供一种方法解决这种问题,那就是在 ORACLE 中杀不掉的,在 OS 一级再杀。 一些 ORACLE 中的进程被杀掉后,状态被置为killed,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。但是 shutdown immediate 又怕可能进程杀不掉会一直停留在 shutdown immediate,直接 shutdown abort 又怕损坏数据库。 现在提供一种方法解决这种问题,那就是在 ORACLE 中杀不掉的,在 OS 一级再杀。 1.下面的语句用来查询哪些对象被锁: SELECT S.USERNAME,S.OSU

7、SER,S.SID,S.SERIAL#,P.SPID FROM V$SESSION S,V$PROCESS P WHERE S.PADDR=P.ADDR AND S.USERNAME IS NOT NULL; 2.下面的语句用来杀死一个进程: alter system kill session sid,serial#; 【注】以上两步,可以通过 Oracle 的管理控制台来执行。 如果出现题目的错误,可以 select a.spid,b.sid,b.serial#,b.username from v$process a,v$session b where a.addr=b.paddr and

8、b.status=KILLED ; 3.如果利用上面的命令杀死一个进程后,进程状态被置为killed,但是锁定的资源很长时间没有被释放,那么可以在 os 一级再杀死相应的进程(线程) ,首先执行下面的语句获得进程(线程)号: select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=33 (33 就是上面的 sid) 4.在 OS 上杀死这个进程(线程): 1)在 unix 上,用 root 身份执行命令: #kill -9 12345(即第 3 步查询出的 spid) 2)在 windows(unix 也适用)用 orakill 杀死线程,orakill 是 oracle 提供的一个可执行命令,语法为: orakill sid thread 其中: sid:表示要杀死的进程属于的实例名 thread:是要杀掉的线程号,即第 3 步查询出的 spid。 例:c:orakill orcl 12345 Ps:这里要注意的是 kill OS 进程是在服务端操作,而不是你程序所在客户机。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号