Oracle Database on NFS : Resolving "ORA-27086: unable to lock file - already in use" Error
By Giri Mandalika on Oct 10, 2011
Some Context
Oracle database was hosted on ZFS Storage Appliance (NAS). The database files are accessible from the database server node via NFS mounted filesystems. Solaris 10 is the operating system on DB node.
Someone forgets to shutdown the database instance and unmount the remote filesystems before rebooting the database server node. After the system boots up, Oracle RDBMS fails to bring up the database due to locked-out data files.
eg.,
SQL> startup ORACLE instance started. Total System Global Area 1.7108E+10 bytes Fixed Size 2165208 bytes Variable Size 9965671976 bytes Database Buffers 6845104128 bytes Redo Buffers 295329792 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/orclvol4/entDB/system01.dbf' ====================== Extract from alert log: ====================== ... ALTER DATABASE OPEN Fri Aug 05 21:30:54 2011 Errors in file /oracle112/diag/rdbms/entdb/entDB/trace/entDB_dbw0_7235.trc: ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/orclvol4/entDB/system01.dbf' ORA-27086: unable to lock file - already in use SVR4 Error: 11: Resource temporarily unavailable Additional information: 8 Additional information: 21364 Errors in file /oracle112/diag/rdbms/entdb/entDB/trace/entDB_dbw0_7235.trc: ORA-01157: cannot identify/lock data file 2 - see DBWR trace file ORA-01110: data file 2: '/orclvol4/entDB/sysaux01.dbf' ORA-27086: unable to lock file - already in use SVR4 Error: 11: Resource temporarily unavailable Additional information: 8 Additional information: 21364 ...
Reason for the lock failure:
Because of the sudden ungraceful shutdown of the database, file locks on data files were not released by the NFS server (ZFS SA in this case). NFS server held on to the file locks even after the NFS client (DB server node in this example) was restarted. Due to this, Oracle RDBMS is not able to lock those data files residing on NFS server (ZFS SA). As a result, database instance was failed to start up in exclusive mode.
Workaround
Manually clear the NFS locks as outlined below.
On NFS Client (database server node):
- Shutdown the mounted database
- Unmount remote (NFS) filesystems
-
Execute:
clear_locks -s <nfs_server_host>
eg.,
# clear_locks -s sup16 Clearing locks held for NFS client ipsedb1 on server sup16 clear of locks held for ipsedb1 on sup16 returned success
On NFS Server (ZFS SA):
(this step may not be necessary but wouldn't hurt to perform)
- Execute:
clear_locks <nfs_client_host>
eg.,
sup16# clear_locks 10.129.207.93 Clearing locks held for NFS client 10.129.207.93 on server sup16 clear of locks held for 10.129.207.93 on sup16 returned success
Again back on NFS Client (database server node):
- Restart NFS client
(this step may not be necessary but wouldn't hurt to perform)# svcadm -v disable nfs/client # svcadm -v enable nfs/client
- Mount remote/NFS filesystems
- Finally start the database
Also see:
Listing file locks on Solaris 10
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?