因为之前直接删除了表空间,重启oracle后报错ORA-01157,以下记录解决方法。
ORA-01157:无法识别/锁定数据文件字符串 - 请参阅DBWR跟踪文件
原因:后台进程无法找到其中一个数据文件或未能锁定它,因为该文件已被使用。该数据库将禁止访问此文件,但其他文件将不受影响。但是,打开数据库的第一个实例需要访问所有在线数据文件。来自操作系统的伴随错误描述了无法识别文件的原因。
操作:将操作系统make文件提供给数据库。然后打开数据库或执行ALTER SYSTEM CHECK DATAFILES。
参考: http ://docs.oracle.com/cd/B28359_01/server.111/b28278/e900.htm#ORA-01157
ORA-01157数据库写入程序(DBWR)无法找到并锁定数据文件时引发此错误。这可能是由于各种原因,如
- 数据文件被删除或损坏
- 数据文件被重命名或移动
- 挂载点不正确
- 数据文件的读/写权限问题
要解决ORA-01157,我们可以使用以下步骤之一:
- 如果数据文件被删除或损坏,而不是TEMP或UNDO表空间,那么我们需要使用有效的备份来恢复它。
- 如果数据文件被删除或损坏,并且不是TEMP或UNDO表空间,但该表空间不包含重要的段,可以脱机删除
- 如果数据文件被重命名或移动,那么我们需要将其保存在原始位置
- 如果挂载点不正确,只需重新创建挂载点
- 如果它是由于权限引起的,那么
当我恢复冷备份时,我们需要在我的本地环境中在操作系统级别授予我面对ORA-01157 的权限。它是为了测试目的而添加的表空间,并不重要。所以我简单地使用“OFFLINE DROP”子句删除数据文件并打开数据库。
C:\>sqlplus sys/sys as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Apr 30 19:07:16 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 778387456 bytes Fixed Size 1384856 bytes Variable Size 520097384 bytes Database Buffers 251658240 bytes Redo Buffers 5246976 bytes Database mounted. ORA-01157: cannot identify/lock data file 11 – see DBWR trace file ORA-01110: data file 16: ‘E:\oracle\app\nimish.garg\oradata\orcl\test_ts.dbf‘ SQL> select NAME from v$datafile where file#=16; NAME -------------------------------------------------------------------------------- E:\ORACLE\APP\NIMISH.GARG\ORADATA\ORCL\TEST_TS.DBF SQL> alter database datafile 16 OFFLINE DROP; Database altered. SQL> alter database open; Database altered.
我希望这个解决方案有助于解决您的问题。
参考:http://nimishgarg.blogspot.com/2014/01/ora-01157-cannot-identifylock-data-file.html