PolyGres
← Back to the PolyWire overview
Oracle → PostgreSQL. No client rewrite.
Your Oracle client thinks it's talking to Oracle. It's actually talking to Postgres — and it never finds out. SQLcl and JDBC connect over the real Oracle wire protocol; PolyWire executes every statement against a real PostgreSQL database on the other end.
How it works#
See it happen#
$ sql app/password@//localhost:11521/postgres
SQLcl: Release 23.4 Production
SQL> SELECT * FROM orders;
ORDER_ID CUSTOMER_ID AMOUNT
-------- ----------- -------
1001 42 129.99
1002 57 89.50
2 rows selected.
SQL>
Oracle client. Oracle wire protocol. PostgreSQL database. No client rewrite. Table contents above are illustrative — the query, protocol, and path are exactly real. (SQLcl and JDBC clients are what's most thoroughly verified today; see PolyWire capabilities for exact client-by-client coverage.)
Try it in 60 seconds#
1. Start PolyWire — point it at a Postgres you already have:
docker run -p 11521:11521 \
-e POLYWIRE_HOST=<host> -e POLYWIRE_PASSWORD=<password> \
ghcr.io/polygres26/polywire:latest2. Connect — same SQLcl/JDBC connection string shape you already use:
sql app/password@//localhost:11521/postgres3. Done — Oracle client → OraWire → PolyWire → PostgreSQL. No driver change.
Pointing at a specific managed Postgres instead — Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL, or Oracle Cloud Infrastructure's Database with PostgreSQL? See CONNECTING.md for the real provider-specific setup.
Why teams do this#
Modernize without a rewrite
Move off Oracle licensing without touching every application that talks to it — the driver, the connection string, and the SQL your app already sends all keep working.
Standardize on Postgres
Consolidate Oracle, MySQL, SQL Server, MongoDB, and more onto one real Postgres database, without every team rewriting its data layer first.
Keep governance in one place
The same SQL firewall, QoS, and audit path that governs every other protocol also governs this one — not a separate, unguarded route to your data.
Planning the actual migration — schema, PL/SQL, sizing? PolyAdvisor scores the difficulty and sizes the target Postgres while PolyWire (above) keeps your application running the whole time.
Compatibility, honestly scoped#
| Protocol | Client tested against | Bound parameters decoded | Native error translation | RLS identity |
|---|---|---|---|---|
| Oracle | python-oracledb, SQLcl, JDBC | ✓ | ✓ (ORA-NNNNN) | ✓ |
Ready to put PolyWire in front of Postgres?
Try it free — Developer Edition, all features. Taking it to production? Bring your architecture and we'll help map the deployment.