Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для работы с дампами БД следует пользоваться специальным скриптом dump.sh, который располагается, как правило, в директории /opt/hydra/oracle/scripts. Скрипт обязательно следует вызвать под пользователем oracle с инициализированным окружением. Инициализировать окружение для пользователя oracle с помощью sudo можно выполнить следующим образом:

...

languagebash

...

устанавливается при помощи 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
languagebash
sudo -u oracle -i

Пример вызова скрипта для переноса дампа БД с hydra на hydra2:

  1. Снятие дампа с hydra:

    Code Block
    languagebash
    /opt/hydra/oracle/scripts/dump.sh -i hydra -p password -f hydra_dump export
    


  2. Очистка hydra2:

    Code Block
    languagebash
    /opt/hydra/oracle/scripts/dump.sh -i hydra2 -p password drop
    


  3. Поднятие дампа на hydra2:

    Code Block
    languagebash
    /opt/hydra/oracle/scripts/dump.sh -i hydra2 -p password -f hydra_dump import

    Во время импорта дампа в новую базу возможны ошибки следующего вида:

    Code Block
    languagetext
    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 следующий:

  1. Создать директории для конфигурационных файлов

    Code Block
    languagetext
    sudo mkdir /etc/hydra/hydra-utils


  2. Создать docker-compose.yml в новой директории:
    Для СУБД Oracle 11 необходимо использовать следующий docker-compose.yml:

    Code Block
    languagebash
    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
    languagebash
    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
    languagebash
    titleЗначение переменной TZ
    TZ="Asia/Krasnoyarsk"

    ORACLE_HOME - каталог с установленным Oracle. Задано в /etc/environment.

  3. После создания файлов конфигурации необходимо перейти в директорию и установить образ:

    Code Block
    languagebash
    titleУстановка образа контейнера
    cd /etc/hydra/hydra-utils/
    sudo docker-compose pull


Пример вызова скриптов из контейнера для переноса дампа БД с hydra на hydra2:

  1. Снятие дампа с hydra:

    Code Block
    languagebash
    sudo docker-compose -f /etc/hydra/hydra-utils/docker-compose.yml run hydra-utils dump.sh -i hydra -p password -f hydra_dump export
    


  2. Очистка hydra2:

    Code Block
    languagebash
    sudo docker-compose -f /etc/hydra/hydra-utils/docker-compose.yml run hydra-utils dump.sh -i hydra2 -p password drop
    


  3. Поднятие дампа на hydra2:

    Code Block
    languagebash
    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
titleПримечание

Так как процедура снятия резервных копий с помощью утилиты expdp (скрипт dump.sh) является достаточно ресурсоемкой, снимать резервные копии БД рекомендуется в ночное время в часы наименьшей нагрузки на сервер (как правило, с 2-х до 4-х часов ночи).

...