返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1406|回复: 0

[转载] 【转载】Oracle12c 启动报错:ORA-01157:"cannot identify/lock data file" 解决方案

[复制链接]
发表于 2025-2-24 17:14:19 | 显示全部楼层 |阅读模式
Oracle12c 启动报错:ORA-01157:"cannot identify/lock data file" 解决方案


转载作者:星火spark


sqlplus以管理员方式接入数据库,启动时出现报错,如下:

> sqlplus "/as sysdba"
SQL> startup
......
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01110: data file 8: '/tmp/test.dbf'

查看数据库日志文件alert_$ORACLE_SID.log,存在对应报错信息:
Errors in file ....../aix85_psp0_454886.trc:
查看此trc文件中记录信息:
*** SERVICE NAME:() 2011-07-18 10:05:00.769
*** SESSION ID:(332.1) 2011-07-18 10:05:00.769
ORA-01157: cannot identify/lock data file 8 - see DBWR trace file
ORA-01110: data file 8: '/tmp/test.dbf'
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: '/tmp/test1.dbf'
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
ORA-01157: cannot identify/lock data file 10 - see DBWR trace file
ORA-01110: data file 10: '/tmp/indx1.dbf'
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
ORA-01157: cannot identify/lock data file 11 - see DBWR trace file
ORA-01110: data file 11: '/tmp/test2.dbf'
ORA-27037: unable to obtain file status
IBM AIX RISC System/6000 Error: 2: No such file or directory
Additional information: 3
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file





查询分析:
查询确认是某个PDB下的表空间被删除了,/tmp目录中的dbf是在之前数据库运行过程中添加的测试空间文件,测试完毕已经删除,而且后续没有任何人访问到这几个文件,因此也没有任何数据库报错,直到数据库实例宕掉并重启时出现启动失败。

解决办法:
既然出现报错的dbf文件已经不用,则解决办法相对简单,只要将对应的数据文件删除,并继续删除对应新增的表空间即可。操作过程如下:

1.shutdown immediate; 先关闭数据库

2.startup mount; 挂在数据库

3.alter session set container=XXXPDB;
#注意,表空间在哪个PDB创建的,就要在哪个PDB中删除,这里要先进入PDB中,否则强行删除会出现下图报错


提示dbf文件不在容器中


4.select file#,name,status from v$datafile;  查看本PDB中现有的datafile文件,二次确认需要删除的表空间dbf文件



5.alter database datafile '/tmp/test.dbf' offline drop;  下线对应的datafile,此处若不加drop会报错



6.再次查看v$datafile表会发现对应的几个dbf文件状态由ONLINE变为RECOVER
select file#,name,status from v$datafile;



7.select * from v$tablespace;  查看现PDB中的表空间



8.alter session set container=CDB$ROOT;  切换至CDB

9.ALTER DATABASE OPEN;  将数据库从MOUNT状态中启动。

10.alter session set container=XXXPDB;  切换至对应PDB

11.alter pluggable database open;  启动PDB数据库



12.drop tablespace test including contents cascade constraints;  删除表空间
# INCLUDING CONTENTS:删除所有段(表、索引等)。
# CASCADE CONSTRAINTS:级联删除关联约束。




至此,PDB中的表空间删除成功。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表