oracle共享內(nèi)存段手工清理
當(dāng)Oracle數(shù)據(jù)庫意外當(dāng)機(jī),操作系統(tǒng)內(nèi)存共享段未釋放,便無法重啟數(shù)據(jù)庫至nomount狀態(tài),此時(shí)需要手工清理。
現(xiàn)象:
1.可以看到有2個(gè)smon進(jìn)程
$ 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查看內(nèi)存
$ 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內(nèi)存段方式:
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 查出內(nèi)存段
$ 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.用操作系統(tǒng)命令ipcrm手工釋放
[oracle@testsvr bin]$ ipcrm -m 98306
[oracle@testsvr bin]$ ipcrm -s 229377
4.查看結(jié)果可以看到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參數(shù)可以移除共享段(僅適用于實(shí)例不存在,操作系統(tǒng)共享段不釋放條件)
[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"