SlideShare a Scribd company logo
15 сентября 2015 года
Миграция данных
из Oracle в Postgres
Максим Трегубов
Ведущий системный администратор
О себе
 18 лет Oracle-бэкграунда (Dev + DBA)
 Python (Shell + Web App)
 *nix power user
 Hadoop, MongoDB, Elasticsearch…
2/24
Текущая ситуация
 Приложение на этапе внедрения
 Трехзвенная архитектура
 СУБД Oracle
3/24
Почему Postgres?
 Три коммитера ядра в России
 Сертификация ФСТЭК
 Лицензия BSD
 Существует компания Postgres Professional:
http://postgrespro.ru
4/24
Текущая ситуация
Web App
Hibernate SQL
Oracle
5/24
Текущая ситуация
Web App
Hibernate SQL
Oracle
6/24
Задачи
 Оценить возможность миграции данных
 Оценить трудозатраты в случае изменения
движка отчетов
7/24
Требования к инструменту миграции
 Возможность воссоздания структуры
данных (таблиц, индексов, constraints…)
 Быстрота миграции данных (около 50 Гб)
 Простота в освоении и надежность
 …
 Бесплатность
8/24
Наш выбор – Ora2Pg
 Богатый функционал
 Активное развитие проекта на протяжении 15 лет
 Open Source, лицензия GPLv3
9/24
Подготовка тестового стенда
 Создание или обновление стендов
для разработки и тестирования
 Oracle, WebLogic, WebSphere, Hadoop, Postgres
 Более 100 серверов
10/24
Подготовка тестового стенда
11/24
Подготовка тестового стенда
 Oracle Enterprise Linux
 Oracle Client 11.2.0.3
 Postgres 9.4
 Ora2Pg 15x
12/24
Подготовка тестового стенда
VM1
Oracle 11.2.0.3
Oracle Enterprise Linux
VM2
Postgres 9.4
Oracle Client 11.2.0.3
Ora2Pg 15.2
CentOS 6.6
TCP 1521
13/24
Подготовка тестового стенда
 DEMO
14/24
Конфигурация Ora2Pg
 ora2pg --init_project tst_owner
tst_owner/
├── config
├── data
├── reports
├── schema
│ ├── dblinks
│ ├── directories
…
15/24
Конфигурация Ora2Pg
 Откуда
 ORACLE_HOME /usr/lib/oracle/11.2/client64
 ORACLE_DSN
dbi:Oracle:host=oracle_host.domain.ru;sid=<SID>
 ORACLE_USER SYSTEM
 ORACLE_PWD MANAGER
 EXPORT_SCHEMA 1
 SCHEMA TST_OWNER
16/24
Конфигурация Ora2Pg
 Куда
 PG_DSN dbi:Pg:dbname=qqq;host=localhost;port=5432
 PG_USER tst_owner
 PG_PWD tst_onwer
 PG_SCHEMA tst_owner
17/24
Конфигурация Ora2Pg
 Как
 TYPE TABLE,COPY
 Разное
 DEFAULT_NUMERIC numeric
18/24
Конфигурация Ora2Pg
 ./export_schema.sh
 $psql -d qqq -U test_owner < schema/tables/table.sql
 $ora2pg -t COPY -o data.sql -b ./data -c
./config/ora2pg.conf
 $psql -d qqq -U test_owner <
schema/tables/INDEXES_table.sql
 $psql -d qqq -U test_owner <
schema/tables/CONSTRAINTS_table.sql
19/24
Конфигурирование Ora2Pg
 DEMO
20/24
SQL
 Переписали часть SQL-движка, избавившись
от Oracle-специфичных выражений
 Connect by prior
 Decode
 (+)
 …
21/24
Итоги
 Подтвердили возможность перехода
 Не поменяли ни строчки кода в Java
 Трудозатраты составили ~ 100 часов
 Приложение без PL/SQL
 Объем БД – 50 Гб
 10 отчетов
 35 таблиц
22/24
Дальнейшие шаги
 Проверить возможность миграции приложения
с логикой на PL/SQL
23/24
Спасибо!
Вопросы?
24/24
Максим Трегубов
mtregubov@custis.ru

More Related Content

What's hot (18)

PPT
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Dmitry Savchenko
 
PDF
Данил Ильиных и Владимир Иванов, «Велогосипед»
Platonov Sergey
 
PDF
Kirill A Korinskiy Rit2010 No Sql Storage
rit2010
 
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
PDF
Benchmarking PostgreSQL in Linux and FreeBSD
Alex Chistyakov
 
PDF
Build your own multistack JS startup
Артем Захарченко
 
PPT
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Fuenteovejuna
 
PDF
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Yandex
 
PDF
Готовим код 
в мир открытых исходников
Elena Grahovac
 
PDF
Мониторь, автоматизируй Docker
Badoo Development
 
PDF
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
PDF
Testing with Selenium
OSLL
 
PDF
Women Techmakers Novosibirsk, первый митап
Elena Grahovac
 
PDF
Docker integration into Badoo
Anton Turetsky
 
PDF
Разработка API для большого, нагруженного сервиса
endeveit
 
PDF
Автоматизация UI-тестирования следующего поколения
DevDay
 
PDF
Дмитрий Долгов
CodeFest
 
PDF
HBase on Dev{Highload}
Alex Chistyakov
 
Илья Ковалевский "Что такое Qt и что с ним можно сделать"
Dmitry Savchenko
 
Данил Ильиных и Владимир Иванов, «Велогосипед»
Platonov Sergey
 
Kirill A Korinskiy Rit2010 No Sql Storage
rit2010
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
Benchmarking PostgreSQL in Linux and FreeBSD
Alex Chistyakov
 
Build your own multistack JS startup
Артем Захарченко
 
Интеграция открытых технологий и взаимодействие со сторонними проектами в усл...
Fuenteovejuna
 
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Yandex
 
Готовим код 
в мир открытых исходников
Elena Grahovac
 
Мониторь, автоматизируй Docker
Badoo Development
 
Перевод новостного приложения на БД PostgreSQL
Dmitry Kremer
 
Testing with Selenium
OSLL
 
Women Techmakers Novosibirsk, первый митап
Elena Grahovac
 
Docker integration into Badoo
Anton Turetsky
 
Разработка API для большого, нагруженного сервиса
endeveit
 
Автоматизация UI-тестирования следующего поколения
DevDay
 
Дмитрий Долгов
CodeFest
 
HBase on Dev{Highload}
Alex Chistyakov
 

Similar to #PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в PostgreSQL (20)

PDF
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
 
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
PDF
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Mail.ru Group
 
PDF
Синие против красных
Sergey Melekhin
 
PDF
История успеха Яндекс.Почты
dev1ant
 
PDF
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
PDF
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Mail.ru Group
 
PDF
Pgconfru 2015 kosmodemiansky
PostgreSQL-Consulting
 
PDF
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
PPTX
migrate Oracle Database from RISC platform to x86 with minimal downtime
IgorMelnikov6
 
PDF
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
PDF
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
PDF
Владимир Бородин - PostgreSQL
Yandex
 
PDF
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
ODP
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON
 
PDF
Российская СУБД Postgres Pro
Andrey Fleyta
 
PDF
PostgreSQL on sas/ssd/nvme/nvdimm
Дмитрий Васильев
 
PPTX
Новые возможности платформы Oracle 12c для хранилищ данных
Andrey Akulov
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Mail.ru Group
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Mail.ru Group
 
Синие против красных
Sergey Melekhin
 
История успеха Яндекс.Почты
dev1ant
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
Борис Верюгин, Диасофт Платформа. «Автоматизированные механизмы миграции прил...
Mail.ru Group
 
Pgconfru 2015 kosmodemiansky
PostgreSQL-Consulting
 
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
migrate Oracle Database from RISC platform to x86 with minimal downtime
IgorMelnikov6
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
it-people
 
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
Владимир Бородин - PostgreSQL
Yandex
 
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
Nikolay Samokhvalov
 
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследования
SECON
 
Российская СУБД Postgres Pro
Andrey Fleyta
 
PostgreSQL on sas/ssd/nvme/nvdimm
Дмитрий Васильев
 
Новые возможности платформы Oracle 12c для хранилищ данных
Andrey Akulov
 
Ad

More from Nikolay Samokhvalov (20)

PDF
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
PDF
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
Nikolay Samokhvalov
 
PDF
Nancy CLI. Automated Database Experiments
Nikolay Samokhvalov
 
PDF
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
PDF
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
PDF
Database First! О распространённых ошибках использования РСУБД
Nikolay Samokhvalov
 
PDF
2016.10.13 PostgreSQL in Russia
Nikolay Samokhvalov
 
PDF
#noBackend, или Как выжить в эпоху толстеющих клиентов
Nikolay Samokhvalov
 
PPTX
#PostgreSQLRussia в банке Тинькофф, доклад №1
Nikolay Samokhvalov
 
PDF
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
Nikolay Samokhvalov
 
PDF
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Nikolay Samokhvalov
 
PDF
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
PPTX
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
PDF
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
 
PDF
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
 
PDF
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
PDF
PostgreSQL Moscow Meetup - September 2014 - Ilya Kosmodemyansky
Nikolay Samokhvalov
 
PDF
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
Nikolay Samokhvalov
 
ODP
PostgreSQL Moscow Meetup - September 2014 - Oleg Bartunov and Alexander Korotkov
Nikolay Samokhvalov
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Nikolay Samokhvalov
 
The Art of Database Experiments – PostgresConf Silicon Valley 2018 / San Jose
Nikolay Samokhvalov
 
Nancy CLI. Automated Database Experiments
Nikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
#RuPostgresLive 4: как писать и читать сложные SQL-запросы
Nikolay Samokhvalov
 
Database First! О распространённых ошибках использования РСУБД
Nikolay Samokhvalov
 
2016.10.13 PostgreSQL in Russia
Nikolay Samokhvalov
 
#noBackend, или Как выжить в эпоху толстеющих клиентов
Nikolay Samokhvalov
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
Nikolay Samokhvalov
 
SFPUG 2015.11.20 lightning talk "PostgreSQL in Russia"
Nikolay Samokhvalov
 
Владимир Бородин: Как спать спокойно - 2015.10.14 PostgreSQLRussia.org meetu...
Nikolay Samokhvalov
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
 
2014.10.15 блиц-доклад PostgreSQL kNN search
Nikolay Samokhvalov
 
PostgreSQL Moscow Meetup - September 2014 - Ilya Kosmodemyansky
Nikolay Samokhvalov
 
PostgreSQL Moscow Meetup - September 2014 - Nikolay Samokhvalov
Nikolay Samokhvalov
 
PostgreSQL Moscow Meetup - September 2014 - Oleg Bartunov and Alexander Korotkov
Nikolay Samokhvalov
 
Ad

#PostgreSQLRussia 2015.09.15 - Максим Трегубов, CUSTIS - Миграция из Oracle в PostgreSQL

Editor's Notes

  • #3: Участвую в различных активностях на площадках клиентов: встраивание наших продуктов в инфраструктуру клиентов, troubleshooting, нагрузочные тестирования.
  • #4: Мы создаем приложение для клиента вот с таким стеком технологий. Буквально накануне сдачи клиент обратился к нам с вопросом, можно ли вместо Oracle использовать какую-либо другую СУБД. Просьба клиента была связана с минимизацией рисков санкций и общим трендом импортозамещения. Проработали MySQL, FireBird (RedDatabase), TiberoDB (аналог Oracle от корейцев), MariaDB. Критерии сравнения: стоимость и вид лицензирования; сертификация, интенсивность развития; компетенции на рынке, наличие поддержки.
  • #7: При смене СУБД возникают 2 вопроса. Возможность портировать данные из Oracle в Postgres «один в один», чтобы совпали типы, точность. Желательно, что бы constraints и indexes также остались. Трудозатраты по изменению движка отчетов. За Hibernate мы не волновались, тут все должно было быть хорошо.
  • #9: Теперь перейдем к шагу по выбору инструмента миграции. Рассмотрели коммерческие дистрибутивы, такие как Enterprise DB, Oracle Golden Gate (хорош, но денег не сложишь). И тут – бинго, я вспомнил, что, будучи на PGConf в феврале этого года, посетил доклад Жиля Дарольда об утилите Ora2Pg. Присмотрелись к продукту поближе и поняли, что это то, что нужно Он прост, понятен, бесплатен и надежен.
  • #10: Принцип работы утилиты командной строки Ora2Pg довольно прост: она соединяется с БД Oracle, сканирует указанную в файле конфигурации схему и выгружает объекты схемы в виде DDL-инструкций в sql-файлы. Сами данные можно как выгрузить в виде INSERT’ов в sql-файл, так и вставить напрямую в созданные таблицы СУБД Postgres.
  • #11: Прежде чем перейти описанию тестового стенда, я бы хотел немного отойти от темы и рассказать, как мы разворачиваем стенды для разработки и тестирования у себя в компании. Мы разрабатываем ПО для госсектора, финансовых организаций и ритейла. Проектов, идущих параллельно, много, каждый проект – это 2-3 набора серверов, зачастую с разным набором ПО, патчей. Управлять всем этим хозяйством вручную – очень дорого и долго. На помощь пришла методология DevOps , в частности – инструмент Ansible. Мы храним описание инфраструктуры в системе контроля ревизий рядом с кодом, который на ней выполняется, и в любой момент можем эту инфраструктуру воссоздать.
  • #12: Мы очень активно используем эту утилиту из арсенала DevOps. Интегрировали ее с VSphere. Установка и настройка Linux под Oracle, установка ПО Oracle нужной версии, накат нужных патчей – ранее все это занимало в среднем 4 часа. Потратив на создание Playbook’a для Oracle около 20 часов, мы запускаем его и через 18 минут (можно успеть попить кофе) все готово.
  • #16: В корне будет лежать файл export_schema.sh.
  • #17: Файл конфигурации Ora2Pg довольно объемен, и я остановлюсь только на тех параметрах, которые являются корневыми или потребовались во время миграции наших данных.
  • #19: Указываем тип экспорта. Параметр COPY говорит о том, что мы будем копировать данные напрямую из Oracle в Postgres, минуя текстовый файл. Для того, чтобы тип number() без указания точности не конвертировался в bigint.
  • #23: Приложение на данный момент тестируется у заказчика.
  • #24: По результатам этой работы – статья на «Хабре», митап и, если получится, – участие в конференции.