`
swvip
  • 浏览: 154498 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转:ORA-01102: cannot mount database in EXCLUSIVE mode

阅读更多

ORA-01102: cannot mount database in EXCLUSIVE mode

今天在STARTUP一数据库时,发生如下错误:
 
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area  276824064 bytes
Fixed Size                   778736 bytes
Variable Size             137371152 bytes
Database Buffers          138412032 bytes
Redo Buffers                 262144 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
SQL> shutdown immediate
ORA-01507: database not mounted

ORACLE instance shut down.
 
GOOGLE一下,发现是lk<SID>文件造成的,该文件位于ORALCE_HOME下的dbs目录下,马上检查该文件:
 
[root@qa-oracle dbs]# fuser -u lkNDMSQA
lkNDMSQA:             6666(oracle)  6668(oracle)  6670(oracle)  6672(oracle)  6674(oracle)  6676(oracle)  6678(oracle)  6680(oracle)  6690(oracle)  6692(oracle)  6694(oracle)  6696(oracle)  6737(oracle)  6830(oracle)
 
果然该文件没释放,用fuser命令kill掉:
[root@qa-oracle dbs]# fuser -k lkNDMSQA
lkNDMSQA:             6666  6668  6670  6672  6674  6676  6678  6680  6690  6692  6694  6696  6737  6830
[root@qa-oracle dbs]# fuser -u lkNDMSQA
 
然后:
 
SQL> startup 
ORACLE instance started.
Total System Global Area  276824064 bytes
Fixed Size                   778736 bytes
Variable Size             137371152 bytes
Database Buffers          138412032 bytes
Redo Buffers                 262144 bytes
Database mounted.
Database opened.
SQL>
 
数据库成功OPEN.
 
关于该错误更详细的介绍如下:原文链接:http://www.hellodba.com/cases/case-unexception_down.htm
 
数据库异常关闭后无法启动问题处理一例
 
作者: fuyuncat
来源: www.HelloDBA.com
 
 
某系统突然掉电,系统启动后发现Oracle无法启动。启动时报如下错误:
ORA-01102 cannot mount database in EXCLUSIVE mode
 
出现1102错误可能有以下几种可能:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
 
二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
1、 Oracle的共享内存段或信号量没有被释放;
2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
 
首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。
其次、是因系统掉电引起数据库宕机的,系统在接电后被重启,因此我们排除了第二种可能种的1、2点。最可疑的就是第3点了。
查$ORACLE_HOME/dbs目录:
$ cd $ORACLE_HOME/dbs
$ ls sgadef*
sgadef* not found
$ ls lk*
lkORA92
 
果然,lk<sid>文件没有被删除。将它删除掉
$ rm lk*
 
再启动数据库,成功。
 
如果怀疑是共享内存没有被释放,可以用以下命令查看:
$ipcs -mop
IPC status from /dev/kmem as of Thu Jul  6 14:41:43 2006
T      ID     KEY        MODE        OWNER     GROUP NATTCH  CPID  LPID
Shared Memory:
m       0 0x411c29d6 --rw-rw-rw-      root      root      0   899   899
m       1 0x4e0c0002 --rw-rw-rw-      root      root      2   899   901
m       2 0x4120007a --rw-rw-rw-      root      root      2   899   901
m  458755 0x0c6629c9 --rw-r-----      root       sys      2  9113 17065
m       4 0x06347849 --rw-rw-rw-      root      root      1  1661  9150
m   65541 0xffffffff --rw-r--r--      root      root      0  1659  1659
m  524294 0x5e100011 --rw-------      root      root      1  1811  1811
m  851975 0x5fe48aa4 --rw-r-----    oracle  oinstall     66  2017 25076
 
然后它ID号清除共享内存段:
$ipcrm –m 851975
 
对于信号量,可以用以下命令查看:
$ ipcs -sop
IPC status from /dev/kmem as of Thu Jul  6 14:44:16 2006
T      ID     KEY        MODE        OWNER     GROUP
Semaphores:
s       0 0x4f1c0139 --ra-------      root      root
... ...
s      14 0x6c200ad8 --ra-ra-ra-      root      root
s      15 0x6d200ad8 --ra-ra-ra-      root      root
s      16 0x6f200ad8 --ra-ra-ra-      root      root
s      17 0xffffffff --ra-r--r--      root      root
s      18 0x410c05c7 --ra-ra-ra-      root      root
s      19 0x00446f6e --ra-r--r--      root      root
s      20 0x00446f6d --ra-r--r--      root      root
s      21 0x00000001 --ra-ra-ra-      root      root
s   45078 0x67e72b58 --ra-r-----    oracle  oinstall
 
根据信号量ID,用以下命令清除信号量:
$ipcrm -s 45078
 
如果是Oracle进程没有关闭,用以下命令查出存在的oracle进程:
$ ps -ef|grep ora
  oracle 29976     1  0  Jun 22  ?         0:52 ora_dbw0_ora92
  oracle 29978     1  0  Jun 22  ?         0:51 ora_dbw1_ora92
  oracle  5128     1  0  Jul  5  ?         0:00 oracleora92 (LOCAL=NO)
... ...
 
然后用kill -9命令杀掉进程
$kill -9 <PID>
 
总结:
当发生1102错误时,可以按照以下流程检查、排错:
1.如果是HA系统,检查其他节点是否已经启动实例;
2.检查Oracle进程是否存在,如果存在则杀掉进程;
3.检查信号量是否存在,如果存在,则清除信号量;
4.检查共享内存段是否存在,如果存在,则清除共享内存段;
5.检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。
分享到:
评论

相关推荐

    oracle特有的错误:ORA-01036:非法的变量名/编号

    在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...

    解决Exception java.sql.SQLException ORA-00600 内部错误代码

    在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法.pdf

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法 摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP...

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-01652: unable to extend temp segment by X in tablespace TEMP`: 临时表空间不足。增加临时表空间大小或优化使用临时表空间的查询。 以上是Oracle数据库操作中常见的`java.sql....

    如何处理错误ORA-29275:部分多字节字符

    ### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...

    Oracle 10g启动后报ORA-16038错误的解决方法

    ORA-16038: log 1 sequence #230 cannot be archived ORA-19809: limit exceeded for recovery files ORA-00312: online log 1 thread 1: '/oradata/10g/db/instant/redo01.log' ``` 此错误表明,在尝试归档序列号...

    ora-01033:oracle initialization or shutdown in progress 解决方法

    ### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...

    ORA-00060: 等待资源时检测到死锁--oracle 数据库表死锁异常

    在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...

    oracle数据库ORA-29275.txt

    ### Oracle数据库ORA-29275错误解析与解决方案 #### 错误概述 在Oracle数据库操作过程中,遇到ORA-29275错误时,通常意味着系统内部发生了某些问题,影响了数据库的正常运行。根据提供的部分脚本内容及上下文推测,...

    启动oracle数据库报错:ORA-00600

    在Oracle数据库管理中,"ORA-00600"是一个内部错误代码,通常表示数据库遇到了一个未知或未处理的内部错误。这个错误是由于多种原因引起的,包括数据文件损坏、控制文件问题、实例恢复不完整或者软件bug等。在描述中...

    解决 navicat连接oracle报错:ORA-12737InstantClientLight

    然而,有时在使用Navicat连接Oracle数据库时可能会遇到各种问题,如"ORA-12737 InstantClientLight"错误。本文将深入探讨这个错误及其解决方案,同时也会涉及Navicat与Oracle的集成以及InstantClient的相关知识。 ...

    ora-dba.rar

    "ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...

    ora-01033 oracle initialization or shutdown in progress

    ### ORA-01033: Oracle 初始化或关闭中 #### 错误概述 ORA-01033 错误通常出现在尝试启动或连接到Oracle数据库时,表明数据库正处于初始化或关闭过程中。该错误可能由多种原因引起,包括但不限于数据库服务尚未...

    ORA-04052p5731178_92080_WINNT.zip

    ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    Oracle dbca时报:ORA-12547: TNS:lost contact错误的解决

    最近在工作中遇到了一个问题,错误是Oracle dbca时报错:ORA-12547: TNS:lost contact,通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看看详细的介绍吧。 环境: OS:RHEL6.5 x86-...

    Drop goldengate用户时报ORA-00604 ORA-20782 ORA-06512问题解决

    ORA-20782: Oracle GoldenGate DDL Replication Error: Code: ORA-20782: Cannot DROP object used in Oracle GoldenGate replication while trigger is enabled. Consult Oracle GoldenGate documentation and/or ...

    Oracle SQL Developer连接报错(ORA-12505)的解决方案(两种)

    之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor

    如何解决ORACLE11G里面ORA-24247 网络访问被访问控制列表 (ACL) 拒绝 错误

    ### 如何解决Oracle 11G中的ORA-24247网络访问被访问控制列表 (ACL) 拒绝错误 #### 背景 在处理Oracle 11G数据库时,可能会遇到ORA-24247错误,该错误通常出现在尝试通过网络访问数据库资源时。这一错误是由于访问...

Global site tag (gtag.js) - Google Analytics