powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
15 сообщений из 15, страница 1 из 1
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420876
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Есть таблица со следующим DESC
Name Null Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
BODY BLOB


Ищу быстрый и надежный способ выгрузить данные из нее, чтобы потом загрузить в другую СУБД. В данном случае PostgreSQL.
Есть утилиты типа Ora2Pg, но там скорость выгрузки 2rec/s, а в таблице 5 000 000 записей и если так посчитать, то мне около месяца потребуется чтобы выгрузить.

А учитывая что я выгружаю с реплики, то вероятность появления сообщения
ORA-01555: snapshot too old
очень велика

Пробовал обращаться к этой таблице с удаленного сервера, но также скорость не велика.

Какие еще варианты можно попробовать?

Заранее большое спасибо!
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420883
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPol,

файл
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420900
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл это использовать EXP?
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420910
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPol,

это выгрузить содержимое без лобов в плоский файл + ссылка на файлы лобов, а потом загрузить через COPY и COPY BINARY или промежуточную функцию вроде такой
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420925
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не сложно, как можно выгрузить ссылку на файлы LOB-ов. Просто ID-шники у меня есть выгруженые, это быстро делается, а вот c BLOB...
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420942
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы попробовал пучёк сессий с разбивкой по ID через oracle hs dblink
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420947
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPol,

Ну и еще вопрос, как далеко по сети находятся источник-приемник?
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420948
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вариант, когда в одном датацентре, есть вариант, когда через океан.
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420954
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPolЕсть вариант, когда в одном датацентре, есть вариант, когда через океан.

Репликация, или разовая загрузка?
Если через океан, может потребоваться настройка сети (размер буферов сети)

Скорость по hs dblink у меня локально в сети на игрушечных серверах, у меня около 2Мбайт/сек
BLOB копировать не пробовал...
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39420996
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPolИщу быстрый и надежный способ выгрузить данные из нее, чтобы потом загрузить в другую СУБД. В данном случае PostgreSQL.
Есть утилиты типа Ora2Pg, но там скорость выгрузки 2rec/s, а в таблице 5 000 000 записей и если так посчитать, то мне около месяца потребуется чтобы выгрузить.

Не выгружать )))

В свое время делал свою утилиту для переливки данных из Oracle в PG online.
MakPolЕсть утилиты типа Ora2Pg, но там скорость выгрузки 2rec/s, а в таблице 5 000 000 записей и если так посчитать, то мне около месяца потребуется чтобы выгрузить.

Если с открытым кодом - искать ошибку и дописывать.

2 res/s это вообще не серьезно.

Т.е. утилита не подходит для решения Вашей задачи от слова совсем.

Или дописать/исправить утилиту, или найти другую или сделать свою.
envэто выгрузить содержимое без лобов в плоский файл + ссылка на файлы лобов, а потом загрузить через COPY и COPY BINARY

AFAIK это за гранью добра и зла

Автор топика не сказал, как у него будут храниться данные в PG/SQL, если в виде Binary, то COPY замечательно бинари данные подхватывает.

Блин. Не сохранился мой код по переливке ((( На работе остался ((( Но в принципе, там вообще ничего сложного. Я через банальный text формат команды copy данные переливал (БД около 200 Gb). Хотел в перейти на binary формат команды copy в Postgre SQL, но выйгрышь был бы слишком __незначительный__, что бы стоило с этим париться. А текстовый формат сopy - элементарный.

Т.ч. требуемая автором утилита - это около пары сотен строк кода на Java от силы.

Тут сложнее тестирование, т.к. у меня на __реальных__ данных иногда падало, по причине того, что в 200 Gb базе Oracle иногда какой-то мусор лежал (например какой-то не стандартный NaN для float значений). На исправление таких совершенно не явных косяков, выискивание отдельных строк с бредом в огромных таблицах - куча времени ушла.

В общем, стандартные проблемы для миграции. Когда вроде все совпадает, но в мелочах косяки вылазят (например разный подход к float в прикладной системе в Oracle и на PostgreSQL, к boolean и так далее)
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39421315
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред.
Чем посоветуете наиболее быстро из Oracle выгрузить?
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39421337
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MakPolМне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред.
Чем посоветуете наиболее быстро из Oracle выгрузить?

несколько сессий (оптимальное количество зависит от загрузки сервера/количества дисков/CPU), обработка диапазонов по ID
Вот даже практически готовая процедура от Бурлесона :)
тынц
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39421397
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без возможности создавать объекты даже не стоит наверное пробовать. Ну имея доступ на селект к таблице и все. На самом сервере ничего ставить и запускать не хотелось бы, в идеале сливать на другой сервер тупо к базе подключившись. Так не выйдет?
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39421432
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как
MakPolБез возможности создавать объекты даже не стоит наверное пробовать. Ну имея доступ на селект к таблице и все. На самом сервере ничего ставить и запускать не хотелось бы, в идеале сливать на другой сервер тупо к базе подключившись. Так не выйдет?

Совмещается с

MakPolМне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред.
Чем посоветуете наиболее быстро из Oracle выгрузить?


p.s. Для выгрузки файлов из oracle , все равно объект директорию создавать нужно.
Процедуру можно не создавать, обойтись pl/sql блоком


Если только select, что создай dblink из postgres
Connecting your PostgreSQL instance to an Oracle database и тяни
...
Рейтинг: 0 / 0
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
    #39422159
MakPol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dblink из postgres пробовал, но тоже скорость просто ужас. Может как-то действительно в файлы выгрузить а потом загрузить их? Ну каждая запись в файл с именем как id записи.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]