oracle共享内存段手工清理

作者: 2012/2/5 12:32:37

当Oracle数据库意外当机,操作系统内存共享段未释放,便无法重启数据库至nomount状态,此时需要手工清理。
现象:
1.可以看到有2个smon进程
$ ps -ef|grep smon
oracle    6538     1  0 22:00 ?        00:00:00 ora_smon_zwb
oracle    6574     1  0 22:02 ?        00:00:00 ora_smon_bxtest
oracle    6583  6463  0 22:02 pts/2    00:00:00 grep smon

2.ipcs查看内存
$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status     
0x3b751258 65537      oracle    640        262144000  13                     
0x7707b27c 98306      oracle    640        266338304  11                     

------ Semaphore Arrays --------
key        semid      owner      perms      nsems    
0xe21c75d0 98304      oracle    640        154      
0x991ba820 229377     oracle    640        204  


要清理bxtest内存段方式:
1.使用在$ORACLE_HOME/bin下的sysresv命令
$ cd $ORACLE_HOME/bin
$ ls -l *sys*
-rwxr-xr-x  1 oracle oinstall  2318 Jan  1  2000 gensyslib
-rwxr-xr-x  1 oracle oinstall 20397 Jun 28  2005 sysresv

2.用sysresv -l 查出内存段
$ sysresv -l zwb bxtest

IPC Resources for ORACLE_SID "zwb" :
Shared Memory:
ID              KEY
65537           0x3b751258
Semaphores:
ID              KEY
98304           0xe21c75d0
Oracle Instance alive for sid "zwb"

IPC Resources for ORACLE_SID "bxtest" :
Shared Memory:
ID              KEY
98306           0x7707b27c
Semaphores:
ID              KEY
229377          0x991ba820
Oracle Instance alive for sid "bxtest"

3.用操作系统命令ipcrm手工释放
[oracle@testsvr bin]$ ipcrm -m 98306
[oracle@testsvr bin]$ ipcrm -s 229377

4.查看结果可以看到bxtest已清理
$ ps -ef|grep smon
oracle    6538     1  0 22:00 ?        00:00:00 ora_smon_zwb
oracle    6624  6463  0 22:12 pts/2    00:00:00 grep smon
------------
5.sysresv -f参数可以移除共享段(仅适用于实例不存在,操作系统共享段不释放条件)
[oracle@testsvr ~]$ export ORACLE_SID=bxtest
[oracle@testsvr ~]$ sysresv -f bxtest

IPC Resources for ORACLE_SID "bxtest" :
Shared Memory:
ID              KEY
131074          0x7707b27c
Semaphores:
ID              KEY
425985          0x991ba820
Oracle Instance alive for sid "bxtest"
SYSRESV-005: Warning
        Instance maybe alive - aborting remove for sid "bxtest"

特别推荐

玩家留言 跟帖评论
查看更多评论