<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DBMigrateAIPro Engineering Blog</title>
    <link>https://medaxai.com/blog/</link>
    <atom:link href="https://medaxai.com/rss.xml" rel="self" type="application/rss+xml" />
    <description>Engineering articles on database migrations, Oracle to PostgreSQL, CDC, and data infrastructure from the DBMigrateAIPro team.</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 22 Jun 2026 00:00:00 GMT</lastBuildDate>
    <generator>Next.js (static export)</generator>
    <item>
      <title>Plenty of Migration Tools Exist — Here&apos;s What Makes Ours Different</title>
      <link>https://medaxai.com/blog/what-makes-dbmigrateaipro-different/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/what-makes-dbmigrateaipro-different/</guid>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <description>&quot;There are already plenty of migration tools — what makes yours different?&quot; It&apos;s the first question we get, and it deserves an honest answer. Most tools do one slice of the job: schema converters convert DDL, cloud DMS replicates data, CDC platforms stream changes. None of them tie schema + code + data + proof into one trustworthy flow, and almost none answer the question that actually matters the night before cutover: how do you KNOW every row arrived correctly? This post lays out the five things DBMigrateAIPro does differently — per-partition cryptographic validation with a saved proof artifact, schema and PL/SQL code conversion in one tool, a dependency-aware dry-run plan with a 95/5 gap report, a conversational copilot that runs assess→plan→migrate→verify, and a private, free, fully-unlocked edition — plus an honest word on where Ora2Pg and AWS DMS still fit.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Connection Pooling: PgBouncer vs Oracle Connection Manager</title>
      <link>https://medaxai.com/blog/connection-pooling-pgbouncer-vs-oracle-connection-manager/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/connection-pooling-pgbouncer-vs-oracle-connection-manager/</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <description>Connection pooling never shows up in a schema diff, but it&apos;s one of the most common reasons a freshly-migrated PostgreSQL falls over under load. Oracle quietly multiplexes connections (Shared Server, DRCP, Connection Manager); PostgreSQL gives every connection its own OS process, so a realistic max_connections is in the low hundreds. This guide maps Oracle&apos;s pooling to PostgreSQL (DRCP → PgBouncer transaction mode, CMAN → PgBouncer + HAProxy), explains PgBouncer&apos;s session/transaction/statement modes and what transaction mode breaks (server-side prepared statements, session SET/search_path, advisory locks, LISTEN/NOTIFY), and how to size it — many clients, few real connections.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Parallel Query in PostgreSQL vs Oracle: What You Gain</title>
      <link>https://medaxai.com/blog/parallel-query-postgresql-vs-oracle/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/parallel-query-postgresql-vs-oracle/</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <description>In Oracle you often ask for parallelism with a PARALLEL hint; in modern PostgreSQL it&apos;s automatic — the planner spins up workers for big scans, joins, and aggregates whenever the cost model says it pays. This guide covers what PostgreSQL parallelizes (parallel seq/index scans, joins, and aggregates), the knobs that control it (max_parallel_workers_per_gather, max_parallel_workers, min_parallel_table_scan_size), why a query might stay serial (small table, writes, parallel-unsafe functions), and parallel B-tree index builds — a real speedup for the post-data step of a migration.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle Hints vs PostgreSQL: How to Influence the Planner</title>
      <link>https://medaxai.com/blog/oracle-hints-vs-postgresql-planner/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-hints-vs-postgresql-planner/</guid>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
      <description>Oracle developers override the optimizer with hints — INDEX, LEADING, USE_NL, PARALLEL. The first surprise in PostgreSQL: there are no query hints, by deliberate design. PostgreSQL&apos;s philosophy is to fix the planner&apos;s inputs, not patch its output. This guide maps each Oracle hint to its PostgreSQL approach: better statistics (ANALYZE, SET STATISTICS, CREATE STATISTICS for column correlations), session-level enable_* flags for diagnosis only, and the pg_hint_plan extension as a genuine last resort.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Query Optimization After Migration: The First 30 Days</title>
      <link>https://medaxai.com/blog/query-optimization-after-migration-first-30-days/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/query-optimization-after-migration-first-30-days/</guid>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <description>The data landed and validation passed — then a report that took 2 seconds on Oracle takes 40 on PostgreSQL. This is normal and fixable. PostgreSQL&apos;s planner is different and, right after a bulk load, flying blind. This guide is the first-30-days playbook: run ANALYZE on day one (the single highest-leverage action), find the real slow queries with pg_stat_statements, read plans with EXPLAIN (ANALYZE, BUFFERS), tune the cost inputs for SSD (random_page_cost, effective_cache_size, work_mem), and verify your migrated indexes are actually being used.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Character Set Migration: Oracle to PostgreSQL UTF-8</title>
      <link>https://medaxai.com/blog/character-set-migration-oracle-to-postgresql-utf8/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/character-set-migration-oracle-to-postgresql-utf8/</guid>
      <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
      <description>Character-set migration is the one that passes every row count and then surfaces weeks later as a customer named José showing up as Jos?. The fix is mostly one good decision up front — target PostgreSQL in UTF-8 (it maps cleanly to Oracle AL32UTF8) — plus an honest audit of the BYTE-vs-CHAR trap (Oracle VARCHAR2(n BYTE) holds bytes; PostgreSQL VARCHAR(n) counts characters, so multibyte data can overflow), the US7ASCII landmine (8-bit data stuffed in a 7-bit charset), and why only value-level (Merkle) validation — not row counts — catches a botched transcode.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Migrating Oracle Materialized Views to PostgreSQL</title>
      <link>https://medaxai.com/blog/migrating-oracle-materialized-views-to-postgresql/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/migrating-oracle-materialized-views-to-postgresql/</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <description>An Oracle materialized view&apos;s DDL converts cleanly — the trap is keeping it current. Oracle has FAST incremental refresh (via MV logs), REFRESH ON COMMIT, and automatic query rewrite; PostgreSQL has exactly one primitive, REFRESH MATERIALIZED VIEW, which rebuilds the whole thing. This guide maps every Oracle refresh mode to a real PostgreSQL strategy: COMPLETE → scheduled refresh via pg_cron, ON COMMIT → an AFTER trigger, and the honest gap — FAST refresh has no native equivalent (scheduled full refresh, trigger-maintained summary tables, or pg_ivm). Plus the UNIQUE-index prerequisite for REFRESH … CONCURRENTLY and the silent query-rewrite optimization PostgreSQL never performs.</description>
      <category>Oracle</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle DATE vs PostgreSQL TIMESTAMP: Avoid the Traps</title>
      <link>https://medaxai.com/blog/oracle-date-vs-postgresql-timestamp/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-date-vs-postgresql-timestamp/</guid>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <description>Oracle&apos;s DATE type carries a time component down to the second — PostgreSQL&apos;s DATE is date-only. Map one straight to the other and every hour, minute, and second is silently dropped while row counts still report success. This guide gives the correct mapping (DATE → TIMESTAMP, TIMESTAMP WITH TIME ZONE → TIMESTAMPTZ), the date-arithmetic trap where Oracle&apos;s `d + 1` becomes PostgreSQL&apos;s `d + INTERVAL &apos;1 day&apos;`, the SYSDATE / TRUNC / ADD_MONTHS / TO_DATE function swaps, the UTC time-zone model, and why only column-level validation catches a botched DATE mapping.</description>
      <category>Oracle</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Handling Oracle NULLs and Empty Strings in PostgreSQL</title>
      <link>https://medaxai.com/blog/handling-oracle-nulls-empty-strings/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/handling-oracle-nulls-empty-strings/</guid>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
      <description>The nastiest silent difference in an Oracle→PostgreSQL migration: Oracle treats an empty string &apos;&apos; as NULL, while PostgreSQL treats &apos;&apos; as a real, distinct, non-null value. Row counts match, the migration reports success, and then code relying on IS NULL to catch empty Oracle strings quietly returns wrong answers. This guide shows the difference in action, how to decide the mapping per column (usually: coerce &apos;&apos; → NULL to preserve Oracle semantics), the concatenation and NOT NULL traps that follow, and why only column-level (Merkle) validation — not row counts — catches it.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle DB Links vs PostgreSQL FDW: The Migration Path</title>
      <link>https://medaxai.com/blog/oracle-db-links-vs-postgresql-fdw/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-db-links-vs-postgresql-fdw/</guid>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
      <description>Oracle database links let a query reach into another database as if its tables were local. PostgreSQL replaces them with Foreign Data Wrappers (FDW) — more explicit, more secure, and able to federate Postgres, Oracle, MySQL and more. This guide covers picking the wrapper (postgres_fdw / oracle_fdw / dblink), the four-step setup that replaces CREATE DATABASE LINK (extension → server → user mapping → foreign table / IMPORT FOREIGN SCHEMA), rewriting @dblink references, and the three things to get right: predicate push-down, credentials in the user mapping, and cross-server writes.</description>
      <category>Oracle</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Migrating Oracle Synonyms: What PostgreSQL Offers Instead</title>
      <link>https://medaxai.com/blog/migrating-oracle-synonyms/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/migrating-oracle-synonyms/</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>Synonyms are one of the few Oracle features with no direct PostgreSQL equivalent — there is no CREATE SYNONYM. But once you map each synonym to its intent, almost all of them disappear: schema-qualification convenience becomes a search_path entry, a genuine rename becomes a view or a thin wrapper function, and PUBLIC synonyms become a shared schema on every role&apos;s path. This guide gives the intent-to-replacement map, the search_path mechanic that does most of the work, the PUBLIC-synonym pattern, resolution-order gotchas, and the one case that needs a real object.</description>
      <category>Oracle</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle Triggers in PostgreSQL: Full Migration Guide</title>
      <link>https://medaxai.com/blog/oracle-triggers-in-postgresql/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-triggers-in-postgresql/</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <description>Triggers are one of the friendliest parts of an Oracle→PostgreSQL migration — the concepts map almost one-to-one — but one structural difference trips up every first-timer: Oracle inlines the trigger body, while PostgreSQL splits it into a trigger function plus a binding. This guide walks the full translation map (:NEW/:OLD, TG_OP, WHEN, INSTEAD OF), a worked BEFORE-INSERT example, the RETURN NEW rule that silently drops rows when forgotten, firing order without FOLLOWS, the mutating-table pain that simply disappears in PostgreSQL, and the one hard case — autonomous-transaction audit triggers — that genuinely needs a human.</description>
      <category>Oracle</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>What a Migration Assessment Report Should Include</title>
      <link>https://medaxai.com/blog/what-a-migration-assessment-report-should-include/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/what-a-migration-assessment-report-should-include/</guid>
      <pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate>
      <description>A migration assessment report is the artifact that turns “we should move off Oracle” into a plan you can staff and schedule. A good one is specific, numeric, and honest about the hard 5%. Here are the ten sections every assessment report should contain — object inventory, data profile, PL/SQL surface, the hard-construct catalog, dependency map, a risk score, an effort estimate, and the recommended approach — plus the red flags of a useless one.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Migration Copilot: An AI That Runs on Your Machine, Not Someone Else’s Cloud</title>
      <link>https://medaxai.com/blog/migration-copilot-local-ai/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/migration-copilot-local-ai/</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>Most “AI migration assistants” ship your schema — sometimes your data — off to a third-party API. For a regulated database that’s a non-starter. So we built Migration Copilot to run locally: a conversational assistant that drives the migration engine through tools, asks before anything destructive, and needs no API key and no internet. Here’s the architecture, the safety model, and why local-first is the right default for database work.</description>
      <category>AI</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>How to Estimate Migration Timeline: The Honest Formula</title>
      <link>https://medaxai.com/blog/estimate-migration-timeline-honest-formula/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/estimate-migration-timeline-honest-formula/</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <description>Most migration estimates are wrong in the same direction — they anchor on data size, which is rarely the bottleneck. The honest formula budgets five things: data movement, code conversion, the handful of hard constructs, validation, and application-layer changes. Here&apos;s the breakdown, a worked example, and the contingency multiplier nobody likes but everybody needs.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>The 10 Biggest Oracle Migration Mistakes (And How to Avoid Them)</title>
      <link>https://medaxai.com/blog/biggest-oracle-migration-mistakes/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/biggest-oracle-migration-mistakes/</guid>
      <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
      <description>After 500+ migrations, the mistakes that hurt are predictable — and most happen before anyone writes a line of conversion code. Row counts mistaken for validation. NULLs collapsed into empty strings. Sequences that aren&apos;t resynced at cutover. Here are the ten that show up most, why each one bites, and the one-line fix for each.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Building a Migration Risk Matrix: Step by Step</title>
      <link>https://medaxai.com/blog/migration-risk-matrix-step-by-step/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/migration-risk-matrix-step-by-step/</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <description>An assessment hands you a list of findings. A risk matrix turns that list into priorities — what to fix first, what to watch, and what&apos;s safe to accept. Here&apos;s how to build one for an Oracle-to-PostgreSQL migration: the two axes that matter, the standard risk catalog, a scoring method that survives scrutiny, and how to keep it a living document instead of a one-time slide.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>How to Assess Your Oracle Database Before Migration</title>
      <link>https://medaxai.com/blog/assess-oracle-database-before-migration/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/assess-oracle-database-before-migration/</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <description>The highest-leverage hour of any Oracle-to-PostgreSQL migration is spent before you move a single row. A complete assessment — object inventory, data profile, PL/SQL surface area, the handful of genuinely hard constructs, and dependency map — turns cutover surprises into a planned punch list. Here&apos;s exactly what to measure, the SQL to measure it, and how to turn the findings into a risk score you can plan against.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Data Type Mapping: Oracle to PostgreSQL Complete Reference</title>
      <link>https://medaxai.com/blog/oracle-to-postgresql-type-mapping-reference/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-to-postgresql-type-mapping-reference/</guid>
      <pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate>
      <description>The reference table you wish your migration tool came with. Every Oracle type, the PostgreSQL equivalent, the precision / length / semantic gotchas, and which mappings are silent-data-loss risks vs which are clean. NUMBER variants, VARCHAR2 BYTE vs CHAR, the Oracle DATE-includes-time trap, LOBs, XMLTYPE, spatial, intervals, ROWID, and a few Oracle-only types with no PostgreSQL equivalent.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>How DBMigrateAIPro Mathematically Proves Your Data is Correct</title>
      <link>https://medaxai.com/blog/merkle-validation-mathematical-proof/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/merkle-validation-mathematical-proof/</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <description>Most migration tools tell you &apos;X rows copied&apos;. We tell you the same — and hand you a cryptographic proof that every column of every row landed exactly right. Per-partition Merkle roots, computed on both sides during COPY, compared in seconds. Verification cost goes from O(N) to O(log N). On a 1B-row table, that&apos;s hours → seconds. None of DMS, GoldenGate, Striim, or Fivetran ship this. Here&apos;s how it works.</description>
      <category>Engineering</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle Packages in PostgreSQL: How We Solve the Biggest Challenge</title>
      <link>https://medaxai.com/blog/oracle-packages-in-postgresql/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-packages-in-postgresql/</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <description>Oracle packages are the single hardest construct to migrate to PostgreSQL — there&apos;s no direct equivalent. PG has schemas + functions, not packages. But the pattern that works in production is well-understood: one schema per package, package-state via session-local tables or set-returning functions, and PRAGMA AUTONOMOUS_TRANSACTION via dblink. A concrete walkthrough with real before/after code.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle Sequences vs PostgreSQL: What Changes and Why</title>
      <link>https://medaxai.com/blog/oracle-sequences-vs-postgresql/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-sequences-vs-postgresql/</guid>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
      <description>Sequences look identical between Oracle and PostgreSQL — until they aren&apos;t. Both have CREATE SEQUENCE, NEXTVAL, CACHE. But the way you call a sequence in a DEFAULT clause differs, IDENTITY columns are the modern replacement for the legacy sequence + trigger pattern, and the post-migration sequence resync is the single most common source of &apos;primary key already exists&apos; errors at cutover. A practical guide with concrete before / after SQL.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>PL/SQL to PL/pgSQL: The Complete Conversion Guide (Part 1)</title>
      <link>https://medaxai.com/blog/plsql-to-plpgsql-complete-guide-part-1/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/plsql-to-plpgsql-complete-guide-part-1/</guid>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <description>Most of PL/SQL maps cleanly to PL/pgSQL — block-structured, cursor-aware, exception-handling syntax all carry across with minor changes. Part 1 walks through the constructs every migration project handles: type mappings, variables, built-in functions, cursors, conditionals, loops, exceptions, and DBMS_OUTPUT. With before/after examples you can paste straight into a transpiler test.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>5 Signs Your Team is Ready for PostgreSQL</title>
      <link>https://medaxai.com/blog/oracle-database-migration-readiness/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-database-migration-readiness/</guid>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
      <description>Most teams know whether PostgreSQL is the right next move — but they ask the question too late, after a roadmap commitment or project deadline forces it. Five observable signals from 500+ migrations that your team is ready, plus a readiness scorecard. If 3 match, you should be scoping this quarter.</description>
      <category>PostgreSQL</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>What Makes a Database Migration Succeed (Or Fail)</title>
      <link>https://medaxai.com/blog/database-migration-success-failure/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/database-migration-success-failure/</guid>
      <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
      <description>70-80% of database migrations are said to fail or over-run. After 500+ migrations, the patterns are predictable — and they&apos;re not what most teams expect. Five failure modes, five success predictors, and where the time actually goes.</description>
      <category>Migration</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>PostgreSQL vs Oracle: A DBA&apos;s Honest Comparison After 20 Years</title>
      <link>https://medaxai.com/blog/postgresql-vs-oracle-honest-comparison/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/postgresql-vs-oracle-honest-comparison/</guid>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <description>No marketing pitch — a working DBA&apos;s side-by-side look at Oracle and PostgreSQL across performance, cost, tooling, HA, and where each one genuinely wins in 2026.</description>
      <category>Engineering</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Why We Built DBMigrateAIPro: The Migration Tool We Always Needed</title>
      <link>https://medaxai.com/blog/why-we-built-dbmigrateaipro/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/why-we-built-dbmigrateaipro/</guid>
      <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
      <description>After 20 years and 500+ enterprise database migrations, we got tired of the tools that existed. So we built our own — with AI-powered PL/SQL conversion, zero-downtime CDC cutover, and row-hash validation.</description>
      <category>Engineering</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Oracle to PostgreSQL Migration: A Complete Step-by-Step Guide</title>
      <link>https://medaxai.com/blog/oracle-to-postgresql-complete-guide/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-to-postgresql-complete-guide/</guid>
      <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
      <description>Everything you need to migrate from Oracle to PostgreSQL — schema conversion, PL/SQL transpilation, data migration, CDC cutover, and post-migration validation.</description>
      <category>Guide</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>PL/SQL to PL/pgSQL: What Changes and What Stays the Same</title>
      <link>https://medaxai.com/blog/plsql-to-plpgsql-conversion/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/plsql-to-plpgsql-conversion/</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description>A hands-on guide covering every PL/SQL construct that needs manual or automatic conversion to PL/pgSQL — packages, sequences, cursors, exceptions, and more.</description>
      <category>Engineering</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Zero-Downtime Database Migrations Using CDC</title>
      <link>https://medaxai.com/blog/zero-downtime-migrations-cdc/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/zero-downtime-migrations-cdc/</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <description>How Change Data Capture (CDC) enables near-zero-downtime cutover: run Oracle and PostgreSQL in sync for weeks, then flip the switch with seconds of downtime.</description>
      <category>Engineering</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>The 40-Point Oracle Migration Checklist (Before You Start)</title>
      <link>https://medaxai.com/blog/oracle-migration-checklist/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/oracle-migration-checklist/</guid>
      <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
      <description>Skip the painful surprises. This pre-migration checklist covers supplemental logging, XMLTYPE, partitioned tables, sequences, circular FKs, and 34 more gotchas.</description>
      <category>Best Practices</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>ETL vs ELT in 2026: Which Should You Choose?</title>
      <link>https://medaxai.com/blog/etl-vs-elt-2026/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/etl-vs-elt-2026/</guid>
      <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
      <description>The rise of cloud data warehouses changed the ETL vs ELT debate. We break down when each approach makes sense and how to pick the right pattern for your stack.</description>
      <category>Architecture</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
    <item>
      <title>Why Data Validation Is the Most Underrated Migration Step</title>
      <link>https://medaxai.com/blog/data-validation-migrations/</link>
      <guid isPermaLink="true">https://medaxai.com/blog/data-validation-migrations/</guid>
      <pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate>
      <description>Most migration failures aren&apos;t schema problems — they&apos;re data quality problems discovered too late. Here&apos;s how to build a validation layer that catches issues before production.</description>
      <category>Best Practices</category>
      <author>noreply@medaxai.com (Rakesh Mamidala)</author>
    </item>
  </channel>
</rss>
