分类: LINUX
2007-03-11 10:11:19
在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#