|
|
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Есть таблица со следующим DESC Name Null Type ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(38) BODY BLOB Ищу быстрый и надежный способ выгрузить данные из нее, чтобы потом загрузить в другую СУБД. В данном случае PostgreSQL. Есть утилиты типа Ora2Pg, но там скорость выгрузки 2rec/s, а в таблице 5 000 000 записей и если так посчитать, то мне около месяца потребуется чтобы выгрузить. А учитывая что я выгружаю с реплики, то вероятность появления сообщения ORA-01555: snapshot too old очень велика Пробовал обращаться к этой таблице с удаленного сервера, но также скорость не велика. Какие еще варианты можно попробовать? Заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 15:28 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
MakPol, файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 15:33 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Файл это использовать EXP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 15:55 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
MakPol, это выгрузить содержимое без лобов в плоский файл + ссылка на файлы лобов, а потом загрузить через COPY и COPY BINARY или промежуточную функцию вроде такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:15 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Если не сложно, как можно выгрузить ссылку на файлы LOB-ов. Просто ID-шники у меня есть выгруженые, это быстро делается, а вот c BLOB... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:30 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Я бы попробовал пучёк сессий с разбивкой по ID через oracle hs dblink ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:41 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
MakPol, Ну и еще вопрос, как далеко по сети находятся источник-приемник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:43 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Есть вариант, когда в одном датацентре, есть вариант, когда через океан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:44 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
MakPolЕсть вариант, когда в одном датацентре, есть вариант, когда через океан. Репликация, или разовая загрузка? Если через океан, может потребоваться настройка сети (размер буферов сети) Скорость по hs dblink у меня локально в сети на игрушечных серверах, у меня около 2Мбайт/сек BLOB копировать не пробовал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 16:51 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
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 и так далее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2017, 17:34 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Мне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред. Чем посоветуете наиболее быстро из Oracle выгрузить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 11:18 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
MakPolМне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред. Чем посоветуете наиболее быстро из Oracle выгрузить? несколько сессий (оптимальное количество зависит от загрузки сервера/количества дисков/CPU), обработка диапазонов по ID Вот даже практически готовая процедура от Бурлесона :) тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 11:34 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Без возможности создавать объекты даже не стоит наверное пробовать. Ну имея доступ на селект к таблице и все. На самом сервере ничего ставить и запускать не хотелось бы, в идеале сливать на другой сервер тупо к базе подключившись. Так не выйдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 12:19 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
Как MakPolБез возможности создавать объекты даже не стоит наверное пробовать. Ну имея доступ на селект к таблице и все. На самом сервере ничего ставить и запускать не хотелось бы, в идеале сливать на другой сервер тупо к базе подключившись. Так не выйдет? Совмещается с MakPolМне лучше всего выгрузить сначала и затем уже загрузить. Упакую там и отправлю частями если что (есть требования по трафику). Для пробы 4-5 тыс записей выгружал и ora2pg но больше - бред. Чем посоветуете наиболее быстро из Oracle выгрузить? p.s. Для выгрузки файлов из oracle , все равно объект директорию создавать нужно. Процедуру можно не создавать, обойтись pl/sql блоком Если только select, что создай dblink из postgres Connecting your PostgreSQL instance to an Oracle database и тяни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2017, 12:45 |
|
||
|
Выгрузка таблицы c BLOB для последующей загрузки в другую СУБД
|
|||
|---|---|---|---|
|
#18+
dblink из postgres пробовал, но тоже скорость просто ужас. Может как-то действительно в файлы выгрузить а потом загрузить их? Ну каждая запись в файл с именем как id записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2017, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1886261]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 510ms |

| 0 / 0 |
