在RMAN工具里删除归档日志文件:

1. rman target /
--检查所有归档
2. CROSSCHECK ARCHIVELOG ALL;
--列出所有过期的归档
3. LIST EXPIRED ARCHIVELOG ALL;
--删除过期归档
4. DELETE EXPIRED ARCHIVELOG ALL;
--删除昨天23点之前的归档
SQL> select to_char(trunc(sysdate-1)+23/24,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(TRUNC(SYSDATE-1)+23/24,'YYYY-MM-DDHH24:MI:SS')
---------------------------------------------------------
2022-11-29 23:00:00

5. delete archivelog all completed before 'trunc(sysdate-1)+23/24';

--删除1天之前的归档
6.delete archivelog all completed before 'sysdate-1';

7.生产常用
delete noprompt archivelog until time 'sysdate-1/4' like '+ARCHDG/%';
crosscheck archivelog all;

8.删除2小时之前的
delete noprompt archivelog until time 'sysdate-2/24' like '+ARCH/%';

在controlfile中记录着每一个archivelog的相关信息,当我们在OS下把这些物理文件delete掉或异常变动后,在controlfile中仍然记录着这些archivelog的信息,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了!这时候我们要做手工的清除。

作用就是检查归档文件和实际物理文件的差别。

crosscheck archivelog all;

作用是同步控制文件的信息和实际物理文件的信息 。

delete expired archivelog all;