一、提出问题 
实际过程中有时我们会遇到这样的问题,当你用startup试图启动数据库时会遇到ORA-01102的报错。我们可以在Unix下切换到Oracle的用户,执行一下oerr ora 1102便会看到有关1102的简短的描述,如下: 
rp2$[/home/ora2]oerr ora 1102
01102, 00000, "cannot mount database in EXCLUSIVE mode"
// *Cause:  Some other instance has the database mounted exclusive or shared.
// *Action: Shutdown other instance or mount in a compatible mode 
看了这个1102的简短的解释你一定有些迷惑,由于它有一些的误导性。如下我便来分析一下问题产生的缘由,并给出处理的办法。 
二、分析缘由 
当你启动数据库遇到1102报错时,之前的数据库的down操作普通都不是正常完成的,或由于一些异常使Oracle在操作系统中残留一些内存结构,Pmon等一几个进程仍然存在等缘由使Oracle误认为Instance仍然在运转着,所以库就没有启动,具体说来大体缘由有如下几个: 
1、pmon、smon、lwgw及dbwr这些后台进程仍然存在着
2、Oracle开辟的共享内存没有释放掉
3、"lk<sid>" and "sgadef<sid>.dbf"这两个用于锁内存的文件存在着。 
三、处理问题 
知道了缘由,处理起来就简单多了,办法如下: 
1、看一下"lk<sid>" and "sgadef<sid>.dbf"这两个文件是不是存在着,如果存在将其删掉。
oracle$cd $ORACLE_HOME/dbs 
oracle$ls -l sgadef<sid>.dbf
如果存在删掉它
oracle$rm sgadef<sid>.dbf 
oracle$ls -l lk<sid>
如果存在删掉它
oracle$rm lk<sid> 
2、看是不是有后台进程存在了 
oracle$ps -ef | grep ora_ | grep $ORACLE_SID 
如果有pmon这些后台进程的残留,kill -9掉它
oracle$kill -9 pid 
3、看一下oracle的共享内存段及信号集(semaphores)是不是还存在着 
1)清共享内存段 
oracle$ipcs -m   --显示一下,看owner是Oracle用户的
oracle$ipcrm -m <Shared_Memory_ID> 
2)清信号集 
oracle$ipcs -s   --显示一下,看owner是Oracle用户的
oracle$ipcrm -s <Semaphore_ID> 
四、应该没问题了,再试一下吧^-^