Как безопасно упаковывать архивные журналы повторного выполнения (LINUX)?

dbstalker, 24 июля

На этот вопрос исчерпывающе ответил Том Кайт здесь. Но у меня организован standby и к тому же из-за специфики эксплуатации серверов передача архивных файлов может происходить с опозданием. Поэтому технология упаковки архивных журналов другая.Упаковываться должны только те файлы, что уже накатаны на резервном сервере.

На выполнение запускаю (crontab) командный файл rman_del_arch.sh.

Его содержимое:

export ORACLE_SID=my_db
-- чистим базу данных от устаревшей информации по архивным журналам
/opt/oracle/product/10.2.0/db_1/bin/rman target / nocatalog cmdfile=/mnt/raid/oracle/backup/rman_del_arc.cmd LOG=/mnt/raid/oracle/backup/archivelogs_delete.log
-- удаляется командный файл за предыдущее выполнение
rm /mnt/raid/oracle/backup/rman_arc_tar.sh
-- Генерируется новый командный файл
/opt/oracle/product/10.2.0/db_1/bin/sqlplus /nolog @/mnt/raid/oracle/backup/rman_arc_tar.sql 
-- файл делается выполняемым
chmod 755 /mnt/raid/oracle/backup/rman_arc_tar.sh
--  выполняем сгенерированный командный файл: переносятся  архивные файлы, 
--которые уже накатаны на standby в созданную папку, упаковываются и сжимаются.
/mnt/raid/oracle/backup/rman_arc_tar.sh

Содержимое файла rman_del_arc.cmd :

CROSSCHECK ARCHIVELOG ALL;                   
delete noprompt expired archivelog all; 
exit     

Содержимое скрипта rman_arc_tar.sql:

conn sys/password@my_db as sysdba
SET SERVEROUTPUT ON
SET FEEDBACK OFF
SET LINESIZE 500
SET PAGESIZE 1000
SPOOL /mnt/raid/oracle/backup/rman_arc_tar.sh
DECLARE
    
CURSOR archive_applied IS
    select name from v$archived_log a where a.standby_dest='NO' and a.sequence#<(select max(sequence#) from v$archived_log where applied = 'YES') and a.name is not null order by 1;

v_mbackup_com    VARCHAR2(100) := 'mv ';
v_dest_loc       VARCHAR2(100) := '/mnt/raid/oracle/backup/'||to_char(sysdate,'yyyymmdd')||'/archived/';
 v_dest_loc0       VARCHAR2(100) := '/mnt/raid/oracle/backup/'||to_char(sysdate,'yyyymmdd');
BEGIN
    DBMS_Output.Disable;
    DBMS_Output.Enable(1000000);

    DBMS_Output.Put_Line('mkdir '||v_dest_loc0);
    DBMS_Output.Put_Line('mkdir '||v_dest_loc);
    FOR c_arc IN archive_applied LOOP
        DBMS_Output.Put_Line(v_mbackup_com|| c_arc.name||' '||v_dest_loc);
    END LOOP;
    DBMS_Output.Put_Line('tar -czf '||v_dest_loc||'archivelog.tar '||v_dest_loc||'*.* --remove-files'); 
END;
/
SPOOL off
SET FEEDBACK ON
EXIT

1 комментарий

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

Дачник
24 января 2011 г. в 23:23

Благодарю за позновательный
>>> эксплуатации серверов передача архивных файлов
для меня материал.

 

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

Я не спамер: введите суму 2+7



 

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

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

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

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


 
 

Бизнес форум

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

Телепрограмма
23 июня, 1 ответа
Турция
23 июня, 4 ответа
Выбор люстры
22 июня, 1 ответа