На основе PGConf India 2020 - Top 10 Mistakes When Migrating From Oracle to PostgreSQL - Jim Mlodgenski - AWS
Настройки Oracle не транслируются 1 к 1 в настройки Postgres. Пример: (SGA == 16Gb) != (shared_buffer == 16Gb).
Нужен в Oracle, не нужен в Postgres.
В Postgres все метаданные хранятся в lower case.
Есть в Oracle. В Postgres НЕ НУЖНО использовать DUAL для SELECT. Если надо позарез, создать view, но не таблицу.
Не поддерживаются в Postgres. Можно попробовать заменить на search_path.
Oracle: NULL == ""
Postgres: NULL != ""
Postgres: NULL concatenation не работает, вместо этого надо использовать COALESCE
или concat_ws
.
Postgres: NULL не попадает под constraint
Index hint in Postgres: extension(pg_hint_plan)
В Postgres есть больше типов индексов.
- Stored procedures
- Foreign data wrappers
- Data types
- Spatial
- JSON object with plv8
- Postgres использует Exceptions, но создает суб-транзакции для них, поэтому такой код крайне неэффективен.
- Некоторые исключения в Postgres работают аналогично, только если будет ключевое слово
STRICT
.
Нужно понимать, как правильно транслировать типы Oracle в типы Postgres. Пример: Number -> Numeric работает, но Numeric дает большую точность за счет производительности.