Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 32 Next »

This article is in English Working with the DB Dumps

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

sudo -u oracle -i

У скрипта для работы с дампами БД существуют следующие варианты запуска:

  • export — снятие дампа. Дамп снимается в директорию для дампов, установленную в БД (как правило, это /var/oradata/dumps).
  • drop — очистка. Перед очисткой следует обязательно убедиться, что БД не является промышленной.
  • import — загрузка дампа в БД. Перед загрузкой дампа обязательно следует выполнить очистку. Дамп поднимается из директории для дампов, установленной в БД (как правило, это /var/oradata/dumps). После импортирования флаг «Признак промышленной базы данных» сбрасывается.

Дополнительные параметры вызова скрипта:

  • -i — название БД
  • -o — название схемы
  • -p — пароль пользователя AIS_NET
  • -f — название дампа (файла с дампом)
  • -s — отказ от предупреждающего сообщения при очистке БД

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

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

    /opt/hydra/oracle/scripts/dump.sh -i hydra -p password -f hydra_dump export
    
  2. Очистка hydra2:

    /opt/hydra/oracle/scripts/dump.sh -i hydra2 -p password drop
    
  3. Поднятие дампа на hydra2:

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

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

    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. Отсутствующие роли создаются в БД отдельным скриптом в завершающей части импорта.

     

Примечание

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

Примечание 2

При выполнении любого drop (даже отдельных схем) все открытые соединения с базой будут принудительно завершены

Примечание 3

После выполнения поднятия дампа необходимо проверить лог импорта (файл с суффиксом _impdp.log в каталоге с дампом) на наличие ошибок



Отменить процесс экспорта/импорта дампа можно с помощью CTRL-C и команды kill_job:

...
. . exported "AIS_NET"."SS_JOB_LOGS"                     635.2 MB 1550063 rows
. . exported "AIS_NET"."SD_PROCESSING_REQUESTS_T"        563.8 MB    7204 rows
. . exported "AIS_NET"."SD_MV_DOCUMENTS"                 479.7 MB 3247473 rows
^C
Export> kill_job
Are you sure you wish to stop this job ([yes]/no): yes

Возможная ошибка при импорте дампа

 Импорт дампа может завершиться следующей ошибкой:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SP2-0734: unknown command beginning "-- ======..." - rest of line ignored.
DECLARE
*
ERROR at line 1:
ORA-04063: package body "AIS_NET.SS_IMP_DUMP_PKG" has errors
ORA-06508: PL/SQL: could not find program unit being called:
"AIS_NET.SS_IMP_DUMP_PKG"
ORA-06512: at line 3
ORA-06512: at line 16

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

В таком случае необходимо проверить выполнилась ли первая часть импорта, а именно: impdp. Если с этим все хорошо, то скорее всего проблема с синонимами в исходных пакетах.
Проверить это можно в net_Imp_Dump.sql той версии Гидры, дамп которой импортировался. Проблемная часть может выглядеть следующим образом:

PROCEDURE RESET_JOB_STATES
IS
BEGIN
  UPDATE SS_JOBS
  SET    N_JOB_STATE_ID = CONST.JOB_STATE_Waiting
  WHERE  N_JOB_STATE_ID IN (CONST.JOB_STATE_Running, CONST.JOB_STATE_ToStart)
  AND    C_FL_TEMPLATE = 'N'
  AND    C_ACTIVE      = 'Y';
END RESET_JOB_STATES;

Ее необходимо исправить следующим образом (Заменить CONST на SS_CONTSTANTS_PKG_S)

PROCEDURE RESET_JOB_STATES
IS
BEGIN
  UPDATE SS_JOBS
  SET    N_JOB_STATE_ID = SS_CONTSTANTS_PKG_S.JOB_STATE_Waiting
  WHERE  N_JOB_STATE_ID IN (SS_CONTSTANTS_PKG_S.JOB_STATE_Running, SS_CONTSTANTS_PKG_S.JOB_STATE_ToStart)
  AND    C_FL_TEMPLATE = 'N'
  AND    C_ACTIVE      = 'Y';
END RESET_JOB_STATES;

После этого прогоняем исправленный пакет на БД, на которой импортировался дамп. Сделать это можно прогнав этот пакет в SQL Developer, или создав файл net_Imp_Dump.sql с исправленным скриптом, после чего прогнать его под Oracle:

#Использовать вместо hydra2 наименование того инстанса, на котором импортировался дамп
sudo -u oracle -i sqlplus ais_net@hydra2 @net_Imp_Dump.sql

После этого осталось завершить работу используемого ранее dump.sh, для этого необходимо прогнать следующе SQL скрипты:

#Использовать вместо hydra2 наименование того инстанса, на котором импортировался дамп
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Alter_Dump.sql;
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Activate_After_Logon_Trigger.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Remove_Job_Queue_Processes.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/ReInit_Consts.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Setup_Grants.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Unset_Prom_DB_Flag.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Drop_Deny_Logon_Trigger.sql
sudo -u oracle -i sqlplus ais_net@hydra2 @/opt/hydra/oracle/sql/Activate_Before_DDL_Trigger.sql

Ранее эта проблема возникала в AIS-3790 и AIS-6293, на проверку этого пакета создана внутренняя заявка:  AIS-8010 - Getting issue details... STATUS

 

  • No labels