报错现象:
数据库报出 ORA-01102 错误,无法 mount
[oracle@edbjr2p2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 25 02:38:03 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SYS @ PROD4 >startup
ORACLE instance started.
Total System Global Area 941600768 bytes
Fixed Size 1348860 bytes
Variable Size 549456644 bytes
Database Buffers 385875968 bytes
Redo Buffers 4919296 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
SYS @ PROD4 >alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
查看日志:
大概意思为文件被占用,无法锁定(最后发现报错关系到一个文件和一个进程,就是日志里标出的两行)
[oracle@edbjr2p2 ~]$ tail -10 /u01/app/oracle/diag/rdbms/prod4/PROD4/trace/alert_PROD4.log
Wed Jan 25 03:07:39 2017
MMNL started with pid=16, OS id=20451
starting up 1 shared server(s) ...
ORACLE_BASE from environment = /u01/app/oracle
Wed Jan 25 03:07:39 2017
ALTER DATABASE MOUNT
sculkget: failed to lock /u01/app/oracle/product/11.2.0/db_1/dbs/lkPROD4 exclusive
sculkget: lock held by PID: 17127
ORA-09968: unable to lock file
Linux Error: 11: Resource temporarily unavailable
Additional information: 17127
ORA-1102 signalled during: ALTER DATABASE MOUNT...
查报错原因:
通过访问多个技术大牛的博客找到问题原因和解决方法,以下Metalink的内容就摘自他们博客,里边描述了的问题原因和解决方法。其中下文第3条我觉得如果主机有多个实例并且都属于Oracle用户的话可能不可以直接这么操做(适合单实例环境),不排除我的理解有偏差,如果主机有多个实例请先验证!:
Metalink 原文如下:
analysis:
Problem Description: