crosscheck archivelog all; —>校验日志的可用性
list expired archivelog all; —>列出所有失效的归档日志
delete archivelog until sequence 16; —>删除log sequence为16及16之前的所有归档日志
delete archivelog all completed before ‘sysdate-7’; —>删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志
delete archivelog all completed before ‘sysdate – 1’; —>同上,1天以前的
delete archivelog from time ‘sysdate-1’; —>注意这个命令,删除系统时间1天以内到现在的归档日志
delete noprompt archivelog all completed before ‘sysdate’; —>该命令清除所有的归档日志
delete noprompt archivelog all; —>同上一命令
范例:
robin@SZDB:~> export ORACLE_SID=GOBO1
robin@SZDB:~> rman target /
Recovery Manager: Release 10.2.0.3.0 – Production on Thu Jul 11 17:07:00 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: GOBO1 (DBID=733951103)
RMAN> host;
robin@SZDB:~> cd /u02/database/GOBO1/archive/
robin@SZDB:/u02/database/GOBO1/archive> ls
arch_816906485_1_10.arc arch_816906485_1_12.arc
arch_816906485_1_11.arc arch_816906485_1_13.arc
…………
robin@SZDB:/u02/database/GOBO1/archive> rm -rf arch_816906485_1_10.arc arch_816906485_1_11.arc arch_816906485_1_12.arc
robin@SZDB:/u02/database/GOBO1/archive> exit;
exit
host command complete
RMAN> crosscheck archivelog all;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_9.arc recid=2085 stamp=817211151
validation failed for archived log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_10.arc recid=2086 stamp=817250793
…………..
validation succeeded for archived log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_90.arc recid=2166 stamp=820458049
Crosschecked 83 objects
RMAN> list expired archivelog all;
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2086 1 10 X 20130604 11:05:51 /u02/database/GOBO1/archive/arch_816906485_1_10.arc
2087 1 11 X 20130604 22:06:17 /u02/database/GOBO1/archive/arch_816906485_1_11.arc
2088 1 12 X 20130605 19:30:53 /u02/database/GOBO1/archive/arch_816906485_1_12.arc
RMAN> delete archivelog until sequence 16;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2084 1 8 A 20130604 09:53:17 /u02/database/GOBO1/archive/arch_816906485_1_8.arc
……………..
2092 1 16 A 20130607 22:03:23 /u02/database/GOBO1/archive/arch_816906485_1_16.arc
Do you really want to delete the above objects (enter YES or NO)? yes
……………
deleted archive log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_16.arc recid=2092 stamp=817516861
Deleted 9 objects
RMAN> delete archivelog all completed before ‘sysdate-7’;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2093 1 17 A 20130608 00:01:00 /u02/database/GOBO1/archive/arch_816906485_1_17.arc
2094 1 18 A 20130608 18:00:17 /u02/database/GOBO1/archive/arch_816906485_1_18.arc
………..
deleted archive log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_72.arc recid=2148 stamp=819847035
Deleted 56 objects
RMAN> list copy of database archivelog all;
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2149 1 73 A 20130703 23:17:13 /u02/database/GOBO1/archive/arch_816906485_1_73.arc
2150 1 74 A 20130704 22:00:19 /u02/database/GOBO1/archive/arch_816906485_1_74.arc
2151 1 75 A 20130704 22:04:40 /u02/database/GOBO1/archive/arch_816906485_1_75.arc
……………
2164 1 88 A 20130709 23:19:34 /u02/database/GOBO1/archive/arch_816906485_1_88.arc
2165 1 89 A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc
2166 1 90 A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arc
RMAN> delete archivelog from time ‘sysdate-1’;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2165 1 89 A 20130710 13:00:34 /u02/database/GOBO1/archive/arch_816906485_1_89.arc
2166 1 90 A 20130710 22:02:44 /u02/database/GOBO1/archive/arch_816906485_1_90.arc
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archive log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_89.arc recid=2165 stamp=820447373
deleted archive log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_90.arc recid=2166 stamp=820458049
Deleted 2 objects
RMAN> delete archivelog all completed before ‘sysdate – 1’;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2149 1 73 A 20130703 23:17:13 /u02/database/GOBO1/archive/arch_816906485_1_73.arc
…………………..
2164 1 88 A 20130709 23:19:34 /u02/database/GOBO1/archive/arch_816906485_1_88.arc
Do you really want to delete the above objects (enter YES or NO)? yes
…………….
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_88.arc recid=2164 stamp=820414835
Deleted 16 objects
RMAN> sql ” alter system archive log current”;
sql statement: alter system archive log current
RMAN> list copy of archivelog all;
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2167 1 91 A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arc
RMAN> delete noprompt archivelog all completed before ‘sysdate’;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=1075 devtype=DISK
List of Archived Log Copies
Key Thrd Seq S Low Time Name
2167 1 91 A 20130711 01:00:48 /u02/database/GOBO1/archive/arch_816906485_1_91.arc
deleted archive log
archive log filename=/u02/database/GOBO1/archive/arch_816906485_1_91.arc recid=2167 stamp=820517964
Deleted 1 objects
脚本:
对于RAC环境或者ASM需要清除archive,使用shell脚本调用RMAN是比较妥当的方式
其次,如果你的archive位于闪回区,制定合理的保留策略,也可以让Oracle自动老化无用的归档日志
robin@SZDB:~/dba_scripts/custom/bin> more clean_arch.sh
+——————————————————-+
+ Clean archived log as specified time |
+ Author : Robinson |
+ Blog : http://blog.csdn.net/robinson_0612 |
+ Usage : |
+ clean_arch.sh $ORACLE_SID |
+——————————————————-+
#
!/bin/bash
——————–
Define variable
——————–
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
if [ -z “${1}” ];then
echo “Usage: “
echo ” basename $0
ORACLE_SID”
exit 1
fi
ORACLE_SID=$1; export ORACLE_SID
$ORACLE_HOME/bin/rman log=/users/robin/log/rman.log <<EOF
connect target /
run{
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before ‘sysdate – 1’;
}
exit;
EOF
exit