0%

Oracle归档日志清理

首先删除归档文件在物理主机磁盘中的文件
物理文件删除后Oracle的 controlfile 中仍然记录着这些 archivelog 的信息,在 oracle 的OEM管理器中有可视化的日志展现出,接下来要做的就是从 controlfile 中清除掉多余归档日志文件记录
利用 RMAN 进行删除操作,操作步骤如下:
打开 Rman 连接数据库

1
rman target /

查看归档日志的状态

1
RMAN> list archivelog all;	#显示所有的日志及日志地址

1
2
cd /data/oracle
ls

我这个日志存放的目录不好,应该单独建一个文件夹存放。

转移或清除对应的归档日志

1
find /data/oracle/ -xdev -mtime +7 -name "*.dbf" -exec rm -f {} \;

这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令

执行 archivelog 校验命令

1
RMAN> crosscheck archivelog all;	#把无效的expired的archivelog标出来

删除校验失败的记录

1
RMAN> delete expired archivelog all;	#删除所有的无效日志

删除当前系统时间-7天之前的归档日志

1
RMAN> delete archivelog all completed before 'sysdate-7';

sysdate-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库

1
RMAN> delete archivelog from time 'sysdate-7';	# 删除从7天前所有日志,慎用

不如上面的方法好用,不过用find的好处就是,可以在条件上,和exec子项上做很多操作,实现更复杂的功能

顺便说一下怎么更换归档日志的路径,我这个路径是忘记最后加个/。

查看归档路径位置明细

1
SQL> show parameter log_archive_dest_1

更改归档路径

1
SQL> alter system set log_archive_dest_1='location=/data/oracle/archivelog/';

scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
scope=both 内存和spfile都更改
不指定scope参数,等同于scope=both.

查看归档日志文件格式

1
SQL> show parameter log_archive_format

清理脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

set -e
set -x

export PATH
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
ORACLE_SID=orcl
table='v$archived_log'
deldir='/databak/shell'

sqlplus -silent "/ as sysdba" <<EOF > ${deldir}/deleteorclarch.sh
set heading off;
set pagesize 0;
set term off;
set feedback off;
set linesize 32767;
select 'rm -rf '||name from ${table} where DELETED='NO' and APPLIED='YES' and name!='standbydb';
exit;
EOF
sh ${deldir}/deleteorclarch.sh
rman target /<<END
crosscheck archivelog all;
delete noprompt expired archivelog all;
exit;
END
-------------    本文结束  感谢您的阅读    -------------