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

PPTX
Переход на Php 7 и итоги
PPTX
ToroDB (highload++2015)
PDF
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
PDF
Абак Пресс
ODP
PDF
Тестирование больших данных
PDF
Беспроблемная эксплуатация PostgreSQL
ODP
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
Переход на Php 7 и итоги
ToroDB (highload++2015)
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Абак Пресс
Тестирование больших данных
Беспроблемная эксплуатация PostgreSQL
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)

What's hot (20)

PDF
PostgreSQL on sas/ssd/nvme/nvdimm
PDF
Семь тысяч Rps, один go
PPTX
Redis in live
PDF
Механика DDoS (Александр Крижановский)
PDF
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
PDF
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
PDF
Cloud Haskell. Александр Вершилов
PDF
Советы для начинающих разработчиков PostgreSQL
PPT
TreeDb key/value noSQL database
PPSX
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
PPTX
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
PDF
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
PDF
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
PDF
WebCamp: Developer Day: N2O: The Most Powerful Erlang Web Framework - Максим ...
PDF
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
PDF
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
PDF
pgconf.ru 2015.avito postgresql recovery
PDF
pgconf.ru 2015 avito postgresql
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
PDF
Профилирование кода на C/C++ в *nix системах
PostgreSQL on sas/ssd/nvme/nvdimm
Семь тысяч Rps, один go
Redis in live
Механика DDoS (Александр Крижановский)
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
Cloud Haskell. Александр Вершилов
Советы для начинающих разработчиков PostgreSQL
TreeDb key/value noSQL database
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
WebCamp: Developer Day: N2O: The Most Powerful Erlang Web Framework - Максим ...
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...
pgconf.ru 2015.avito postgresql recovery
pgconf.ru 2015 avito postgresql
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Профилирование кода на C/C++ в *nix системах
Ad

Similar to Миграция данных из Oracle в Postgres (20)

PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
PostgreSQL Streaming Replication
PDF
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
ODP
Scorex framework
PPTX
How optimize PL/SQL by decrease overhead for context switching between SQL an...
PPTX
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
PDF
Программируемость коммутаторов для ЦОД Cisco Nexus
PPTX
Asynchrony and coroutines
PDF
Другая виртуализация
PPTX
Проблематика создания OpenFlow контроллеров для SDN
PDF
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
PDF
AVITO. Решардинг Redis без даунтайма. DevConf 2012
PDF
Создание географически-распределенных датацентров на базе инженерных систем
PPTX
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
PDF
Создание веб-приложений с помощью Oracle APEX
PDF
IT-инфраструктура. FAQ для разработчика
PPTX
Григорий Демченко, Асинхронность и неблокирующая синхронизация
PDF
Подход Oracle к управлению метаданными для аналитических систем
PDF
Технология Cisco Instant Access для упрощения структуры кампусных сетей.
PDF
Cisco Software Defined Networks (SDN) и OnePK
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PostgreSQL Streaming Replication
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
Scorex framework
How optimize PL/SQL by decrease overhead for context switching between SQL an...
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
Программируемость коммутаторов для ЦОД Cisco Nexus
Asynchrony and coroutines
Другая виртуализация
Проблематика создания OpenFlow контроллеров для SDN
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
AVITO. Решардинг Redis без даунтайма. DevConf 2012
Создание географически-распределенных датацентров на базе инженерных систем
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
Создание веб-приложений с помощью Oracle APEX
IT-инфраструктура. FAQ для разработчика
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Подход Oracle к управлению метаданными для аналитических систем
Технология Cisco Instant Access для упрощения структуры кампусных сетей.
Cisco Software Defined Networks (SDN) и OnePK
Ad

More from CUSTIS (20)

PDF
Три истории микросервисов, или MSA для Enterprise
PPTX
Долгоживущие ИТ в динамичном ритейле
PDF
Будущее уже наступило: от Agile к бирюзовым организациям
PDF
Как выбрать для проекта практики проектирования и работы с требованиями
PDF
Диаграммы учета как средство для наглядного и целостного отображения правил у...
PPTX
Сотрудничество с корпорациями: рецепты из практики
PPTX
Agile — ответ на вызовы третьей промышленной революции
PPTX
Опыт построения микросервисной архитектуры в цифровом банке
PDF
Золотая лихорадка MSA: почему нам не подошли микросервисы?
PPT
Барьеры микросервисной архитектуры
PPTX
Три истории микросервисов
PPTX
От монолитных моделей предметной области — к модульным
PPTX
Проблемы управления правами доступа к информационным системам крупной торгово...
PDF
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
PPTX
Agile и управление знаниями в ИТ-проектах
PDF
State of the .Net Performance
PPTX
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
PDF
Опыт применения метода ATAM для оценки архитектуры
PPTX
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
PPTX
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...
Три истории микросервисов, или MSA для Enterprise
Долгоживущие ИТ в динамичном ритейле
Будущее уже наступило: от Agile к бирюзовым организациям
Как выбрать для проекта практики проектирования и работы с требованиями
Диаграммы учета как средство для наглядного и целостного отображения правил у...
Сотрудничество с корпорациями: рецепты из практики
Agile — ответ на вызовы третьей промышленной революции
Опыт построения микросервисной архитектуры в цифровом банке
Золотая лихорадка MSA: почему нам не подошли микросервисы?
Барьеры микросервисной архитектуры
Три истории микросервисов
От монолитных моделей предметной области — к модульным
Проблемы управления правами доступа к информационным системам крупной торгово...
Будущее omni-channel маркетинга: инструменты, кейсы и цифры
Agile и управление знаниями в ИТ-проектах
State of the .Net Performance
Ответственность за качество в разных ИТ-проектах: в чем она и как ее разделять
Опыт применения метода ATAM для оценки архитектуры
Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает
Собираем кубик Рубика: восстановление архитектурного описания корпоративной р...

Миграция данных из Oracle в Postgres

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: По результатам этой работы – статья на «Хабре», митап и, если получится, – участие в конференции.