Есть задача скопировать базу данных с хоста fox.company.org на хост wolf.company.org. К каждому хосту через SAN подключены 4-е драйва ленточной библиотеки. Т.е каждый из хостов может оперировать ими как локальными. На каждом хосте установлен DataProtector MediaAgent, DiskAgent, Oracle Integration. Оба хоста входят в селл dp-cm.company.org.

Если запустить Full Backup оракла на хосте fox.company,org и попытаться его восстановить на хосте wolf.company.org не меняя настроек, то DataProtector будет использовать те же драйвы и через те же пути, которые использовались для бэкапа. Т.е. MediaAgent на хосте fox.company.org будет читать данные с локального SAN-attached драйва и копировать их по IP сети на хост wolf.company.org. Такая схема работы не всегда приемлима, поскольку создает дополнительную нагрузку на сеть и на хост fox.company.org.

Чтобы избежать подобной схемы работы DataProtector я применяю следующий метод. После прохождения Full Backup’а я отключаю опцию “MultiPath Device” в свойствах драйва через интерфейс датапротектора (Devices & Media -> MSL -> Drives -> msl_drive1 -> Properties -> MultiPath Device) и указываю хост, через который подключен драйв “wolf.company.org”. Таким образом с точки зрения DataProtector первый драйв будет связан только с одним хостом и будет использоваться только один MediaAgent на хосте wolf.company.org.

Далее нужно подправить базу данных DataProtector и подменить драйвы, которые использовались для бэкапа. Для этого нужно воспользоваться командами omnirpt и omnidbutil.
Сначала делаем выборку сессий, которые состоялись во время FullBackup’a базы данных:
omnirpt -report list_sessions -timeframe 48 48 -datalist "Oracle8 oraback" -tab | grep -v "^#" |awk '{print $26}' > /tmp/session_list
В данном случае будет сделана выборка сессий за последние 48 часов по бэкап спецификации Oracle8 oraback. Полученный список будет сохранен в файл /tmp/session_list.

Теперь нужно обработать каждую сессию:
for f in `cat /tmp/session_list`; do omnidbutil -changebdev msl_drive2 msl_drive1 -session $f; done
Если для бэкапа использовался не только драйв msl_drive2, то нужно повторить процедуру для каждого драйва. После этих манипуляций в базе DataProtector’а не останется упоминаний о том, что бэкап проходил по каким-либо драйвам кроме msl_drive1. А этот драйв я уже сконфигурировал таким образом, что единственным путем для него будет хост wolf.company.org.

Запускаем восстановление базы данных. После окончания восстановления не забываем включить MultiPath Device в свойствах драйва в DataProtector’е