Oracle误删dbf文件后的解决办法
1.Oracle的模式
Oracle分为非归档模式(NOARCHIVELOG) 和归档模式(ARCHIVELOG)。
- 非归档模式 : 联机日志会被新数据覆盖,因而做数据备份时不能完全恢复数据.非归档模式下,如果误删dbf文件,不能直接将文件脱机,只能先修复再脱机
- 归档模式 : 联机日志不会被覆盖,数据可以完全被恢复,可以直接改变文件的脱机状态
- 查看模式:select name,log_mode from v$database;
2.误删的补救措施
2.1.出现场景
Oracle在启动后,用户登录时是要将方案中原有配置信息装载进入,装载过程中配置中有文件未找到,所以就报出错误;误删dbf文件之后,数据库不会有问题,但是如果数据库进行重启的时候会报错,报错内容为:ORA-01033: ORACLE initialization or shutdown in progres
2.非归档模式下恢复方法切换至oracle用户:
2.1.打开数据库链接:
- su - oracle
- sqlplus / as sysdba
- SQL>shutdown normal
- SQL>startup mount ;
- SQL>alter database open;
如果误删了dbf文件,会出现以下报错:
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: ‘F:/ORACLE/TEST01.DBF’
说明是标号为5的dbf文件被删除,需要先恢复再脱机:
- SQL> alter database create datafile 5;
- SQL> alter database datafile 5 offline drop;
执行完以上步骤后在进行重启,如果还报错,说明删除的文件不止一个,重复上面的操作直到知道不报错为止