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…
-
-
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…
-
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…
-
For many DBAs, the thought of running Oracle on a Windows OS induces a collective cringe. Even for someone like me, with a career spanning both Microsoft and Oracle technologies, it’s a combination I typically avoid. However, there are scenarios—driven by licensing, software requirements, or other factors—where deploying Oracle on Windows becomes the logical choice. I recently encountered such a scenario while assisting a team I enjoy working with at Redgate. The task was to refresh and streamline our demo virtual machine (VM) image, which included Oracle running on Windows. Here was my planned approach: Export any data that needed…
-
I’m passionate about making technology easier to understand, a mission I’ve pursued on my blog since 2008. However, I’ve faced challenges when educating newer Oracle users about the differences between single-instance (older architecture) and multitenant (newer architecture) models, as well as how these two architectures are connected. For those of us with extensive Oracle experience, these concepts may feel straightforward. This is especially true for professionals who work across multiple platforms, as Oracle was relatively late to adopt multitenancy. For instance, SQL Server has embraced this model since its earlier versions—going back to my experience with SQL Server 6.0—making it…