ORA-01102的解决办法

ORA-01102的解决办法

启动数据库时报错了!

SQL> startup mount        

ORACLE instance started.

 

Total System Global Area  608174080 bytes

Fixed Size                 1220844 bytes

Variable Size            176164628 bytes

Database Buffers      427819008 bytes

Redo Buffers             2969600 bytes

ORA-01102: cannot mount database in EXCLUSIVE mode

 

解决办法:

1、重启系统,有坑能是第一次起库,而11g自动管理sga和pga的机制没有调节好导致的。reboot就可以了

2、重启解决不了,按照以下的操作进行。

 

分析原因:

一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;

 

二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,

1、 Oracle的共享内存段或信号量没有被释放;

2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;

3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。

 

解决思路:

当发生1102错误时,可以按照以下流程检查、排错:

如果是HA系统,检查其他节点是否已经启动实例检查Oracle进程是否存在,如果存在则杀掉进程检查信号量是否存在,如果存在,则清除信号量检查共享内存段是否存在,如果存在,则清除共享内存段检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。

 

具体做法:

首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。

其次、是因系统掉电引起数据库宕机的,系统在接电后被重启,因此我们排除了第二种可能种的1、2点。最可疑的就是第3点了。

查$ORACLE_HOME/dbs目录:

$ cd $ORACLE_HOME/dbs

$ ls sgadef*

sgadef* not found

$ ls lk*

/opt/oracle/product/ 10.2.0/db_1/dbs/lkSIMPLY

lkSIMPLY

果然,lk<sid>文件没有被删除。将它删除掉

$ rm lk*

 

再次启动时又遇到下面的错误,不过别担心,继续后面的操作就搞定

SQL> startup mount

ORACLE instance started.

 

Total System Global Area  608174080 bytes

Fixed Size    1220844 bytes

Variable Size     176164628 bytes

Database Buffers      427819008 bytes

Redo Buffers    2969600 bytes

ORA-00205: error in identifying control file, check alert log for more info   : (

 

查看共享内存段

[root@simply bdump]# ipcs -map

 

—— Shared Memory Creator/Last-op ——–

shmid   owner  cpid    lpid

786444  root    6490   6438

819213  root    6549   6438

1409040 oracle   31502  16728

根据ID号清楚共享内存段

ipcrm –m 1409040

我这里操作是没有成功的,不过执行了下面的操作就ok了!

 

查看信号量

[root@simply bdump]# ipcs -s

 

key       semid      owner   perms    nsems

0x17ff6454 360448     oracle    640     154

 

清除oracle的信号量

[root@simply bdump]# ipcrm -s 360448

 

再次查询确认

[root@simply bdump]# ipcs -s

 

—— Semaphore Arrays ——–

key  semid  owner  perms   nsems

 

再查询共享内存段也ok了!

[root@simply bdump]# ipcs -m

 

如果是Oracle进程没有关闭,

$kill -9 <PID>

转载于:https://www.cnblogs.com/kaishirenshi/p/9013791.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101672.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图片格式WEBP全面解析[通俗易懂]

    图片格式WEBP全面解析[通俗易懂]前言不管是PC还是移动端,图片一直是流量大头,以苹果公司Retina产品为代表的高PPI屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值且值得探索的事情。但如今对于JPEG、PNG和GIF这些图片格式的优化几乎已经达到了极致,若想改变现状开辟新局面,便要有釜底抽薪的胆量和气魄,而Google给了我们一个新选择…

    2022年6月22日
  • kafka教程_scala为什么用的很少

    kafka教程_scala为什么用的很少kafka教程第1章 Kafka概述1.1定义1.2消息队列1.2.1传统消息队列的应用场景消息队列的好处1.2.2消息队列的两种模式1.3什么是Kafka1.4Kafka架构1.5kafka名词解释1.6消息格式第2章Kafka集群部署2.1环境准备2.1.1集群规划2.1.2jar包下载2.2Kafka集群部署2.3Kafka命令行操作1)查看topic2)创建topic3)删除topic4)发送消息5)消费消息第3章Kafka工作流程分析3.1kafka工作流程及文件存

    2022年10月17日
  • C/C++获取当前系统时间的方法

    C/C++获取当前系统时间的方法1、使用系统函数,并且可以修改系统时间#include&lt;stdlib.h&gt;usingnamespacestd;voidmain(){system("time");}备注:获取的为 小时:分钟:秒 信息2、获取系统时间(秒级),可以换算为年月日星期时分秒#include&lt;iostream&gt;#include&lt;time.h&gt;us…

    2022年10月19日
  • 基于opencv的图像校正_伽马校正怎么设置

    基于opencv的图像校正_伽马校正怎么设置#include"stdafx.h"#include&lt;cmath&gt;#include&lt;iostream&gt;#include&lt;opencv2\core\core.hpp&gt;#include&lt;opencv2\highgui\highgui.hpp&gt;#include&lt;opencv2\imgproc\imgproc.hp…

    2022年9月25日
  • git的基本使用方法「建议收藏」

    git的基本使用方法「建议收藏」git的基本使用方法什么是git?git是目前世界上最先进的分布式版本控制系统。git与SVN的最主要区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候用的都是自己的电脑,所以开始工作之前需要从中央服务器那里获取最新的版本,然后开始工作,工作完后,需要把自己所做的工作推送到中央服务器。集中式版本控制系统必须要联网才能工作,如果在局域网中,有足够的宽带,运行速度…

    2022年6月29日
  • 实用技巧——小问题的一些解决办法

    收集一些遇到的小问题,并分享解决方案!

    2022年2月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号