某些时候我们遇到一个长时间运行的批处理超出了边界并影响了在线处理的性能而不得不kill它,但是如果杀掉那个进程,可能导致回滚花费的时间超过其运行完成剩余所需的时间,并且所有以使用的资源都被浪费。
有一个未文档化的工具Oradebug中有个命令可以挂起无限Oracle进程,并且挂起进程后,他将不再消耗资源除非恢复它。
如下:
oradebug setorapid &Pid
oradebug suspend
恢复
oradebug setorapid &Pid
oradebug resume
使用这些命令需要sysdba身份。
但是在以下情况下,这种方法是不合适的:
1.其他进程需要以不兼容模式锁住挂起的进程锁住的资源;
2.长时间运行的进程依赖于回滚段信息进行一致性读,这些信息可能会在其挂起期间被覆盖;
阅读(736) | 评论(0) | 转发(0) |