重庆思庄Oracle、Redhat认证学习论坛
标题: oracle删除归档日志文件 [打印本页]
作者: 王亮 时间: 2020-1-12 20:22
标题: oracle删除归档日志文件
本帖最后由 王亮 于 2020-1-12 20:30 编辑
Oracle数据库在控制文件controlfile中记录着每一个archivelog文件的相关信息,当在OS下把这些物理文件delete掉后,在我们的控制文件controlfile中仍然记录着这些archivelog文件的相关信息,在oracle查询相关的动态视图(例如v$archived_log)时,该部分日志仍然标注为存在。也就是说Oracle并不认为这些日志被删除了,当我们手工清除 archivelog文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了,这时候我们要做手工的清除的话,需要我们在删除物理归档日志时,在其他地方做一些调整:
1. 进入rman
[oracle@server ~]$ rman
2. connect target / 注:(如果磁盘空间满了的话是连接不上的,需要提前清理一些空间才能进行连接)
RMAN> connect target /
3. crosscheck archivelog all;
crosscheck archivelog all:验证的是DB的归档日志即log_archive_dest参数指定位置的文件,当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行Rman备份,所以此时需要手工执行crosscheck过程,查看所有的归档日志文件是否都是正常的然后再来执行Rman备份。
4. delete expired archivelog all;
这时候我们再去动态视图中就看不到这些日志文件了,如果从来没有做过这个动作的话,可以比较这个动作前的controlfile和动作后的controlfile的文件大小。
删除归档日志的过程:
以ORACLE用户身份登录到数据库服务器
进入ORACLE数据备份工具:
rman tatget /
在命令窗口里面执行:
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; (该方法是删除的闪回数据、类似于内存中的数据)
说明:
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行数据库全备份。
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7'; (该方法是删除物理文件)
report obsolete命令:
使用report obsolete命令报告过期备份:
RMAN> report obsolete;
使用delete obsolete命令删除过期备份:
RMAN> delete obsolete;
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) |
Powered by Discuz! X3.2 |