暂无图片
暂无图片
13
暂无图片
暂无图片
暂无图片

因断电或者服务器异常,导致Oracle数据库启动不了,ORA-10997,ORA-09968,案例分析

4266

描述:

因为服务器断电重启导致了数据库实例启动报错。提示报错信息如下,从错误信息很多人就联想到估计是服务器有进程残留或者共享内存没释放,原因确实是这样吗,下面我们进行分析。

SQL> startup
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable

分析过程:

分析后台进程

可以看到是没有Oracle相关后台进程的

[oracle@aix173 /home/oracle]$ps -ef | grep ora
  oracle  5242928 11010228   0   Aug 16  pts/0  0:00 -ksh
  oracle  7274638 17105128   1 14:46:36  pts/1  0:00 bash
  oracle  7405654  5242928   0   Aug 16  pts/0  0:00 bash
  oracle 12386438 15270068   0   Aug 16  pts/0  0:00 bash
  oracle 13893632        1   0   Aug 10      -  0:21 /oracle/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit
  oracle 15270068 16515274   0   Aug 16  pts/0  0:00 -ksh
  oracle 16187628  7274638   0 15:26:27  pts/1  0:00 ps -ef
  oracle 17105128 15466672   0 14:46:36  pts/1  0:00 -ksh
[oracle@aix173 /home/oracle]$

分析共享内存
也可以看到,没有跟oracle用户相关的内存信息

[oracle@aix173 /home/oracle]$ipcs -a
IPC status from /dev/mem as of Thu Aug 19 15:27:19 CDT 2021
T        ID     KEY        MODE       OWNER    GROUP  CREATOR   CGROUP CBYTES  QNUM QBYTES LSPID LRPID   STIME    RTIME    CTIME 
Message Queues:
q         0 0x4107001c -Rrw-rw----     root   printq     root   printq         0         0   4194304      0      0 no-entry no-entry 10:25:22
T        ID     KEY        MODE       OWNER    GROUP  CREATOR   CGROUP NATTCH     SEGSZ  CPID  LPID   ATIME    DTIME    CTIME 
Shared Memory:
m         0 0xffffffff D-rw------- pconsole   system pconsole   system      1 536870912 4653224 4653224 10:35:27 no-entry 10:35:27
m   1048577 0x6100a037 --rw------- pconsole   system pconsole   system      1  10485760 4653224 4653224 10:35:28 no-entry 10:35:28
T        ID     KEY        MODE       OWNER    GROUP  CREATOR   CGROUP NSEMS   OTIME    CTIME 
Semaphores:
s   3145728 0x0102b017 --ra-ra-r--     root   system     root   system     1 10:25:20 10:25:20
s         1 0x620002eb --ra-r--r--     root   system     root   system     1 10:25:13 10:25:13
s         2 0x4e0002af --ra-ra----     root   printq     root   printq     1 10:25:22 10:25:22
s         3 0x150002af --ra-ra----     root   printq     root   printq     1 10:25:22 10:25:22
s         4 0x020007bc --ra-ra-ra-     root   system     root   system     2 10:35:24 10:35:24
s         5 0x010007bc --ra-ra-ra-     root   system     root   system     2 10:35:25 10:35:25
s        16 0x8100a034 --ra------- pconsole   system pconsole   system     4 23:27:44 10:35:28
s        17 0xa1001002 --ra-ra-ra-     root   system     root   system     2 no-entry 10:35:30
s        18 0x0100021b --ra-------     root   system     root   system     1 11:18:21 11:18:21
[oracle@aix173 /home/oracle]$

关键点
到这里我们就要想到Oracle启动的原理,在Oracle启动/停止进程发起的时候,会在$ORACLE_HOME/dbs目录下生成一个lkinst’SID’的临时文件进行lock,在启动/停止完成的时候会unlock然后把此文件删掉。

分析lkinst’SID’文件

image.png

从图中我们就可以看到了此实例链接文件,而这就是原因所在,服务器在异常关闭的时候数据库在关闭进程还没来得及关闭实例完成,此时服务器已经关闭了,导致此文件没有被删除,当下次启动的时候就会无法锁定实例,因而提示上方的错误。

故障处理:

删除或者移走lkinstfordb文件即可

[oracle@aix173 /oracle/app/oracle/product/11.2.0.4/dbhome_1/dbs]$rm -f lkinstfordb

再次启动数据库,发现已经正常启动

SQL> startup
ORACLE instance started.

Total System Global Area 1720328192 bytes
Fixed Size                  2247072 bytes
Variable Size            1056966240 bytes
Database Buffers          654311424 bytes
Redo Buffers                6803456 bytes
Database mounted.
Database opened.
SQL> 


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
2人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论