在unix上被迫终止oracle的时候

在unix上被迫终止oracle的时候(比如oracle挂起无响应),必须执行以下的步骤

1.杀掉所有和oracle相关的进程

2.使用ipcs -pmb命令确定所有被占用的ram内存,然后使用ipcrm -m命令从unix中释放ram内存

3.使用ipcs -sa命令显示同步信号量,然后使用ipcrm -s命令为所有实例释放该同步信号量.

例:

ps -ef | grep $ORACLE_SID|grep -v grep|awk '{print $2}'|xargs -i kill -9 {}

使用ipcs -pmb查看被占用的内存,并且清除被数据库占用的内存

ipcs -pmb

......................................................

Shared Memory

m 24064 oxc0be184   --rw-r-----   oracle  dba  28975104   1836      23847

m 4611   oxc0b9832   --rw-r-----   root     root  32975104   2836      16347

..............

可见oracle拥有的 唯一ram内存段的id是24064.使用下面命令释放内存

ipcrm -m 24064

注意

有很多时候unix进程很难被杀死,甚至是使用kill -9 命令也无法杀死,在这种情况下,需要特殊的诀窍迫使unix任务终止,如果遇到进程使用ps命令进行连续显示,甚至是在对进程使用kill -9命令后 仍不停止的情况下,可考虑下面的诀窍:

通过管道传输null设备(/dev/null)到tyyname进行kill命令的一部分,将难处理的进程杀掉:

root>cat /dev/null > /dev/ttyname kill -9 pid#