Всем доброго времени суток.
Подскажите пожалуйста рабочий инструмент, позволяющий создать полностью рабочий бэкап с БД А и перенести её на БД B. Как например создание резервных копий в других СУБД (MS Sql, PostgreSQL, MySql). Существует ли вообще такой инструмент, позволяющий быстро и просто переносить БД между хостами (возможно даже на разных ОС, с разными именами инстансов и т.д.), вот просто взять 1 файл и с БД А и на БД B "сказать" - вот тебе файл, работай.
Рассматриваются все возможные варианты (платные в том числе).
Гуглом пользовались?
Оракл - одна из самых популярных баз данных в мире. О бэкапах оракла написано на каждом заборе.
Штатные средства в оракле все позволяют делать.
Если именно бэкап, то тут однозначно RMAN. Если нужны дампы - то либо через дата-пампы (expdp/impdb), либо, если версии oracle старенькие, утилиты экспорта и импорта (exp/imp)
По дампам - есть некая проблема: при экспорте часть значений (форейнкеи, id некоторых сущностей), приобретают значение null и уже при импорте получают новые id, о которых соответственно "никто ничего не знает", тем самым по сути получаем нерабочую базу, но с набором данных.
По RMAN, тут больше вопросов, чем ответов. Если я правильно понимаю, для работы с бэкапами, полученными через RMAN, на целевом хосте необходимо воссоздать конфиг исходного хоста (порты, sid, service name и т.д), что имхо не есть бэкап, с таким же успехом можно просто data-файлы копировать.
Vellis-msk, я потому и акцентировал, что вам нужно. Бэкапы через RMAN позволяют восстановить пару строк, измененных или удаленных ранее, в таблице из нескольких десятков миллионов записей за относительно короткое время. Если вам просто схему с одного сервера на другой скинуть - то дампов вполне достаточно.
при экспорте часть значений (форейнкеи, id некоторых сущностей), приобретают значение null и уже при импорте получают новые id, о которых соответственно "никто ничего не знает", тем самым по сути получаем нерабочую базу, но с набором данных
Я так понимаю, у вам ID проставляются через сиквенс, который тригер на before insert щелкает?.. Если так, то поправьте свой тригер, добавив проверку на null, что-то вроде
IF :new.id IS NOT NULL THEN
SELECT sq_name.NEXTVAL INTO :new.id FROM dual;
ENDIF;
Если id генерятся иначе - надо смотреть код... В крайнем случае, вы можете сделать две операции импорта. При первой сделать "проливку" схемы данных, тем самым создадутся все объекты БД, отключить все тригеры, и вторым импортом сделать загрузку непосредственно данных в таблицы.
В пределах ОС одного семейства (типа) просто "холодный" бекап - копирование файлов БД.
с созданием соответствующего init файла и возможно пересозданием control файлов (если пути до базы различаются), так же настроить listener для прослушки соединений на БД, при этом сами СУБД должны быть полностью идентичны (одна и та же версия, разрядность и т.п.)
PS: возможно не самый быстрый способ, но самый простой.
PPS: если переносить между разными версиями СУБД и ОС, то имхо , только exp/imp
можно еще по линкам данные перекачивать или велосипедные файловые репликации (но это между рабочими БД со структурой данных)...