ORA-27086: unable to lock file already in..
1、创建数据文件报错ORA-27086:unable to lock file
添加数据文件
alter tablespace d_wiscom add datafile '/oradata/data/orcl/datafile02.dbf' size 100m autoextend on next 50m maxsize unlimited;
该数据文件初始化100m,每次不足,自动扩展大小50M,可扩展至最大32G
2、重新创建数据文件报错提示文件已经存在
SQL> alter tablespace d_wiscom add datafile '/oradata/data/orcl/datafile02.dbf' size 100m autoextend on next 50m maxsize unlimited;
alter tablespace d_wiscom add datafile '/oradata/data/orcl/datafile02.dbf' size 100m autoextend on next 50m maxsize unlimited
*
ERROR at line 1:
ORA-01119: error in creating database file '/oradata/data/orcl/datafile02.dbf'
ORA-27038: created file already exists
Additional information: 1
3、系统查看之前创建的数据文件确实存在
[root@jieshou orcl] ll 查看文件存在
4、dba_data_files查看数据文件不存在
5、删除数据文件报
alter tablespace d_wiscom drop datafile '/oradata/data/orcl/datafile02.dbf';
alter tablespace d_wiscom drop datafile '/oradata/data/orcl/datafile03.dbf';
alter tablespace d_wiscom drop datafile '/oradata/data/orcl/datafile04.dbf';
alter tablespace d_wiscom drop datafile '/oradata/data/orcl/datafile05.dbf';
如果删除时报错
如果是是刚刚创建的表空间,可以直接drop tablespace d_wiscom including contents and datafiles;删除表空间及该表空间内的所有信息及数据
如果有数据,但又不是刚刚创建的表空间,在重新挂载之前可以关闭数据库
6、卸载nfs挂载存储,重新挂载的时候加上nolock参数
mount -t nfs -o nolock 192.168.56.125:/a1 /b1
注意:
1:如果卸载的时候报错,该设备正在使用,可用通过fuser -m -v /zxx_orcl 查看哪些进程占用该资源,然后kill,但是如果是数据库正在使用,那么就需要先将数据库关闭
2:/etc/fstab中配置开机自挂载也要加上该参数
/zxx_orcl 是需要查看占用的目录
详细挂载参考我的经验:using nfs for oracle rac
7、验证
再次添加数据文件
alter tablespace d_wiscom drop datafile '/oradata/data/orcl/datafile02.dbf';
数据文件添加成功,查看dba_data_files查看存在该数据文件
8、原因分析
nas存储将逻辑卷nfs共享出去,一旦服务器挂载使用,存储就会自动将该逻辑卷锁住,保护逻辑卷内不被其他服务器挂载,达到保护数据作用,但是数据库添加挂载目录中创建数据文件,数据库需要对该数据文件获取锁,但是该锁已经被存储占用,这个时候就需要设置存储在挂载的时候不锁住,使用nolock参数