вторник, 13 мая 2014 г.

Автоматизация: Настраиваем бекап Oracle

Привожу скрипт для автоматизации резервного копирования схем Oracle.



Для начала создадим файл oracle_backup.cfg. Этот файл будет содержать список схем для резервного копирования. Содержимое файла:
user1
user2
#user3
Первые две схемы подлежат копированию, третья игнорируется.
В дальнейшем можно включать нужные схемы и выключать ненужные с помощью "#"

#/bin/bash

oracle_log=oracle_backup.log
ora_date=`date +'%y%m%d'`

grep -v "#" "oracle_backup.cfg" | sed '/^$/d' | while read line; do
# выбираем все не закомментированные схемы из конф файла и удаляем пустые строки.
    LF="$line"_$ora_date".log"
    exp $ora_user/$ora_pass@$oracle_sid owner=$line  recordlength=65535 buffer=3500000 file="$line"_$ora_date".dat" log=$LF
    # $ora_user/$ora_pass@$oracle_sid - параметры sysdba, можно изменить на текущего 
    # пользователя при желании.

# обработка ошибок:
    if [ ! -f "$LF" ] ;then
        # нет лог файла -  считаем, что экспорт не удался
        echo "unknown error while trying to backup $line " >> $oracle_log
    elif [ `grep -i error $LF | wc -l` -ge "1" ] ; then 
       # проверка лога на наличие сообщений Error 
       # ожидаем:
       # Export terminated successfully with warnings.
        subj_error_flag="ERROR"
        echo -n "$line : "  >>$oracle_log
        grep "terminated" $LF >>$oracle_log 
    else
        # если скрипт еще не прервался, то считаем экспорт успешным. Выбираем из лога все 
        # сообщения "terminated". Ожидается что сюда попадут сообщения:
        # Export terminated successfully without warnings. 
        echo -n "$line : "  >>$oracle_log
        grep "terminated" $LF >>$oracle_log 
    fi
done

ls *.dat | 'xargs' -P 10 pigz -f -9 -n -5
# Архивируем дампы, запускается 10 экземпляров pigz с максимальной компрессией.


Если статья была вам полезна - кликните на баннер или кнопку Donate :)
Яндекс.Метрика

Популярные сообщения