The use case: Help Me Learn My New Car As much as folks are lamenting about the new cloud version of Oracle support, I have other issues on my mind- like trying to acclimate to my first electric vehicle, even though I already owned a gas-powered Mini Cooper. As I was looking for a good use case to test new vector search with Oracle 26ai, it occurred to me that I could use something better than a key word search when using the manual to my new car. What if I used the manual, which is public information and could…
-
-
For anyone who has spent years tuning Oracle redo, the first time you look at PostgreSQL’s pg_stat_wal view may feel a bit underwhelming. Everything works, but the instrumentation isn’t the same and you suddenly realize how much Oracle has spoiled you with it’s advanced and expensive features. As I’ve been working deeper with PostgreSQL, I keep getting questions about how its WAL (Write-Ahead Logging) data compares to Oracle’s redo performance metrics. Let’s break it down in a way that makes sense for people who’ve been living in the Oracle world for years. PostgreSQL and What pg_stat_wal Actually Gives You PostgreSQL…
-
Oracle: Wait Classes & Events As discussed in an earlier blog post, Oracle groups wait events into wait classes like User I/O, System I/O, Concurrency, Network, Idle, Commit, and more. By grouping wait events into categories, it helps the technologist identify where time is being spent in the database, (DB Time) and as there is often a correlation between waits, identifying culprits. This two-tier model (Class → Event) lets you query V$SYSTEM_WAIT_CLASS or V$SYSTEM_EVENT for high-level patterns and drill into specific events, as in the example: “db file sequential read” falls under the wait class User I/O. Class-based stats streamlines…
-
As an Oracle DBA venturing into the world of PostgreSQL, one of the most important areas to get comfortable with is performance tuning. While Oracle’s Cost-Based Optimizer (CBO) is a well-known powerhouse that many DBAs have learned to both respect and wrestle with, PostgreSQL offers its own sophisticated query planner that behaves differently. Understanding these differences is key to becoming proficient with PostgreSQL as we step into tuning. In this post, we’ll explore: The role of pg_stat_statements in query tuning How PostgreSQL’s planner works And how tuning in PostgreSQL compares to the Oracle CBO experience pg_stat_statements the Work Horse Oracle…
-
Now that we finished Part 2 on physical data structures, storage and processes, it’s time to work our way into transaction control, locking and just a smidgen of performance insight. This post is for Oracle DBAs who want to understand PostgreSQL’s transaction and locking mechanics, as well as how to monitor and tune performance without diving into execution plans just yet. Think of this as your quick-reference mental shift guide from Oracle to PostgreSQL. Locking or What is MVCC Without Undo Segments In Oracle, locks and concurrency are managed using undo segments, redo logs, and sophisticated multi-versioning. PostgreSQL also uses…
-
In the previous post, I covered some high-level areas around installation and architecture, but for this post, we’re going to go a little deeper. For the seasoned Oracle DBA, this should feel like we’re stepping into a familiar landscape with just a few different rules. While both PostgreSQL and Oracle Database are robust, feature-rich systems, their physical architecture and internal mechanics diverge in key areas, especially around storage structures, memory architecture, and background processing. In this post, we’ll break down these differences so Oracle DBAs can feel more comfortable with the shift when they transition between the two. Physical Storage:…
-
With Oracle Database 12c, Oracle introduced Multitenant Architecture, a major shift in how databases are structured and managed. This architecture separates the Container Database (CDB), which holds the Oracle system metadata and manages operations from the user databases, officially called Pluggable Databases (PDBs). These containers hold the actual user data and applications. It was initially an option, but over time, Oracle has evolved it into the foundation of its database strategy. Starting with Oracle 23ai, Multitenant will no longer be optional but the default and required architecture, reinforcing Oracle’s push toward standardized, consolidated, and agile database environments. For DBAs, this…
-
In its traditional, (and free) configuration, Oracle Data Guard operates in an active/passive architecture. This incredibly well-designed and valuable solution from Oracle which comes included with the Enterprise Edition has as part of its architecture: A primary database, which is an active, accessible database system. One or more standby databases, which are passive replicas that continuously receive redo data from the primary. The standby databases receive a continuous changes from redo. By sending redo data from the primary across the network and applying it to the standby, the two are kept in sync. This is done using the Log Transport…
-
When you first begin your journey into Oracle performance tuning, you quickly discover that you’re not just working with databases, you’re deciphering a complex system of rules, statistics, and estimations. I was reminded by Connor McDonald in a post he made on LinkedIn about one of the most influential turning points in my career as a database professional came when I encountered Wolfgang Breitling’s 2003 paper – A Look Under the Hood of the CBO: the 10053 Event. At a time when I was focused on tuning queries for speed, Wolfgang’s work redefined how I thought about cost, and more…
-
Furthering on our Oracle Real Application Clusters (RAC) knowledge, we’re going to go deeper into what we watch for a RAC database that may be different than a single instance. RAC is built for scale and instance resilience, distributing workloads across multiple nodes. At the same time, what gives it strength introduces monitoring complexity, especially when you’re not just watching a single instance but multiple, interconnected ones. To manage performance effectively in RAC, you need to understand the difference between V$ and GV$ views, what they show you, and how to interpret cluster-level wait events. Along with performance, the overall…
-
After my last blog post on Oracle Real Application Clusters (RAC) I was asked to talk about both health and how performance impact can affect a RAC database. Its architecture enables failover, workload distribution, and offers an option to scale performance, but only when all nodes play well together. When one node drags behind or becomes unstable, RAC has no choice but to protect the rest of the cluster- so help me, Oracle Gods. This protection can come in the form of node eviction, which can be both disruptive and at times avoidable with proactive monitoring and intervention. Why Node…
-
The request of me today was to start blogging on Oracle Real Application Clusters (RAC) so here we go, down into the rabbit hole! I admit fully to having a love/hate relationship with RAC. I love redundancy, scalability, and instance resiliency in RAC beneficial, but many of the unnecessary complexities and overhead frustrates me. I absolutely come up against traditional OLTP workloads that scream out for RAC to scale to the level they require day-to-day, but also know there’s a ceiling that will be reached that RAC can’t solve, requiring at some point for database design, code and application to…
-
I was caught off guard last week when the “Congratulations on your work anniversary!” messages started rolling in on LinkedIn. It had slipped my mind that it had already been a full year since I began contracting with Redgate back in May 2024. And, true to form, LinkedIn, always eager to simplify the complexities of tech careers and notified my entire network that I’d officially hit the one-year mark, although I hadn’t started full-time till the beginning of October. It can almost feel like an identity crisis as you perform so many roles for different organizations – thrilling and satisfying…
-
After publishing my last post on Oracle Wait Classes, I received a great question on LinkedIn: “How do you identify the SQL statement or the cause of high CPU when the top wait event is ‘resmgr:cpu quantum’?” It’s a common (and frustrating) performance issue in Oracle. So today, we’ll walk through how to identify and troubleshoot it. What is resmgr:cpu quantum? Let’s break it down: RESMGR = Oracle Resource Manager CPU Quantum = The time slice a session is allowed to consume CPU This wait event indicates that a session is throttled by Oracle Resource Manager because it’s trying to…
-
When we talk about optimization in Oracle, many DBAs immediately jump into metrics like CPU utilization, I/O throughput, or specific SQL queries. But there’s a critical layer of understanding that often gets overlooked and that’s Oracle Wait Classes. These categories are essential to making sense of what’s really going on inside your database, and they’re often the starting point for diagnosing and optimizing performance. What Are Oracle Wait Classes? In Oracle, wait events represent specifics the database is waiting on, such as a latch, a lock, a disk read, or a response from the network or application. But looking at…
-
After the initial overview of memory monitoring in Oracle, particularly around the SGA and PGA, I wanted to take a deeper dive into the most common Oracle memory configurations. These include how memory settings are defined, how they interact, and the combinations you’re likely to encounter across different workloads. Oracle memory is a no-brainer for many of us who’ve been in the space for an extensive time, but I’ve come to realize, it can be a bit overwhelming and especially with recent changes from Oracle 12c on. How Memory Settings Are Applied in Oracle Oracle memory parameters can be configured…
-
When describing Oracle features to folks that are new to the platform or coming from other database platforms, I found it’s best to keep it simple, but take on the important aspects of the technology. I’m going to take on a few more posts on Oracle internals from the perspective of the individual new to Oracle. To start, I’ve been having some long discussions, as well as documenting how Oracle memory works and how we monitor it when you don’t have the diagnostic and tuning pack at your disposal. With the exclusion of these management packs, you have to be…
-
When building products that interact with multiple database platforms, the complexity can be both a challenge and an opportunity. For Subject Matter Experts (SMEs), observing design decisions made without sufficient knowledge of underlying database architecture can be particularly frustrating. These moments highlight the critical need for architectural foresight and platform-specific expertise to avoid pitfalls that compromise scalability, performance, and maintainability. I’ve been managing multiple platforms for a couple decades and in recent years, building products that support the most popular enterprise and open-source databases today. I’m keenly aware of lacking documentation, either due to limited resources or hopes of directing…