All writing

Eighteen years inside the databases the world runs on

Upgrades, migrations, RAC, Data Guard, and the occasional ORA-0600 at 2am. What a career deep in Oracle's internals teaches you about complex systems.

1 min read

I have spent my career somewhere most people never look: inside the database. From Oracle 10g through 23ai, my work was to lead testing and validation for releases that thousands of businesses would later trust with everything they have — upgrades, patching, migration, provisioning.

That work has a vocabulary that sounds like noise from the outside and like home to me: RAC and Data Guard, GoldenGate and In-Memory, Transparent Data Encryption, multi-tenant CDB/PDB architecture, RMAN backups, transportable tablespaces, the dreaded ORA-0600 and ORA-07445.

What the database taught me about systems

Working this deep in one system for this long changes how you think:

  • Migrations are where truth hides. A feature that looks perfect in isolation reveals its real character only when you move a large, messy, live environment onto it. I have run those upgrades to 19c, 21c, and 23ai, and the surprises were never in the slides.
  • Root cause or it didn't happen. When you chase an ORA-0600 to ground, you stop accepting "it works now" as an answer. Something caused it, and "it went away" is not a cause.
  • Performance is a discipline, not a coincidence. Watching AWR reports and tuning slow SQL teaches you that "fast enough" is a measurement, not a feeling.

None of this is glamorous. All of it is the substrate the glamorous things are built on. As I move toward product, I'm finding that the instinct the database gave me — assume nothing, verify everything, respect the load — travels surprisingly well.

Written by Roma Bisht in Bengaluru, India.

Get new writing in your inbox

No schedule, no spam — just new essays when they’re ready. The slow web, delivered slowly.

Comments

Sign in with GitHub to join the conversation.

Comments aren’t wired up yet. Enable GitHub Discussions on your repo, visit giscus.app to get your IDs, then fill the giscus block in src/site.config.ts. Sign-in via GitHub keeps it spam-free and moderated.