Polygres

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

Oracle client SQLcl or JDBC — unmodified, same driver you already use
POLYWIRE OraWire (real Oracle TNS/TTC wire protocol) → Connect · Protect · Control · Accelerate · Observe
PostgreSQL, anywhere RDS · Aurora · Cloud SQL · Azure · OCI · Supabase · On-prem

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>
SQLcl (Oracle client)OraWirePolyWirePostgreSQL

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:latest

2. Connect — same SQLcl/JDBC connection string shape you already use:

sql app/password@//localhost:11521/postgres

3. 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

ProtocolClient tested againstBound parameters decodedNative error translationRLS identity
Oraclepython-oracledb, SQLcl, JDBC✓ (ORA-NNNNN)

Full compatibility matrix, all ten protocols →

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.