Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Миграция с оракле в постгрес  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 3011
Кто уже мигрировал данные и как прошло?
4 апр 18, 03:08    [21310205]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Alex__kK
Member

Откуда:
Сообщений: 240
SAS2014,

нормально
4 апр 18, 09:35    [21310463]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
mefman
Member

Откуда:
Сообщений: 3171
как два пальца... внатури
4 апр 18, 09:43    [21310478]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Andrej_f
Member

Откуда: г. Курган
Сообщений: 750
SAS2014
Кто уже мигрировал данные
Я мигрировал один проект на C++Builder (Oracle) и CMS e107 (MySQL).
SAS2014
и как прошло?
Не без трудностей в обоих случаях. С Ораклом основная проблема функции/процедуры (например, их вызов), с MySQL - синтаксис SQL запросов: всякие REGEXP, SUBSTRING_INDEX, DATE_FORMAT, YEAR и прочую фигню.
Короче, радость надолго.
4 апр 18, 11:09    [21310876]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 3011
вот функции и процедуры меня волнуют так как в базе их много
5 апр 18, 03:10    [21313503]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7435
SAS2014
вот функции и процедуры меня волнуют так как в базе их много


Если использовались пакеджи и пакетные переменные, то никак.
5 апр 18, 03:53    [21313518]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 3011
миграцию делали через ora2pg?
5 апр 18, 04:07    [21313521]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Andrej_f
Member

Откуда: г. Курган
Сообщений: 750
SAS2014
миграцию делали через ora2pg?
Да. С ней возни тоже не мало. Вот, например, выдержка из моего лога миграции (я вручную лог своих действий вел):
автор
текущая версия ora2pg некорректно определяет конец блоков
в случае:
begin
...
if ...
...
end if;
end;
убирая END IF;
автор
Ошибка:
FATAL: ОШИБКА: значение не умещается в тип character varying(15)
Aborting export...

Решение:
пишем log_statement = 'all' в postgresql.conf, перезапускаем Postgresql:
service postgresql restart

смотрим лог и видим:
СООБЩЕНИЕ: выполнение <unnamed>: INSERT INTO tcar (cimei,cnomgos,ncarmarka,nfuel100,nwinterp,ndopp) VALUES ($1,$2,$3,$4,$5,$6)
ПОДРОБНОСТИ: параметры: $1 = 'E''214810''', $2 = 'NULL', $3 = '617', $4 = '30.3', $5 = '15', $6 = '0'
ОШИБКА: значение не умещается в тип character varying(15)
ОПЕРАТОР: INSERT INTO tcar (cimei,cnomgos,$ncarmarka,nfuel100,nwinterp,ndopp) VALUES ($1,$2,$3,$4,$5,$6)

когда импорт происходит из файла и параметр TYPE установлен в INSERT, то выполняется оператор:
INSERT INTO tcar (cimei,cnomgos,ncarmarka,nfuel100,nwinterp,ndopp) VALUES (E'214810',NULL,617,30.3,15,0);

когда импорт происходит напрямую из базы в базу, то получается избыток '
и даже E обрамляется ими (символ E это примочка PostgreSQL для указания,
что в строке могут использоваться Escape-символы).
Для отключения этой примочки при TYPE INSERT используется параметр:
STANDARD_CONFORMING_STRINGS
а при TYPE COPY:
NOESCAPE

Но никакие изменения этих параметров при при TYPE INSERT не помогли избавиться от ошибки,
и только при TYPE COPY экспорт/импорт из базы в базу проходит на ура (с любыми значениями
параметров STANDARD_CONFORMING_STRINGS и NOESCAPE).

Если хочешь, отправлю весь тебе, хоть мои грабли обойдёшь.
5 апр 18, 06:10    [21313556]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 3011
Andrej_f
SAS2014
миграцию делали через ora2pg?
Да. С ней возни тоже не мало. Вот, например, выдержка из моего лога миграции (я вручную лог своих действий вел):
автор
текущая версия ora2pg некорректно определяет конец блоков
в случае:
begin
...
if ...
...
end if;
end;
убирая END IF;
автор
Ошибка:
FATAL: ОШИБКА: значение не умещается в тип character varying(15)
Aborting export...

Решение:
пишем log_statement = 'all' в postgresql.conf, перезапускаем Postgresql:
service postgresql restart

смотрим лог и видим:
СООБЩЕНИЕ: выполнение <unnamed>: INSERT INTO tcar (cimei,cnomgos,ncarmarka,nfuel100,nwinterp,ndopp) VALUES ($1,$2,$3,$4,$5,$6)
ПОДРОБНОСТИ: параметры: $1 = 'E''214810''', $2 = 'NULL', $3 = '617', $4 = '30.3', $5 = '15', $6 = '0'
ОШИБКА: значение не умещается в тип character varying(15)
ОПЕРАТОР: INSERT INTO tcar (cimei,cnomgos,$ncarmarka,nfuel100,nwinterp,ndopp) VALUES ($1,$2,$3,$4,$5,$6)

когда импорт происходит из файла и параметр TYPE установлен в INSERT, то выполняется оператор:
INSERT INTO tcar (cimei,cnomgos,ncarmarka,nfuel100,nwinterp,ndopp) VALUES (E'214810',NULL,617,30.3,15,0);

когда импорт происходит напрямую из базы в базу, то получается избыток '
и даже E обрамляется ими (символ E это примочка PostgreSQL для указания,
что в строке могут использоваться Escape-символы).
Для отключения этой примочки при TYPE INSERT используется параметр:
STANDARD_CONFORMING_STRINGS
а при TYPE COPY:
NOESCAPE

Но никакие изменения этих параметров при при TYPE INSERT не помогли избавиться от ошибки,
и только при TYPE COPY экспорт/импорт из базы в базу проходит на ура (с любыми значениями
параметров STANDARD_CONFORMING_STRINGS и NOESCAPE).

Если хочешь, отправлю весь тебе, хоть мои грабли обойдёшь.


Я пока разведку провожу и мнения людей кто уже прошел этот путь
5 апр 18, 07:07    [21313581]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 3011
но уже вижу что пляски и жесткий секс обеспечен если база большая и структура ее сложная
5 апр 18, 07:08    [21313582]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2494
При любой СУБД - секс обеспечен.
По моему опыту стоит делать так:
1)Переносим структуру.
2)Адаптировать структуру под новую СУБД
3)Переписать код всех процедур
4)Если надо - адаптировать логику приложения.
Это придётся сделать, если понадобится хитрым образом управлять транзакциями, к примеру.
5)Осуществляем тестовую переливку данных из старой базы в новую тестовую.
6)Долго тестировать на копии боевых данных.
И потом в назначенный день миграции
останавливаем старую базу(подключения к ней)
Выгружаем данные в промежуточный формат(к примеру CSV).
Импортируем данные в новую базу. Postgres нормально с CSV работает, тем более, тест миграции
можно тоже провести.
Глушим старую базу и пускаем новую в боевой режим.
Как-то так. По-лёгкому всё равно не сделать, а таким способом - меньше проблем.
6 апр 18, 11:19    [21318005]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Синий Слон
Member

Откуда:
Сообщений: 299
Тут еще надо учитывать особенности работы постгресса, однако, разработчики это частенько игнорируют.
6 апр 18, 13:59    [21318829]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Миграция с оракле в постгрес  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1274
ОКТОГЕН
При любой СУБД - секс обеспечен.
По моему опыту стоит делать так:
1)Переносим структуру.
2)Адаптировать структуру под новую СУБД
3)Переписать код всех процедур
4)Если надо - адаптировать логику приложения.
Это придётся сделать, если понадобится хитрым образом управлять транзакциями, к примеру.
5)Осуществляем тестовую переливку данных из старой базы в новую тестовую.
6)Долго тестировать на копии боевых данных.
И потом в назначенный день миграции
останавливаем старую базу(подключения к ней)
Выгружаем данные в промежуточный формат(к примеру CSV).
Импортируем данные в новую базу. Postgres нормально с CSV работает, тем более, тест миграции
можно тоже провести.
Глушим старую базу и пускаем новую в боевой режим.
Как-то так. По-лёгкому всё равно не сделать, а таким способом - меньше проблем.



Интересует 5 пункт
Осуществляем тестовую переливку данных из старой базы в новую тестовую.
для больших таблиц с кучей CLOB
прокатит ли импорт/экспорст в CSV

Задача перенсти данные из Оракла 12 (хитрого в частном облаке)
4 схемы
2 из них большие по данным ( Clob , Mat.View )
и связаны грантами друг с другом (перекрестные ссылки )

Если кто делал такое поделитесь
(как получить csv с оракла и залить их в PostGres )


Задача переписывания оракл. пакетов тоже стоит
но вначале хотелось бы понять каким образом переносить CLOB
и сделать это хотя бы на паре таблиц чтобы оценить возможность переноса в принципе.

Сообщение было отредактировано: 3 ноя 20, 17:33
3 ноя 20, 17:36    [22225849]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9272
Я делал.

Програмка на Java, селектит из Oracle, COPY'ит в Postgre. Из проблем помню только, что в некоторых строчках попадались невалидные данные (например в поле number попадался NAN).

исходный код не сохранился, но в принципе ничего сложно нет

p.s. база вроде была около 280-300 Gb.

Сообщение было отредактировано: 3 ноя 20, 17:54
3 ноя 20, 17:59    [22225878]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1274
Leonid Kudryavtsev
Я делал.

Програмка на Java, селектит из Oracle, COPY'ит в Postgre. Из проблем помню только, что в некоторых строчках попадались невалидные данные (например в поле number попадался NAN).

исходный код не сохранился, но в принципе ничего сложно нет

p.s. база вроде была около 280-300 Gb.


Проблема в том что я не знаю явы
но ок
а не было проблем с CLOB
и были ли mat.view что с ними ?
4 ноя 20, 10:32    [22226136]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51804
Гулин Федор
прокатит ли импорт/экспорст в CSV

Как ты себе представляешь экспорт CLOB в CSV?..

Обломись, только прямая перекачка.
4 ноя 20, 14:45    [22226251]     Ответить | Цитировать Сообщить модератору
 Re: Миграция с оракле в постгрес  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9272
Dimitry Sibiryakov
Как ты себе представляешь экспорт CLOB в CSV?..

если под CSV подразумевается нечто, для скармливания Pg COPY - то вроде элементарно, в HEX кодах или \uXX. AFAIK

а не было проблем с CLOB

Никаких проблем с CLOB/BLOB нет.
5 ноя 20, 05:18    [22226588]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить