Комментарии 18
Я думаю стоит отметить, что эта тулза в состоянии также и конвертнуть PLSQL в PGPLSQL, но делает это не совсем хорошо. Но, все таки, может быть проще поправить уже конвертнутое решение, чем писать все самому.
Не совсем хорошо это мягко сказано. На самом деле без сильной боли можно мигрировать только в простых случаях, когда субд как записная книжка используется (кстати, а Оракл то вам зачем нужен был тогда?).
Кроме проблем конвертации кода (не, разобрать PLSQL, построить дерево, трансформировать и кодогенерировать я и сам могу). есть проблема совместимости пакетов, работы с датами, работы с лобами. Для трехзвенок приходится в отсутствии такого понятия как context в PostgreSQL весьма изощрятся. Временные таблицы в оракле временные данные, в постгресе — существуют во время сессии только.
Так что конвертнуть данные это только первый шаг по дороге миграции.
Кроме проблем конвертации кода (не, разобрать PLSQL, построить дерево, трансформировать и кодогенерировать я и сам могу). есть проблема совместимости пакетов, работы с датами, работы с лобами. Для трехзвенок приходится в отсутствии такого понятия как context в PostgreSQL весьма изощрятся. Временные таблицы в оракле временные данные, в постгресе — существуют во время сессии только.
Так что конвертнуть данные это только первый шаг по дороге миграции.
На данный момент на соседнем проекте, где очень много развесистой бизнес-логики находится в PL/SQL, мы проводим такие эксперименты. Планируем по результатам написать статью, но пока могу сказать, что результаты более чем печальные.
В связи с этим мы были вынуждены, проанализировав и поправив логику приложения, в ущерб гибкости сконвертировать его в «подходящие» типы, например, в varchar2(100)
В Postgres вроде бы нет varchar2. Я так понимаю, перешли на VARCHAR обычный?
А как решили проблему с отсутствием в PostgreSQL такого понятия как пакеты?
Этот проект был простой и логики на PL/SQL не было. На соседнем проекте проводим эксперименты с конвертацией PL/SQL, но я пока не готов аргументированно показать «как надо». Думаю, по результатам, напишем ещё одну статью.
А пробовали просто создать dblink в Оракле на Постгре и залить данные на Постгре?
А разве есть connector?
В Оракле для любой БД можно создать коннектор. Например мы создали для mysql и писали туда данные из Оракла. Единственный нюанс нужно было писать 2 раза commit
Для MySQL есть родной как раз.
А вот для постгреса — насколько я знаю нет. Написать можно все что угодно конечно, хоть процедуру на C и ее в триггере вызывать. Сложность миграции при этом правда не снижается.
А вот для постгреса — насколько я знаю нет. Написать можно все что угодно конечно, хоть процедуру на C и ее в триггере вызывать. Сложность миграции при этом правда не снижается.
Если у вас в PostreSQL уже есть структура таблиц с индексами, то можно сделать и так. Но нам же нужно было создать структуру с нуля. DDL, который есть у вас в Oracle, один в один не выполнится в PostgreSQL, нужна конвертация. Вот тут Ora2Pg и пригодился.
У меня стоит задача синхронизации данных между Oracle и Postgress. Попробовал использовать oracle_fdw - нарвался на ошибку конвертации в CLOB, которую перебороть не получилось. Сейчас думаю использовать ora2pg. Вы не сталкивались с проблемой ошибки с кодировкой в CLOB при переносе данных?
Добрый день. Нет, не было
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Миграция данных из Oracle в PostgreSQL