Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kirillsulim/ab5cede3d4a3eebdbaf0c91978021f88 to your computer and use it in GitHub Desktop.
Save kirillsulim/ab5cede3d4a3eebdbaf0c91978021f88 to your computer and use it in GitHub Desktop.
10 частых ошибок при миграции Oracle -> Postgres

10 частых ошибок при миграции Oracle -> Postgres

На основе PGConf India 2020 - Top 10 Mistakes When Migrating From Oracle to PostgreSQL - Jim Mlodgenski - AWS

1. Параметры настройки

Настройки Oracle не транслируются 1 к 1 в настройки Postgres. Пример: (SGA == 16Gb) != (shared_buffer == 16Gb).

2. Tablespace

Нужен в Oracle, не нужен в Postgres.

3. Сase folding

В Postgres все метаданные хранятся в lower case.

4. Dual table

Есть в Oracle. В Postgres НЕ НУЖНО использовать DUAL для SELECT. Если надо позарез, создать view, но не таблицу.

5. Synonims

Не поддерживаются в Postgres. Можно попробовать заменить на search_path.

6. Null

Oracle: NULL == "" Postgres: NULL != ""

Postgres: NULL concatenation не работает, вместо этого надо использовать COALESCE или concat_ws.

Postgres: NULL не попадает под constraint

7. Query tuning

Index hint in Postgres: extension(pg_hint_plan) В Postgres есть больше типов индексов.

8. Фичи Postgres

  • Stored procedures
  • Foreign data wrappers
  • Data types
  • Spatial
  • JSON object with plv8

9. Exceptions

  1. Postgres использует Exceptions, но создает суб-транзакции для них, поэтому такой код крайне неэффективен.
  2. Некоторые исключения в Postgres работают аналогично, только если будет ключевое слово STRICT.

10. Data types

Нужно понимать, как правильно транслировать типы Oracle в типы Postgres. Пример: Number -> Numeric работает, но Numeric дает большую точность за счет производительности.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment