当前位置:数据库 > Oracle >>

oracle 10g rac standby归档日志自动删除脚本

oracle 10g rac standby归档日志自动删除脚本
 
[plain] 
#!/bin/bash  
export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1  
export ORACLE_SID=standby1  
export ARCHIVE_DIR=/log/archivelog  
export LOG_FILE=/home/oracle/logs/del_archive.log  
  
if [ ! $1 ]  
then  
     sn=200  
else  
     sn=$1  
fi  
  
echo "begin delete archivelog: `date`.......">>$LOG_FILE  
if [ `whoami` != 'oracle' ]  
then  
echo "Error: You must be oracle to execute.">>$LOG_FILE  
exit 99  
fi  
  
echo "delete archivelog thread 1">>$LOG_FILE  
del_seq=`ls -tr $ARCHIVE_DIR/|grep -v stdarch |grep arch_1 | head -1|cut -f3 -d_`  
$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <<XFF>/home/oracle/logs/tmp1.log  
set pagesize 0 feedback off verify off heading off echo off  
select max(sequence#) from v\$ARCHIVED_LOG where THREAD#=1 and APPLIED='YES';  
exit;  
XFF  
max_sn=`cat /home/oracle/logs/tmp1.log`  
rm /home/oracle/logs/tmp1.log -f  
max_sn=$(( $max_sn - $sn ))  
  
  
while [[ ${del_seq} -lt ${max_sn} ]]  
do  
  echo "${ARCHIVE_DIR}/arch_1_${del_seq}_794450242.arc">>$LOG_FILE  
  rm ${ARCHIVE_DIR}/arch_1_${del_seq}_794450242.arc -f  
  del_seq=$(( $del_seq + 1 ))  
done  
  
echo "delete archivelog thread 2">>$LOG_FILE  
del_seq=`ls -tr $ARCHIVE_DIR/|grep -v stdarch |grep arch_2 | head -1|cut -f3 -d_`  
$ORACLE_HOME/bin/sqlplus -silent "/ as sysdba" <<XFF>/home/oracle/logs/tmp2.log  
set pagesize 0 feedback off verify off heading off echo off  
select max(sequence#) from v\$ARCHIVED_LOG where THREAD#=2 and APPLIED='YES';  
exit;  
XFF  
max_sn=`cat /home/oracle/logs/tmp2.log`  
rm /home/oracle/logs/tmp2.log -f  
max_sn=$(( $max_sn - $sn ))  
  
  
while [[ ${del_seq} -lt ${max_sn} ]]  
do  
  echo "${ARCHIVE_DIR}/arch_2_${del_seq}_794450242.arc">>$LOG_FILE  
  rm ${ARCHIVE_DIR}/arch_2_${del_seq}_794450242.arc -f  
  del_seq=$(( $del_seq + 1 ))  
done  
  
echo "end delete archivelog: `date`....">>$LOG_FILE  
  
$ORACLE_HOME/bin/rman target / <<EOF>>$LOG_FILE  
crosscheck archivelog all;  
delete noprompt expired archivelog all;  
exit;  
EOF  
  
echo "....................................">>$LOG_FILE  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,