[pgrecon](https://github.com/Muzzammil242/pgrecon), an Apache-2.0 licensed 
Oracle to PostgreSQL migration assessment and schema conversion tool, is now 
public. The current release is 0.7.3.

pgrecon works entirely offline. A reviewable, read-only SQL*Plus script 
produces a dump, and the tool builds a local inventory from it; it never 
connects to either database. A deterministic rule engine runs 80 rules over the 
inventory, covering data types and length semantics, storage and partitioning, 
PL/SQL constructs (parsed with a full grammar, not pattern matching), 
supplied-package usage, schema objects, and performance posture, each with 
line-level evidence and remedy guidance. An effort estimator produces 
person-day ranges from named components with stated assumptions.

The converter emits plain PostgreSQL DDL for what it can prove: tables with 
native partition children, constraints, indexes, sequences, views (CONNECT BY 
hierarchies become WITH RECURSIVE), materialized views, comments, grants, 
simple DML triggers, and standalone routines, now including ROWNUM top-N bounds 
as LIMIT and MERGE statements. Everything it cannot carry faithfully is a named 
line in a residue report, never emitted DDL.

Verification: the full extraction path is verified nightly in CI against Oracle 
XE 11g, XE 21c, and Oracle Free 23ai; converted output is applied to PostgreSQL 
16, 17, and 18 on every commit; a schema fuzzer generates adversarial Oracle 
estates nightly and checks that nothing crashes, nothing is lost silently, and 
the DDL applies; and the public benchmark row is measured by a workflow in the 
repository, which installs Oracle's HR, OE and CO samples plus utPLSQL, PLJSON, 
Logger and Alexandria into a live Oracle XE 21c, extracts, converts, and 
applies to PostgreSQL 16: 423 statements, zero rejected, at 0.7.3. Both 
extraction script tiers capture character versus byte length semantics, so 
VARCHAR2(30 CHAR) maps to varchar(30).

Oracle 9.2 through 23ai are supported through two extraction script tiers; 
Python 3.11 or newer on the analysis side.

Install: `pip install pgrecon`

* Project page: 
[muzzammil242.github.io/pgrecon](https://muzzammil242.github.io/pgrecon/)
* Source: 
[github.com/Muzzammil242/pgrecon](https://github.com/Muzzammil242/pgrecon)
* Release notes: [pgrecon 
0.7.3](https://github.com/Muzzammil242/pgrecon/releases/tag/v0.7.3)

Reply via email to