用oradebug挂起进程

<p><span style="font-size: x-small;">oradebug可以帮助我们做很多事情,如dump内存信息、设置事件、挂起进程等。本文主要介绍如何使用oradebug挂起进程。</span>
</p>

<p><span style="font-size: x-small;">为什么要挂起进程呢?比如因为开发人员对数据库执行一个很大的操作,严重影响了数据库的正常运行,此时你有两个选择:<br>
1、删掉进程<br>
2、暂停进程</span>
</p>
<p><span style="font-size: x-small;">实际上,我们往往不能十分确定把进程直接kill掉会造成什么后果,所以暂停进程的执行就是一个比较折中的选择。</span>
</p>
<p><span style="font-size: x-small;">要暂停进程步骤很简单:首先找到进程,然后暂停就可以了。</span>
</p>
<p><span style="font-size: x-small;">使用oradebug暂停进程时,可以使用pid,也可以使用spid。要找出这些信息有很多方式了,比如可以在操作系统中 ps -ef、可以通过v$session、v$process、v$bgprocess等视图通过关联得到。</span>
</p>
<p><span style="font-size: x-small;">下面通过一个例子来说明如何oradebug干预进程的执行状态:</span>
</p>
<p><span style="font-size: x-small;">1、找出进程号<br>
本例我们要挂起以用户suk登录的会话:<br>
以sys用户登录查询:</span>
</p>
<p><span style="font-size: x-small;">SQL> select pid,spid from v$process where addr in (select paddr from v$session where username='SUK');</span>
</p>
<p><span style="font-size: x-small;"> PID SPID<br>
---------- ------------<br>
10 4107</span>
</p>
<p><span style="font-size: x-small;">2、设置要操作的进程号<br>
有两种方法:<br>
1)用spid设置<br>
SQL> oradebug setospid 4107<br>
Oracle pid: 10, Unix process pid: 4107, image: </span>
<a href="mailto:oracle@suk"><span style="font-size: x-small;">oracle@suk</span>
</a>
<span style="font-size: x-small;"> (TNS V1-V3)<br>
2)用pid设置<br>
SQL> oradebug setorapid 10<br>
Unix process pid: 4107, image: </span>
<a href="mailto:oracle@suk"><span style="font-size: x-small;">oracle@suk</span>
</a>
<span style="font-size: x-small;"> (TNS V1-V3)</span>
</p>
<p><span style="font-size: x-small;">3、暂停进程执行<br>
SQL> oradebug suspend<br>
Statement processed.</span>
</p>
<p><span style="font-size: x-small;">此时,进程号为4107的进程将会处于挂起状态。我们稍后可以重启它。</span>
</p>
<p><span style="font-size: x-small;">4、重启进程<br>
重启进程也要先设置进程号:<br>
SQL> oradebug setospid 4107<br>
Oracle pid: 10, Unix process pid: 4107, image: </span>
<a href="mailto:oracle@suk"><span style="font-size: x-small;">oracle@suk</span>
</a>
<span style="font-size: x-small;"> (TNS V1-V3)<br>
SQL> oradebug resume<br>
Statement processed.</span>
</p>
<p><span style="font-size: x-small;">注意:不能在会话中suspend当前会话。如果那样做的话,当前会话会被hang,并且不能被其他session resume,只能kill方式关闭。</span>
</p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值