← Work

Oracle to PostgreSQL - DBS Bank

Database Migration Consultant · DBS Bank, Singapore · November 2016 – July 2018

Brought in as an embedded contractor under the technical direction of Gilles Darold , to execute DBS Bank's migration of core banking applications off Oracle and onto PostgreSQL. The bank was moving its application stack off Oracle one system at a time, as part of a broader platform modernisation effort. Work happened in direct collaboration with the bank's dev and platform teams, with key technical decisions validated through Gilles before execution.

The scope covered schema conversion, structural transformation, and validation for the banking systems being moved over. The commercial banking engine and integrated payment processing system went live on PostgreSQL in August 2017 with no downtime at cutover. By the end of the engagement, 30+ corporate banking services were running on PostgreSQL.

The bank ran parallel pilots with PostgreSQL and MariaDB throughout and standardised on MariaDB for enterprise support reasons at the conclusion of the programme.

Phased execution

  1. Phase 1 (Nov 2016 – Jul 2017) — Baseline testing on low-risk applications. Schema conversion pipeline built using Ora2Pg, validation logic established for data-at-rest encryption and financial compliance parameters. 200+ compatibility issues identified and resolved before any data moved.
  2. Phase 2 (Aug 2017) — Production cutover of the first two mission-critical platforms: the commercial banking engine and the integrated payment processing system. Zero downtime at cutover.
  3. Phase 3 (Sep 2017 – Jul 2018) — Pipeline expanded to cover 30+ downstream corporate banking services. Cluster architectures scaled using containerised replication blocks, CDC modules linked for automated downstream data streaming.

Technical approach

Decisions below were directed and validated through Gilles before execution. The table reflects the approach the project took, not a personal decision log.

Decision Chosen Notes
Migration tooling Ora2Pg Already the standard for this kind of work, handling PL/SQL stored procedures and the structural conversion without needing a custom extraction layer built from scratch.
Validation pgCompare + diff utilities Every cutover window came down to row-level checks. Discrepancies got caught here or they got caught in production, and the second option wasn't acceptable.
Data streaming CDC via proxy The bank still needed transactional data flowing into Hadoop after the cutover. CDC kept that pipe open without touching the operational nodes.
Monitoring EDB Postgres Enterprise Manager Newly deployed clusters with no operational history yet. Needed visibility into query performance and system health from day one, not after something broke.
Query optimisation pganalyze Came in later, once the early clusters were live and a few of the corporate banking engines started showing index and structural bottlenecks that needed isolating.
Deployment model Containerised microservices (Docker) Mostly about being able to scale and roll updates independently per service, rather than redeploying the whole stack every time one piece changed.