Удаление архивных файлов журнализации на физическом стендбае

dbstalker, 02 июля

У меня на сервере, где организован standby, места на диске не так уж и много. Поэтому очень важно удалять уже накатанные архивные файлы.

Решено было использовать вот такой командный файл (за основу взято обсуждение на sql.ru), который стартует с помощью cron:

rman_del_arch.sh:

rm /opt/oracle/backup/archivelogs_delete.cmd 
/opt/oracle/product/10.2.0/db_1/bin/sqlplus /nolog @/opt/oracle/backup/rman_del_arh.sql 
/opt/oracle/product/10.2.0/db_1/bin/rman target / nocatalog cmdfile=/opt/oracle/backup/archivelogs_delete.sh LOG=/opt/oracle/backup/archivelogs_delete.log

rman_del_arh.sql:

conn / as sysdba
set linesize 200;
set heading off;
SET SERVEROUTPUT ON
SET FEEDBACK OFF
spool /opt/oracle/backup/archivelogs_delete.sh
SELECT   CASE
            WHEN 'PHYSICAL STANDBY' = (SELECT database_role
                                         FROM v$database)
               THEN  'CROSSCHECK ARCHIVELOG ALL;' 
    ||chr(10)
    || 'allocate noprompt channel for maintenance device type disk;'
                    || chr(10)
                    || 'delete archivelog until sequence '
                    || MAX (sequence# -3)
                    || ' thread '
                    || thread#
                    || ';'
                    || chr(10)
                    || 'release channel;'
         END
    FROM v$archived_log
 WHERE applied = 'YES'
GROUP BY thread#;
spool off;
exit

В ходе выполнения нашего командного файла формируется файл archivelogs_delete.cmd , например, с таким содержимым:

CROSSCHECK ARCHIVELOG ALL;
allocate channel for maintenance device type disk;                       
delete archivelog until sequence 88966 thread 1;                         
release channel;   

Затем он выполняется с помощью RMAN.

Спасибо автору скрипта - все работает отлично.

Может кто-то решил эту проблему лучше?

4 комментария

Прокоментировать

StayAtHome
10 июля 2008 г. в 11:53

Обратите пожалуйста внимание на мнение Тома ;) по этому поводу:
http://pmo.parus.ua/ORAST/SUBSCRIBE/st8.html

dbstalker
10 июля 2008 г. в 12:23

Вы указали очень полезную ссылку.Том Кайт показывает как он упаковывает архивные файлы на сервере, который генерирует архивные файлы ( то есть не на STANDBY). Отличие состоит в следующем: на standby нужно проверять, накатился ли архивный файл, который собираемся удалять; на основной базе проверяется завершен ли процесс архивации файла, который упаковывается.

Mihail
6 марта 2009 г. в 09:59

Свои пять копеек :-)
Мне вот так удобнее, сам скрипт практически не изменен



#!/bin/sh
# Deleted applied archlogs on standby

[ -z "$1" ] && exit 1
ORACLE_SID="$1"
export ORACLE_SID

RES=0
TMPFILE=/tmp/${ORACLE_SID}_purge.$$.rman
[ -f ${TMPFILE} ] && rm -f ${TMPFILE}
sqlplus -s "/ as sysdba" >/dev/null <<SQL
conn / as sysdba
set linesize 200
set heading off
set feedback off
set verify off
set echo off
SET SERVEROUTPUT ON
WHENEVER OSERROR EXIT 9
WHENEVER SQLERROR EXIT SQL.SQLCODE
spool ${TMPFILE}
SELECT   CASE
        WHEN 'PHYSICAL STANDBY' = (SELECT database_role
                          FROM v\$database)
          THEN 'CROSSCHECK ARCHIVELOG ALL;'
  ||chr(10)
  || 'allocate channel for maintenance device type disk;'
            || chr(10)
            || '1 delete archivelog until sequence '
            || MAX (sequence# -3)
            || ' thread '
            || thread#
            || ';'
            || chr(10)
            || 'release channel;'
      END
  FROM v\$archived_log
WHERE applied = 'YES'
GROUP BY thread#;
spool off;
exit
SQL
RES=$?
[ "$RES" -eq "0" ] && rman target / @${TMPFILE}
RES=$?
rm -f ${TMPFILE}
exit $RES


Victor
19 октября 2012 г. в 11:56

Начиная с Oracle 10

1) На Primary и STANDBY надо установить недокументированный параметр _log_deletion_policy.
alter system set "_log_deletion_policy"='ALL' scope=spfile;

2) На STANDBY DB зайти в RMAN и выполнить настройку :
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

 

Новый комментарий

Я не спамер: введите суму 3+1



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Требуется бухгалтер
21 августа, 1 ответа