1、日志文件丢失
i.查看告警日志:
[oracle@wyzcwyzc10g]$ tail -F /u01/oracle/admin/wyzc10g/bdump/alert_wyzc10g.log
Ii.查看日志文件状态:
SQL> selectgroup#,status from v$log;
GROUP# STATUS
--------------------------
1 CURRENT
2 UNUSED
3 UNUSED
Iii.切换日志文件:
alter system switchlogfile;
此时再次查看告警日志:
[oracle@wyzcwyzc10g]$ tail -F /u01/oracle/admin/wyzc10g/bdump/alert_wyzc10g.log
多出来的日志如下:
Thu Sep 08 09:02:51CST 2016
Thread 1 cannotallocate new log, sequence 2
Private strand flushnot complete
Current log# 1 seq# 1 mem# 0:/u01/oracle/oradata/wyzc10g/redo01.log
Thu Sep 08 09:02:53CST 2016
Thread 1 advanced tolog sequence 2 (LGWR switch)
Current log# 2 seq# 2 mem# 0:/u01/oracle/oradata/wyzc10g/redo02.log
而日志文件的状态如下:
SQL> selectgroup#,status from v$log;
GROUP# STATUS
--------------------------
1 ACTIVE
2 CURRENT
3 UNUSED
Iv.解决方法
触发CKPT:
SQL> alter systemcheckpoint;
System altered.
再次查看日志文件状态:
SQL> selectgroup#,status from v$log;
GROUP# STATUS
--------------------------
1 INACTIVE
2 CURRENT
3 UNUSED
清空日志文件
SQL> alterdatabase clear logfile group 1;
Database altered.
再次查看日志文件,已恢复
SQL> ho ls/u01/oracle/oradata/wyzc10g/redo*
/u01/oracle/oradata/wyzc10g/redo01.log /u01/oracle/oradata/wyzc10g/redo02.log /u01/oracle/oradata/wyzc10g/redo03.log
总结如下:
根据状态进行处理
UNUSEDINACTIVE --> alter database clear logfile group <>;
ACTIVE--> alter system checkpoint;
alter database clearlogfile group <>;
CURRENT --> alter system switch logfile;
alter databaseclear logfile group <>;
如何知道日志文件丢失了呢,除了查看上述告警日志。可以用操作命令直接查看
SQL> selectmember from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/oracle/oradata/wyzc10g/redo03.log
/u01/oracle/oradata/wyzc10g/redo02.log
/u01/oracle/oradata/wyzc10g/redo01.log
而后直接查看相应路径下的文件是否丢失
2、数据文件丢失
i.备份整个数据库
[oracle@wyzcwyzc10g]$ rman target /
RMAN> backupdatabase;
Ii.system undo 丢失
Shutdown immediate,关不掉->shutdownabort
Startupmount
Restoredatafile <>;
Recoverdatabase;
Alterdatabase open;
Iii.其他数据文件丢失
在RMAN中
Run {
Sql'alter tablespace <> offline immediate';
Restoretablespace <>;
Recovertablespace <>;
Sql'alter tablespace <> online';
}