1 · Terminates the handshake
The full Oracle Net connect + TTC negotiation + challenge/response auth (12c PBKDF2 with mutual server proof, or the 11g MD5 verifier).
dbSaci speaks Oracle’s TNS / TTC wire protocol on the front and
PostgreSQL or MariaDB on the back. An unmodified Oracle client — python-oracledb (thin),
the Oracle JDBC thin driver, ODP.NET managed — points at dbSaci instead of at an
Oracle database, and dbSaci:
1 · Terminates the handshake
The full Oracle Net connect + TTC negotiation + challenge/response auth (12c PBKDF2 with mutual server proof, or the 11g MD5 verifier).
2 · Translates the SQL
The Oracle SQL/PL-SQL dialect it understands is rewritten to the selected backend; binds are sent as backend parameters.
3 · Runs it on the backend
One backend round trip to PostgreSQL + orafce,
or MariaDB 11.4+ in SQL_MODE=ORACLE.
4 · Re-frames the result
The backend result is re-encoded into Oracle’s binary framing and streamed back batch by batch.
The application keeps its Oracle driver, its connection-string shape, and most of its SQL. Nothing about the database it actually talks to is Oracle.
IvorySQL is a fork of the PostgreSQL
server that builds Oracle SQL / PL-SQL compatibility — an Oracle parse mode,
PL/iSQL, packages, NUMBER/DATE semantics — into the engine. It goes deep on
the dialect, but it still speaks the PostgreSQL wire protocol: the
application connects with a PostgreSQL driver, not its Oracle one.
dbSaci is the other way round. It speaks Oracle’s TNS/TTC wire protocol, so
the unmodified Oracle driver — ojdbc, ODP.NET, python-oracledb — connects to it
exactly as it would to Oracle, and the database behind it is stock PostgreSQL or
MariaDB. The trade is the SQL/PL-SQL surface: dbSaci only covers what its
translation layer plus the selected backend compatibility facilities can express.
They solve different problems. Reach for IvorySQL if you can repoint the app at a new database and want broad Oracle SQL semantics; reach for dbSaci if the app and its Oracle client have to stay exactly as they are.