Настроил несколько standby серверов, после этого появилась проблема с удалением архивных логов Oracle.
По официальной документации делаем так:
- настроить архивирование логов с помощью rman
- настроить RETENTION POLICY
- включить mandatory для передачи архивных логов
- затем удалять логи с помощью
backup archivelog all delete input;
- на standby сервере можно использовать что-то вроде
delete archivelog all completed before 'sysdate';
или
delete archivelog until time ‘SYSDATE-10';
Этот вариант мне не подошел, пришлось удалять все логи вручную с помощью скриптов:
#!/bin/bash
echo "start ..."
. /home/oracle/scripts/oraenv.sh
export NLS_DATE_FORMAT="DD-MON-RRRR HH24:MI:SS"
export TODAY=`date '+%Y%m%d'`
export TIME=`date '+%H%M%S'`
echo "step 2 ..."
cd /home/oracle/scripts
rm /home/oracle/scripts/1.tmp
sqlplus -s / as sysdba << EOF
set heading off
set pages 0 echo off feedback off
spool /home/oracle/scripts/1.tmp
select max(sequence#)-10 from v\$archived_log where dest_id=5 and thread#=1 and standby_dest='YES' and applied ='YES';
spool off;
exit;
EOF
echo "step 3 ..."
seq1=`cat /home/oracle/scripts/1.tmp | awk 'NR==1{print $1}'`
echo "step 4 ..."
echo "seq1 = $seq1"
echo $seq1
echo "delete noprompt archivelog until sequence $seq1 thread 1;"
rman msglog /home/oracle/scripts/PRIMARY_ARC_DEL.${TODAY}_${TIME}.log << EOF
connect target /
run{
delete noprompt archivelog until sequence $seq1 thread 1;
}
EOF
echo "done ..."
exit
Комментариев нет:
Отправить комментарий