...
Для работы с дампами БД следует пользоваться специальным скриптом dump.sh
, который располагается, как правило, в директории /opt/hydra/oracle/scripts
. Скрипт обязательно следует вызвать под пользователем oracle с инициализированным окружением. Инициализировать окружение для пользователя oracle с помощью sudo можно выполнить следующим образом:
...
language | bash |
---|
...
устанавливается при помощи deb пакета hydra-utils.
Этот пакет совместим с операционными системами Debian 9
и ниже. Для операционной системы Oracle Linux необходимо использовать отдельный Docker-
контейнер.
У скрипта для работы с дампами БД существуют следующие варианты запуска:
- export — снятие дампа. Дамп снимается в директорию для дампов, установленную в БД (как правило, это
/var/oradata/dumps
). - drop — очистка. Перед очисткой следует обязательно убедиться, что БД не является промышленной.
- import — загрузка дампа в БД. Перед загрузкой дампа обязательно следует выполнить очистку. Дамп поднимается из директории для дампов, установленной в БД (как правило, это
/var/oradata/dumps
). После импортирования флаг «Признак промышленной базы данных» сбрасывается.
...
- -i — название БД
- -o — название схемы
- -p — пароль пользователя AIS_NET
- -f — название дампа (файла с дампом)
- -s — отказ от предупреждающего сообщения при очистке БД
Пример использования dump.sh при нативной установке hydra-utils
При установке hydra-utils скрипт снятия дампов устанавливаются в следующую директорию - /opt/hydra/oracle/scripts
. Скрипт обязательно следует вызвать под пользователем oracle с инициализированным окружением. Инициализировать окружение для пользователя oracle с помощью sudo можно выполнить следующим образом:
Code Block | ||
---|---|---|
| ||
sudo -u oracle -i |
Пример вызова скрипта для переноса дампа БД с hydra на hydra2:
Снятие дампа с hydra:
Code Block language bash /opt/hydra/oracle/scripts/dump.sh -i hydra -p password -f hydra_dump export
Очистка hydra2:
Code Block language bash /opt/hydra/oracle/scripts/dump.sh -i hydra2 -p password drop
Поднятие дампа на hydra2:
Code Block language bash /opt/hydra/oracle/scripts/dump.sh -i hydra2 -p password -f hydra_dump import
Во время импорта дампа в новую базу возможны ошибки следующего вида:
Code Block language text Failing sql is: GRANT SELECT ON "AIS_NET"."SR_V_GOOD_SERVS" TO "NET_GOODS" ORA-39083: Object type OBJECT_GRANT failed to create with error: ORA-01917: user or role 'NET_GOODS' does not exist
Эти ошибки не являются критичными, т.к. скрипт экспорта выгружает только схему AIS_NET. Отсутствующие роли создаются в БД отдельным скриптом в завершающей части импорта.
Работа с дампами при помощи hydra-utils в Docker
Использование контейнера Docker
возможно только для операционных систем с ядром Linux
версии 4 или выше.
Алгоритм установки hydra-utils
следующий:
Создать директории для конфигурационных файлов
Code Block language text sudo mkdir /etc/hydra/hydra-utils
Создать
docker-compose.yml
в новой директории:
Для СУБД Oracle 11 необходимо использовать следующийdocker-compose.yml
:Code Block language bash title /etc/hydra/hydra-utils/docker-compose.yml version: '3.7' services: hydra-utils: container_name: hydra-utils image: docker.dl.latera.ru:5000/hydra-utils:11g network_mode: "host" environment: - TZ=${TZ} - ORACLE_HOME=${ORACLE_HOME} volumes: - /u01/app/oracle/product/11g:/u01/app/oracle/product/11g:ro - /u01/app/oracle/product/11g/network/admin/tnsnames.ora:/app/tnsnames.ora:ro
Для Oracle 19:Code Block language bash title /etc/hydra/hydra-utils/docker-compose.yml version: '3.7' services: hydra-utils: container_name: hydra-utils image: docker.dl.latera.ru:5000/hydra-utils:latest network_mode: "host" environment: - TZ=${TZ} volumes: - /u01/app/oracle/product/19c/network/admin/tnsnames.ora:/app/tnsnames.ora
TZ
- временная зона сервера. Значение переменной окружения может быть задано вручную, либо в/etc/environment
. Например:Code Block language bash title Значение переменной TZ TZ="Asia/Krasnoyarsk"
ORACLE_HOME
- каталог с установленным Oracle. Задано в/etc/environment
.После создания файлов конфигурации необходимо перейти в директорию и установить образ:
Code Block language bash title Установка образа контейнера cd /etc/hydra/hydra-utils/ sudo docker-compose pull
Пример вызова скриптов из контейнера для переноса дампа БД с hydra
на hydra2
:
Снятие дампа с hydra:
Code Block language bash sudo docker-compose -f /etc/hydra/hydra-utils/docker-compose.yml run hydra-utils dump.sh -i hydra -p password -f hydra_dump export
Очистка hydra2:
Code Block language bash sudo docker-compose -f /etc/hydra/hydra-utils/docker-compose.yml run hydra-utils dump.sh -i hydra2 -p password drop
Поднятие дампа на hydra2:
Code Block language bash sudo docker-compose -f /etc/hydra/hydra-utils/docker-compose.yml run hydra-utils dump.sh -i hydra2 -p password -f hydra_dump import
Note | ||
---|---|---|
| ||
Так как процедура снятия резервных копий с помощью утилиты expdp (скрипт |
...