olegchir
@olegchir
performance engineer

Как правильно сделать бэкап из (PL/)SQL по сети?

Задача: Нужно делать бэкап данных БД (без схемы). Базку-источник изменять нельзя, т.е. это ридонли-бэкап.



Контекст: бэкап данных Оракла в произвольную БД по сети. Сейчас пишу интеграцию Оракла с Постгресом.



Ресурсы: только connection string, и возможность подключиться к базке с максимальными правами. Т.е. ssh до сервера нет, с жесткого файл с бэкапом по ssh не прочитаешь, и вообще на сервере может внезапно стоять венда.



Вопрос: Есть ли на таких условиях какой-нибудь быстрый проверенный способ стянуть данные? Может у кого завалялось готовое опенсорцное решение? %)



Слово «быстрый» тут присутствует потому, что просто селектать кусочками по N строк (через rownum или row_number()) и переправлять на целевую базку — излишне медленно.



Если у кого-то появится желание подискутировать на более глобальную тему — копирование из базки в базку по сети с оптимизацией по времени выполнения, вэллкам.



Спасибо
  • Вопрос задан
  • 5468 просмотров
Пригласить эксперта
Ответы на вопрос 3
@bdmalex
impdp,expdp — религия не позволяет использовать ???
Ответ написан
В таком случае, для бекапа exp.
А для переноса в postgre сулукты через odbc/jdbc. Тут мало что придумаешь.
Ответ написан
shane54
@shane54
Oracle DBA
Как уже упоминалось, ваш выбор — Data Pump. Причем, в вашем случае есть два разных способа его использования. Можно настроить DB Link между базами и использовать Data Pump в режиме Network Export/Import (с некоторыми ограничениями на типы колонок). А можно на базе получателе запускать expdp(.exe) и соединяться с исходной базой путем указания TNS-Alias'а. Также обратите внимание, для выборочного бекапа Data Pump поддерживает гибкие возможности настройки – можно экспортировать только определенные объекты (таблицы в вашем случае), а можно и определенные наборы строк таблиц (хотя, справедливости ради, и старый exp(.exe) поддерживал условие Where). Ну и самое сладкое — т.к. искомый вопрос звучал «Как правильно сделать бэкап из (PL/)SQL по сети?» – Data Pump может выполнять все свои функции (а также кучу всего другого, чего невозможно выполнить через утилиты expdp/impdp) посредством API. Все есть в документации (официальной и «выжимке»). Отмечу лишь, на Data Pump’е можно реализовать реальную бизнес-логику, он в этом смысле очень далеко ушел от рядового средства экспорта базы данных. Из минусов, правда – безумное количество багов, заставить его работать так как нужно, может потребоваться достаточно продолжительное время. К тому же, если нет доступа к Металинку, найти специфические патчи именно для него будет большая проблема.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы