Oracle11G 下误删除一个redo文件后解决办法
有三个redo文件,不小心删了物理文件redo03.log
1. 关库
SHUTDOWN ABORT;
STARTUP MOUNT;
2.在系统下建一个假文件
cp /data/oracle/app/oradata/crmdb/redo02.log /data/oracle/app/oradata/crmdb/redo03.log
3. 打开库
ALTER DATABASE OPEN;
会报错:
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 19432
Session ID: 2647 Serial number: 3
别慌!ORA-03113 和 ORA-03114 说明数据库实例因为读取了那个"假的"文件后检测到严重不一致,主动崩溃了(Instance Crash)。
这是一个正常的保护机制,因为拷贝的内容与 的控制文件记录完全不匹配,Oracle 认为日志文件损坏,为了数据安全主动终止了实例。
4. 需要重新连接并启动数据库。
STARTUP MOUNT;
ALTER DATABASE OPEN;
数据库会正常启动到 MOUNT 状态,不会再尝试读取 redo03.log。
在 OPEN 失败后,立即执行 CLEAR
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;
5. 再次打开库
ALTER DATABASE OPEN;
数据库会正常打开,并且会进行实例恢复,(利用 GROUP#1 和 GROUP#2),几秒后完成。
6.清理
- 确认 GROUP#3 状态变为 UNUSED 或 INACTIVE
SELECT GROUP#, STATUS FROM V$LOG;
-- 删除它
ALTER DATABASE DROP LOGFILE GROUP 3;
7. 删除系统下物理文件

浙公网安备 33010602011771号