Oracle. Импорт схем с исключением больших таблиц

Восстановление дампа размером 98 Гб занимает примерно 233 минут (03:53). Довольно длительное время, а с учетом того что схемы ресторятся часто и при этом содержат практически одни и те же данные (дампы за разные даты), то получаем как минимум 2 проблемы:

  1. Большой объем схемы, который занимает табличное пространство и дисковое пространство
  2. Грустные сотрудники 😞, которые ожидают окончания рестора БД
В связи с этим, было решено восстанавливать схемы исключая из них часть таблиц, особенно больших размеров.

Логично, что данное решение имеет недостаток - в случае, если понадобятся данные из исключенной таблицы, то придется выполнять доимпорт схемы. Но это не страшно, дабы эти данные бывают нужны в 1 из 10 случаев.

После исключения таблиц - время рестора уменьшилось до 100 минут (01:40). Довольно хороший результат 💪

С учетом, что рестор выполняется скриптом (sh), то в коде используется следующая команда:

# Импорт таблиц за исключением некоторых, чтобы ускорить рестор (EXCLUDE)
$CMD $SYSUSER/$SYSPSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=LOG_DIR:$LOGFILE REMAP_TABLESPACE=$FROM_TABLESPACE:$TO_TABLESPACE parallel=3 EXCLUDE=TABLE:\"IN\(\'SOFITDOCBODY\',\'DIGEST\',\'SIGNEXPORTLOG\', \'DIGESTSIGN\',\'HISTORYMODIFY\',\'TASKJOURNAL\',\'ANYDATA\'\,\'DATAOBJECTCHANGELOG\',\'DOCJOURNAL\',\'REFJOURNAL\',\'DOCEVERRLOG\',\'DOCATTACH\',\'REFATTACH\',\'REFATTACHTYPES\',\'MSG\',\'SYSEVENT\'\)\"

# После импорта БД, создаем пустые таблицы по тем что пропустили (INCLUDE)
$CMD $SYSUSER/$SYSPSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=LOG_DIR:$LOGFILE2 REMAP_TABLESPACE=$FROM_TABLESPACE:$TO_TABLESPACE parallel=3 CONTENT=METADATA_ONLY REMAP_TABLESPACE=ANYDATA_TBS:USERS INCLUDE=TABLE:\"IN\(\'SOFITDOCBODY\',\'DIGEST\',\'SIGNEXPORTLOG\', \'DIGESTSIGN\',\'HISTORYMODIFY\',\'TASKJOURNAL\',\'ANYDATA\'\,\'DATAOBJECTCHANGELOG\',\'DOCJOURNAL\',\'REFJOURNAL\',\'DOCEVERRLOG\',\'DOCATTACH\',\'REFATTACH\',\'REFATTACHTYPES\',\'MSG\',\'SYSEVENT\'\)\"

*Использование обратного слеша (\) обусловлено спецификой sh-скрпитов, которые используются для экранирования символов кавычек и закрывающей скобки.



Комментарии

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

Linux (РедОС). Сброс пароля

TRUNCATE / DELETE / DROP или как очистить таблицу

КБК. КВФО - Код вида финансового обеспечения (деятельности)

SQL Error [53200]: ОШИБКА: нехватка разделяемой памяти Подсказка: Возможно, следует увеличить параметр max_locks_per_transaction

РедОС. Подключение к сетевой папке