当Oracle 归档日志满了后将无法正常登入Oracle需要删除一部分归档日志才能正常登入Oracle
一首先删除归档日志物理文件归档日志一般都是位于archive目录下AIX系统下文件格式为__dbf建议操作前先对数据库进行备份删除时至少保留最近几天的日志用于数据库恢复
二把归档日志的物理文件删除后我们就可以正常登入Oracle了但是还没完全把归档日志删除干净Oracle的controlfile中仍然记录着这些archivelog的信息在Oracle的OEM管理器中有可视化的日志展现出当我们手工清除archive目录下的文件后这些记录并没有被我们从controlfile中清除掉接下去我们要做的就是这个工作
我们利用RMAN进行删除操作操作步骤如下(WIN客户端系统为例)
指定数据库实例
C:\Documents and Settings\Administrator>SET Oracle_SID =orcl
连接数据库
C:\Documents and Settings\Administrator>RMAN TARGET SYS/sysadmin@orcl
查看归档日志的状态
RMAN> list archivelog all;
手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE SYSDATE;
说明
SYSDATA表明当前的系统时间天前before关键字表示在天前的归档日志如果使用了闪回功能也会删除闪回的数据
同样道理也可以删除从天前到现在的全部日志不过这个命令要考虑清楚做完这个删除最好马上进行全备份数据库
DELETE ARCHIVELOG from TIME SYSDATE; 删除从天前到现在的全部日志慎用
UNIX/LINUX下也可以通过FIND找到天前的归档数据使用EXEC子操作删除
find /oraarchive xdev mtime + name *dbf exec rm f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用不过用FIND的好处就是可以在条件上和EXEC子项上做很多操作实现更复杂的功能