一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,
有时实在没办法,只好重启数据库。但是shutdown immediate又怕可能进程杀不掉会一直
停留在shutdown immediate,直接shutdown abort又怕损坏数据库。
现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
--1.下面的语句用来查询哪些对象被锁: SELECT S.USERNAME,S.OSUSER,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 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进程是在服务端操作,而不是你程序所在客户机。
C:\Users\Administrator>set Oracle_SID=orclyxkj
C:\Users\Administrator>orakill orclyxkj 4520 --这个4520是步骤4中查出来的
Kill of thread id 4520 in instance orclyxkj successfully signalled.
C:\Users\Administrator>
到这里,进程就杀掉了。再查询,进程应该没有了。
注意6中如果在本机客户端执行,
会报这个错:
C:\Documents and Settings\Administrator>set Oracle_SID=orclyxkj
C:\Documents and Settings\Administrator>orakill orclyxkj 4520
Could not attach to Oracle instance orclyxkj: err = 2
相关推荐
在处理Oracle数据库时,我们经常遇到错误代码ORA-00031,它表明指定的会话已经被标记为终止。这个错误通常与数据库锁定和会话管理有关。本文将详细解析这一问题的解决方案,并提供一系列SQL语句和命令来处理和解决...
Oracle数据库在操作过程中,有时会遇到ORA-00031错误,这个错误提示是“会话标记为kill(session marked for kill)”。这通常发生在使用ALTER SYSTEM KILL SESSION命令企图终止某个会话时,但由于会话正在执行无法...
#### ORA-00031: 需要删除用户 如果系统检测到必须删除某个用户才能继续执行某些操作时,将出现此错误。解决方法通常是按照提示删除指定的用户。 #### ORA-00032: 无效用户 当用户账号因某种原因(如密码过期、...
#### ORA-00031: Need to Remove Lock 需要移除锁时触发。这可能是因为应用程序逻辑错误,导致锁未能正常释放。 #### ORA-00032: Invalid Lock 使用了无效的锁时触发。这可能是因为锁已失效或从未存在过。 #### ...
* ORA-00031: 标记要删去的会话 * ORA-00032: 无效的会话移植口令 * ORA-00033: 当前的会话具有空的移植口令 * ORA-00034: 无法在当前 PL/SQL 会话中 二、资源错误 * ORA-00050: 获取入队时操作系统出错 * ORA-...
#### ORA-00031: 标记要删去的会话 当会话被标记为待删除状态时触发。 #### ORA-00032: 无效的会话移植口令 当提供的会话移植口令无效时触发。 #### ORA-00033: 当前的会话具有空的移植口令 当当前会话的移植口令...
ORA-00031:标记要删去的会话 ORA-00032:无效的会话移植口令 ORA-00033:当前的会话具有空的移植口令 ORA-00034:无法在当前 PL/SQL 会话中 进程管理错误 ORA-00018:超出最大会话数 ORA-00019:超出最大会话许可...
ORA-00031: 标记要删去的会话 ORA-00032: 无效的会话移植口令 ORA-00033: 当前的会话具有空的移植口令 ORA-00034: 无法在当前 PL/SQL 会话中 ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数 ORA-00036: 超过...
5. ORA-00030, ORA-00031: 用户会话ID不存在或标记要删除的会话 这些错误可能是因为会话已被删除或无效。解决方法是重新连接或检查会话标识是否正确。 6. ORA-00032, ORA-00033, ORA-00034: 会话认证问题 错误...
ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...
当会话被标记为删除,但仍在运行关键任务时,会触发ORA-00031错误。需要等待任务完成或采取措施安全地中止会话。 ### ORA-00032: 无效的会话移植口令 在尝试移植会话时使用了无效的口令,会触发ORA-00032错误。...
16. ORA-00031: 标记要删除的会话错误,可能是因为会话状态异常。 17. ORA-00032: 无效的会话移植口令,口令验证失败。 18. ORA-00033: 当前会话具有空的移植口令,这意味着迁移过程中口令信息缺失。 19. ORA-...
16. ORA-00031: 请求标记会话删除,但必须由特定权限执行。 17. ORA-00032: 提供的会话移植口令无效,可能与身份验证有关。 18. ORA-00033: 当前会话的移植口令为空,需要设置或更新口令。 19. ORA-00034: 无法在...
16. ORA-00031: 标记要删除的会话,这是一个操作过程中的错误,可能与并发操作有关。 17. ORA-00032: 无效的会话移植口令,意味着登录密码错误或已更改。 18. ORA-00033: 当前会话具有空的移植口令,表示口令未...
16. ORA-00031: 标记要终止的会话 会话被标记为需要终止,但可能仍在执行操作,需要等待其完成或强制结束。 17. ORA-00032: 无效的会话移植口令 用于迁移会话的口令无效或不正确。 18. ORA-00033: 当前的会话...
15. ORA-00031: 标记要删去的会话 会话被标记为删除,但实际操作未完成。 16. ORA-00032: 无效的会话移植口令 移植会话时提供的口令无效。 17. ORA-00033: 当前的会话具有空的移植口令 会话没有设置移植口令,迁移...
16. **ORA-00031: 标记要删去的会话:** 标记为删除的会话操作不正确。 17. **ORA-00032: 无效的会话移植口令:** 迁移会话时,提供的口令无效或不匹配。 18. **ORA-00033: 当前的会话具有空的移植口令:** 会话没有...