Привожу скрипт для автоматизации резервного копирования схем Oracle.
Для начала создадим файл oracle_backup.cfg. Этот файл будет содержать список схем для резервного копирования. Содержимое файла:
В дальнейшем можно включать нужные схемы и выключать ненужные с помощью "#"
Для начала создадим файл 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 :)
Комментариев нет:
Отправить комментарий