Oracle. Импорт схем с исключением больших таблиц
Восстановление дампа размером 98 Гб занимает примерно 233 минут (03:53). Довольно длительное время, а с учетом того что схемы ресторятся часто и при этом содержат практически одни и те же данные (дампы за разные даты), то получаем как минимум 2 проблемы:
- Большой объем схемы, который занимает табличное пространство и дисковое пространство
- Грустные сотрудники 😞, которые ожидают окончания рестора БД
С учетом, что рестор выполняется скриптом (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-скрпитов, которые используются для экранирования символов кавычек и закрывающей скобки.
Комментарии
Отправить комментарий