К основному контенту

Автоматическое обновление snaphot standby

Задача: раз в сутки обновлять snapshot standby базу до актуального состояния.
Делается это путем перевода в physycal standby и наката накопленных за день архивов. После завершения обновления база снова переключается в snapshot standby.

Для Windows:

@echo off
set ORACLE_SID=axtest
set ORACLE_HOME=G:\oracle\ora11204
set prim_db=prd
set std_db=std
set cred=sys/p@S$w0Rd

echo ####################################################################
echo Refresh started at %time% 
echo .
echo ####################################################################

set role = PHYSICAL
%ORACLE_HOME%\bin\dgmgrl %cred%@%prim_db% "convert database %std_db% to %role% standby"

echo  Now we are waiting for apply to finish. It'll take some time.
echo ...

:wait 
ping 127.0.0.1 -n 30 >null
%ORACLE_HOME%\bin\dgmgrl %cred%@%prd% "show database %std%" > log\lag.tmp

for /f "tokens=3 delims= " %%i in ('find "Transport Lag" log\lag.tmp') do set tlag=%%i
if %tlag% neq 0 goto :wait

for /f "tokens=3 delims= " %%i in ('find "Apply Lag" log\lag.tmp') do set alag=%%i
if %alag% neq 0 goto :wait

echo Redo apply finished. Converting back to snapshot standby.

%ORACLE_HOME%\bin\dgmgrl %cred%@%prim_db% "convert database %std_db% to %role% standby"

echo ####################################################################
echo Refresh finished at %time%
echo .
echo ####################################################################

Для Linux:

# ENV part
ORACLE_SID=axtest
ORAENV_ASK=NO
. oraenv
export primary=axprd
export standby=axstd
export cred=sys/p@s$w0Rd

# Functions
function std_convert() {
mode=$1
dgmgrl $cred@$primary "convert database $standby to $mode standby"
}

function lag_check() {
alag=$(dgmgrl $cred@$primary "show database $standby" | grep "Apply Lag" | awk -F" " '{print $3}')
tlag=$(dgmgrl $cred@$primary "show database $standby" | grep "Transport Lag" | awk -F" " '{print $3}')
lag=$(($alag+$tlag))
echo $lag
}

{ echo Refresh started at; date; } | tr "\n" " "

# Actual refresh.
std_convert "physycal"

echo Waiting for apply to finish. This may take hours...
# что то тут не сработал выход из цикла (to be fixed)
while [ $(lag_check) -ge 0 ];do
        lag_check
        sleep 30
done

dgmgrl $cred@$primary "show database $standby" | grep "Lag"

std_convert "snapshot"


{ echo Refresh finished at; date; } | tr "\n" " "

Комментарии

Популярные сообщения из этого блога

Установка и настройка pgAgent(планировщика заданий PostgreSQL)

Установка pgAgent Последняя версия скрипта для установки агента  тут . Перенести инструкцию по агенту в отдельную тему. 1. Создать пользователя ОС, и сделать ему домашний каталог: useradd -s /bin/false -r -M pgagent mkdir /home/pgagent 2. Установить и настроить демон: yum install pgagent_94 При наличии ошибок вида (была на Oracle Linux 6.8) Error: Package: pgagent_94-3.4.0-1.rhel6.x86_64 (pgdg94)            Requires: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) Нужно установить EPEL systemctl enable pgagent_94 chown pgagent:pgagent /var/log/pgagent_94.log 3. Установить схему агента в базе: sudo -u postgres psql -f /usr/share/pgagent_94-3.4.0/pgagent.sql postgres 4. Создать файл паролей для подключения агента к базе. vi /home/pgagent/.pgpass localhost:5432:*:postgres:postgres chown pgagent.pgagent /home/pgagent -R chmod 600 /home/pagent/.pgpass 5. Запустить и проверить работу агента systemctl start pgagent...

Включение логирования для Haproxy

Изначально логирование в syslog в HaProxy отключено. Ниже пример настройки логирования для ОС Centos 7. Настройка: Добавить строку  log 127.0.0.1 local2 в секцию global файла /etc/haproxy/haproxy.cfg Раскомментировать $ModLoad imudp и $UDPServerRun 514 в файле  /etc/rsyslog.conf Создать файл  /etc/rsyslog.d/haproxy.conf со следующим содержимым:  local2.* /var/log/haproxy.log Перезапустить rsyslog и haproxy.

Установка PL/Java для PostgreSQL 9.4

Предварительные требования:  1. Компилятор C. Как правило имеется в виду gcc и g++ gcc  --version на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc) 2. JAVA. Убедиться, что  javac  -version работает  3. PostgreSQL установлен и  работает pg_config Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были. 4. компилятор Maven mvn --version Установка git clone https://github.com/tada/pljava.git или git clone ssh://git@github.com/tada/pljava.git Заходим в директорию pljava и выполняем mvn clean install В результате должны получить: [INFO] PostgreSQL PL/Java ................................ SUCCESS [INFO] PL/Java API ....................................... SUCCESS [INFO] PL/Java backend Java code...