Tanel Poder Consulting
The xCapture and xtop eBPF tools are now in beta, with a demo dataset
CatVector Demo Website
New Tool: xstack - Completely Passive eBPF Linux Stack Profiling Without Any Tracepoints
Dimensional Analysis of System Performance with eBPF & xtop: Top for Wall-Clock Time
Webinar: Testing High-Performance Vector Search With CatBench on Google AlloyDB Omni
My Blog Has Turned 18 Years Old
Catbench Vector Search App has Postgres Query Throughput and Latency Monitoring Now
Using Postgres pg_test_fsync tool for testing low latency writes
Find which Oracle SQL_ID hits the SQL*Net break/reset to client event
New Tool: lsds - List All Linux Block Devices and Settings in One Place
Optimizing eBPF I/O latency accounting when running 37M IOPS on a 384-CPU server
xCapture v3: Linux Performance Analysis with Modern eBPF and DuckDB
Core Function Words Translated between English, Spanish, German, French and Swedish
When eBPF task->stack->pt_regs reads return garbage on the latest Linux kernels, blame Fred!
TracepointArgs: List Any Linux Tracepoint with Their Arguments, Datatypes and Related Structs
CatBench Vector Search Playground
Embedding Vectors of the Same Image Rotated Over 360 Degrees
SQL Plan Execution FlameGraphs with Loop and Row Counts
Embedding Vectors vs. Vector Embeddings
Video: Testing the Silk Platform in 2024 Interview (12 minutes)
Testing the Silk Platform in 2024: Achieving 20 GiB/s I/O Throughput in a Single Cloud VM
Visualizing and Comparing Embedding Vectors as Heatmaps (Videos)
Visualizing and Comparing Embedding Vectors as Heatmaps
Tracking, not Tracing, Linux Thread Activity for Complete System Visibility (eBPF Summit)
Python Supports Profiling with Perf - How Does It Work?
Can a User Process Consume Kernel Mode CPU Without a Syscall?
Next Big Thing: X-Ray Vision for Linux Systems with eBPF
Syscallargs: List All Linux System Calls With Their Arguments
RTX4090 converted into an eGPU
Oracle Hint Scopes and Join Level Cardinality Hint
New Commenting System
Oracle Shared Pool Internals: Allocated Chunk Status Indicators in Heap Dumps
Oracle Index Parallel Degree Fix After Parallel Creation or Rebuild
Report Current Oracle Session Wait Chains from GV$SESSION without ASH
Advanced Oracle Troubleshooting Guide, Part 13: OStackProf for Linux, Unix & MacOSX Clients
Testing Oracle's Use of Optane Persistent Memory, Part 2 - Fast Log File Sync Waits
Testing Oracle's Use of Optane Persistent Memory, Part 1 - Low Latency Commits
MySQL Now Shows its Thread Names at OS Level for Better Troubleshooting
xb.sql and xbi.sql - Explain Oracle Execution Plans Better! (Part 2)
My New Learning Platform and What I'm Up To in 2022
Achieving 10 GB/s Scanning Rate in a Single Cloud VM
Testing The Silk Platform - Hands-On Technical Analysis of High-Performance I/O in the Cloud
Virtual Conference: Troubleshooting Very Complex Oracle Performance Problems
Do Not Use '>' in Your Command Prompt (and How to Stay Safe in Shell)
Video: Troubleshooting Complex Oracle Issues Part 2
Is Your Linux Version Hiding Interrupt CPU Usage From You?
Video: High Performance Block I/O on Linux
Achieving 11M IOPS & 66 GiB/s IO on a Single ThreadRipper Workstation
Oracle Wait Event Name vs. Display Name
Measuring Java JVM thread activity in Linux with task state sampling
Reasons why SELECT * is bad for SQL performance
High System Load with Low CPU Utilization on Linux?
Hacking Session: 7 Levels of Hint Invalidity in Oracle SQL
Hacking Session: Oracle SQL Monitoring - Understanding the Execution Timeline column and CPU usage
Virtual Conference: Systematic Oracle SQL Optimization Interview Videos
Oracle Fatal Background Processes
Virtual Conference Update: Systematic Oracle SQL Optimization in 2020
Oracle Shared Pool Internals: List Chunk Position in the LRU List
SchedLat: a Low Tech Script for Measuring Process CPU Scheduling Latency on Linux
Announcing My Retirement (in 2030)!
ORA-12850: Could not allocate slaves on all specified instances error and a workaround for my scripts
Oracle Performance Troubleshooting Without OS Access, Part 1: Identifying CPU Scheduling Latency
Video: Troubleshooting Complex Oracle Performance Problems (Jan 2020)
Hacking Session: Troubleshooting Complex Oracle Performance Problems (January 2020)
help.sql: Show TPT Script Purpose and Syntax
Oracle State Objects and Reading System State Dumps Hacking Session Video
New scripts: xb.sql and xbi.sql - Explain Oracle Execution Plans Better! (Part 1)
Dump Current Oracle SQL Execution Plan Line ID Using Oradebug
pSnapper: Linux Process Snapper Page and Videos
Announcing Linux Process Snapper tool and a Linux Troubleshooting Hacking Session (3rd April 9am PDT)
What Caused This Wait Event: Using Oracle's wait_event[] tracing
Tutorial: Troubleshooting Linux SSH Login Delay - Why does logging in always take 10 seconds?
Practical Linux Performance & Application Troubleshooting Training Details and Table of Contents
Scripts for Drilling Down Into Unknown Optimizer Changes
Visualizing SQL Plan Execution Time With FlameGraphs
Generate Oracle SQL Monitoring Reports as HTML using SQL Developer v18.3 (no Flash needed)
Log file switch (checkpoint incomplete) wait events and LGWR waiting for checkpoint progress
Oracle SQL Monitoring and Advanced ASH Usage Hacking Sessions!
Oracle SQL Tuning training & Oracle Troubleshooting training and some Linux stuff too!
Webinar: Troubleshooting a Complex Oracle Performance Issue
My Performance & Troubleshooting scripts (TPT) for Oracle are now in GitHub and open sourced
Video: Oracle X$TRACE, Wait Event Internals and Background Process Communication
Secret Hacking Session: Oracle Background Process Communication, Exotic Wait Events and Some Tracing too
Advanced Oracle Troubleshooting seminar in 2018!
Apache Impala Internals Deep Dive with Tanel Poder + Gluent New World Training Month
GNW01: In-Memory Processing for Databases
My BIWA Summit Presentations
RAM is the new disk – and how to measure its performance – Part 3 – CPU Instructions & Cycles
My New Youtube Channel
Troubleshooting Another Complex Performance Issue – Oracle direct path inserts and SEG$ contention
SQL Monitoring in Oracle Database 12c
Advanced Oracle Troubleshooting v2.5 (with 12c stuff too)
RAM is the new disk – and how to measure its performance – Part 2 – Tools
RAM is the new disk – and how to measure its performance – Part 1 – Introduction
The Hybrid World is Coming
Old ventures and new adventures
Advanced Oracle Troubleshooting Guide – Part 12: control file reads causing enq: SQ – contention waits?
Sqlplus is my second home, part 8: Embedding multiple sqlplus arguments into one variable
Oracle Exadata Performance: Latest Improvements and Less Known Features
Oracle In-Memory Column Store Internals – Part 1 – Which SIMD extensions are getting used?
About index range scans, disk re-reads and how your new car can go 600 miles per hour!
Combining Bloom Filter Offloading and Storage Indexes on Exadata
What the heck are the /dev/shm/JOXSHM_EXT_x files on Linux?
Oracle Memory Troubleshooting, Part 4: Drilling down into PGA memory usage with V$PROCESS_MEMORY_DETAIL
Slides of my previous presentations
Where does the Exadata storage() predicate come from?
Oracle X$ tables – Part 1 – Where do they get their data from?
cell flash cache read hits vs. cell writes to flash cache statistics on Exadata
Hard Drive Predictive Failures on Linux and Exadata
When do Oracle Parallel Execution Slaves issue buffered physical reads – Part 2?
When do Oracle Parallel Execution Slaves issue buffered physical reads – Part 1?
Diagnosing buffer busy waits with the ash_wait_chains.sql script (v0.2)
SGA bigger than the amount of HugePages configured (Linux – 11.2.0.3)
Why doesn’t ALTER SYSTEM SET EVENTS set the events or tracing immediately?
Advanced Oracle Troubleshooting Guide – Part 11: Complex Wait Chain Signature Analysis with ash_wait_chains.sql
Oracle Performance & Troubleshooting Online Seminars in 2013
Scalar Subqueries in Oracle SQL WHERE clauses (and a little bit of Exadata stuff too)
ShowMOS: How to get rid of the annoying “The Page has Expired” dialog in My Oracle Support
Oracle 12c: Scalar Subquery Unnesting transformation
Oracle Database 12c R1 (12.1.0.1.0) is finally released!
Getting the Most Out of ASH online seminar
Forcing Smart Scans on Exadata – is the _serial_direct_read parameter safe to use in production?
Debugger Dangers – Part 2
List Exadata Storage Cell disk summary with cellpd.sql and cellpdx.sql scripts
List Exadata Disk Layout and Topology with the exadisktopo scripts
V$CELL_THREAD_HISTORY – “ASH” for Exadata Storage Cells
Understanding what a hint affects using the V$SQL_FEATURE views
Listing Exadata storage cells and their configuration info from V$CELL_CONFIG
Alter session force parallel query doesn’t really force anything
asqlmon.sql: SQL Monitoring-like execution plan line level drilldown into SQL response time
ExaSnapper 0.7 beta download and the hacking session videos
Peeking into Linux kernel-land using /proc filesystem for quick’n’dirty troubleshooting
Even more Snapper – v4.03 now works in SQL Developer too!
Manual “before” and “after” snapshot support in Snapper v4
Snapper v4.02 and the Snapper launch party video
Drilling Deep Into Exadata Performance with ASH, SQL Monitoring and Exadata Snapper – slides and a hacking session!
Troubleshooting high CPU usage with poor-man’s stack profiler – in a one-liner!
Session Snapper v4 – The World’s Most Advanced Oracle Troubleshooting Script!
Sqlplus is my second home: Part 7 – Downloading files via sqlplus :-)
Japanese translation of some of my blog articles
What the heck is the INTERNAL_FUNCTION in execution plan predicate section?
A tip for lazy Oracle users – type less with ANSI DATE and TIMESTAMP SQL syntax
Snapper v3.61 released – and more work is in progress!
Select statement generating redo – and lost write detection
Sqlplus is my second home: Part 6 – Colorizing sqlplus and terminal output
Optimizer statistics-driven direct path read decision for full table scans (_direct_read_decision_statistics_driven)
The limitations of CURSOR_SHARING = FORCE and FORCE_MATCHING_SIGNATURE for SQL plan stability
MOATS-like sqlplus “top” utility for RAC
Oradebug hanganalyze with a prelim connection and “ERROR: Can not perform hang analysis dump without a process state object and a session state object.”
Advanced Oracle Troubleshooting Guide – Part 10: Index unique scan doing multiblock reads?!
Where is LOB data stored?
Exadata Smart Scan predicate offloading and sequence.NEXTVAL
Create a database link with the new host:port/service syntax
Oracle Core: Essential Internals for DBAs and Developers book by Jonathan Lewis
Profiling trace files with preprocessor external tables in 11g and some parallel execution hacking
Evil things are happening in Oracle
What the heck is the SQL Execution ID – SQL_EXEC_ID?
V8 Bundled Exec call – and Oracle Program Interface (OPI) calls
Full scans, direct path reads and ORA-8103 error hacking session video
Are you getting the most out of your Exadata performance? Part 1
What is the purpose of segment level checkpoint before DROP/TRUNCATE of a table?
Another cache buffers chains latch contention troubleshooting example using LatchProf
Tech Reviewer, Tech Reviewer! ;-)
IOUG Select Journal Editor’s Choice Award 2011
Knowing what you want to achieve before thinking of how to achieve it – a query optimization example
Running SELECT … INTO :bind_variable from SQL
Latch contention troubleshooting case study and Flashback Database performance issues with LOBs
MOATS: The Mother of All Tuning Scripts!
An index of my TPT scripts
LOBREAD SQL Trace entry in Oracle 11.2 (and tracing OPI calls with event 10051)
Implicit datatype conversion in the parsing phase – something new I learned today!
ORA-4031 errors, contention, cursor management issues and shared pool fragmentation – free secret seminar!
Exadata CAN do smart scans on bitmap indexes
Oracle Exadata Performance series – Part 1: Should I use Hugepages on Linux Database Nodes?
Finding Oracle Homes which Oracle instances are using on Linux
New cursor_bind_capture_destination parameter in Oracle 11.2.0.2
Performance Stories from Exadata Migrations
Is this valid SQL syntax? :-)
Snapper 3.52 – With Oracle 9.2 support!
Asynch descriptor resize wait event in Oracle
A little new feature for shared pool geeks :-)
COUNT STOPKEY operation (the where ROWNUM <= N predicate) doesn't process over ~4 Billion rows and returns wrong results
Read currently running SQL statement’s bind variable values using V$SQL_MONITOR.BIND_XML in Oracle 11.2
The most fundamental difference between hash and nested loop joins
Oracle Closed World presentation links
Which number takes more space in an Oracle row?
Exadata v2 Smart Scan Performance Troubleshooting article
Dropping and creating tables in read only tablespaces?!
The full power of Oracle’s diagnostic events, part 2: ORADEBUG DOC and 11g improvements
Oracle memory troubleshooting article
Flexible Sqlplus command line history with RLWRAP
Execution plan Quiz: Shouldn’t these row sources be the other way around ;-)
Quiz: Explaining index creation
cursor: pin S waits, sporadic CPU spikes and systematic troubleshooting
KGH: NO ACCESS – Buffer cache inside streams pool too!
Non-trivial performance problems
Calculate SQL_ID and SQL_HASH_VALUE from SQL text
Oracle Latch Contention Troubleshooting
Oracle Session Snapper v3.10
How to CANCEL a query running in another session?
New versions of LatchProf and LatchProfX for latch contention troubleshooting and tuning
Oracle Troubleshooting: How to read Oracle ERRORSTACK output?!
Using Process Memory Matrix script for calculating Oracle process memory usage on Solaris
Oracle Wait Event reference
Oracle Peformance Visualization…
Bind Variable Peeking – execution plan inefficiency
Recursive sessions…
Sometimes things are easy (Part 1): How to fix wrapped execution plan text?
Beyond Oracle Wait Interface – Part 2
NULL is not zero!
Measuring what matters
Finding the reasons for excessive logical IOs
Explain Plan For command may show you the wrong execution plan – Part 1
Detect chained and migrated rows in Oracle – Part 1
What’s a good way to learn some Oracle internals every day?
SystemTap is production supported in Redhat EL5.4
KGL simulator, shared pool simulator and buffer cache simulator – what are these?
KGH: NO ACCESS allocations in V$SGASTAT – buffer cache within shared pool!
Oracle 11gR2 has been released – and with column oriented storage option
latch: cache buffers chains latch contention – a better way for finding the hot block
Select COUNT(*) and COUNT(column) are different things!
Alter system kill session and ORA-00031: session marked for kill
An interview with me
How to detect when a cursor was closed from SQL trace output?
Identify the SQL statement causing those WAIT #X lines in a (top-truncated) sql tracefile
(Secret) Preview of Oracle 12g CBO leaked from Oracle labs…
Oracle memory troubleshooting, Part 3: Automatic top subheap dumping with heapdump
Using Perfsheet and TPT scripts for solving real life performance problems
ORA-04031 errors and monitoring shared pool subpool memory utilization with sgastatx.sql
Oracle Performance Visualization videos from Sydney
Scripts for showing execution plans via plain SQL and also in Oracle 9i
“Free” DBA_HIST AWR views in 11g…
I have been troubleshooting since I was a kid! :)
Tracing Oracle SQL plan execution with DTrace
Seminar feedback and pictures from Singapore
Read OS environment variables using DBMS_SYSTEM.GET_ENV()
I’m an Oracle ACE Director now :)
Oracle 11g: Reading alert log via SQL
Another LatchProfX use case
The real history of Oracle database revealed!
Oracle, Timesten and PL/SQL support
The full power of Oracle’s diagnostic events, part 1: Syntax for KSD debug event handling
60000 bind variables?! Maybe it’s time to use a temporary table instead…
SQL_ID is just a fancy representation of hash value
Performance Visualization, Capacity planning and Hotsos Symposium
When was a table last changed?
Multipart cursor subexecution and PRECOMPUTE_SUBQUERY hint
Identifying shared memory segment users using lsof
Reliable latch waits and a new blog
Oracle memory troubleshooting, Part 1: Heapdump Analyzer
Performance Visualization made easy – PerfSheet 2.0 beta
A little oradebug enhancement in Oracle 11g
Advanced Oracle Troubleshooting Guide, Part 9 – Process stack profiling from sqlplus using OStackProf
Transportable tablespaces and ROWID uniqueness
VLDB 2008 proceedings, Oracle optimizer plan stability, adaptive cursor sharing and SecureFiles
Oracle hidden costs revealed, Part2 – Using DTrace to find why writes in SYSTEM tablespace are slower than in others
Flexible sampling of any V$ or X$ view with sample.sql
Case study on some rowcache internals, cached non-existent objects and a describe bug
Why does even a small difference in SQL text cause a hard parse?
Script: Display valid values for multioption parameters (including hidden parameters)
The simplest query for checking what’s happening in a database
Library cache latches gone in Oracle 11g
Advanced Oracle Troubleshooting Guide, Part 8: Even more detailed latch troubleshooting using LatchProfX
Closed database and WITH subquery
Advanced Oracle Troubleshooting Guide, Part 7: Sampling latch holder statistics using LatchProf
Another use case for WaitProf – diagnosing “events in waitclass Other”
Killing an Oracle process from inside Oracle
cursor_space_for_time To Be Deprecated
Advanced Oracle Troubleshooting Guide, Part 6: Understanding Oracle execution plans with os_explain
Debugger dangers
Short note on KGX Mutexes
Generating lots of rows using connect by – safely!
Advanced Oracle Troubleshooting Guide, Part 5: Sampling V$ stuff with WaitProf. Really fast. Using SQL!
Performance Tools Quick Reference Guide
Advanced Oracle Troubleshooting Guide, Part 4: Diagnosing a long parsing issue
Snapper shortcut
Querying the current tracefile name, using SQL – with tracefile_identifier
Oracle Troubleshooting with Snapper – detecting who’s causing excessive redo generation
Performance and Scalalability Improvements in Oracle 10g and 11g
Using autonomous transactions for sleeping
SQL*Net break/reset to client
SQL*Net message to client vs SQL*Net more data to client
SQL*Net message to client wait isn’t really what it’s thought to be
Oracle hidden costs revealed, part 1 – Does a batch job run faster when executed locally?
Excellent article on Oracle 11g PL/SQL function result cache
Can you write a working SQL statement without using any whitespace?
Expensive calculator…
Why does Oracle parameter count change during session lifetime?
Systematic application troubleshooting in Unix
Perl version of Snapper
Sqlplus is my second home, part 5: Reading the name of currently executing script
Oracle Security, Part 2: Your read only accounts aren’t that read only
Sqlplus is my second home, part 4: Getting sqlplus parameter value into a variable
A simple interview question
How to resolve SQL object and column names all the way to base tables and columns in Oracle?
Advanced Oracle Troubleshooting Guide, Part 3: More adventures in process stack
Sqlplus is my second home, part 3: Colored selections in Windows XP command prompt
Sqlplus is my second home, part 2: Running SQL scripts from remote locations using HTTP
Operating systems are lazy allocating memory
Advanced Oracle Troubleshooting Guide, Part 2: No magic is needed, systematic approach will do
Oracle Session Snapper, part 2: Getting most out of Snapper
Oracle 11g internals part 1: Automatic Memory Management
Oracle Session Snapper – real-time session-level performance stats for DBAs
Sqlplus is my second home, Part 1: HTMLizing your sqlplus output
Session-level statspack
A gotcha with parallel index builds, parallel degree and query plans
My version of SQL string to table tokenizer
Advanced Oracle Troubleshooting Guide: When the wait interface is not enough [part 1]
Advanced Oracle SQL Tuning Training
Confirmation
Practical Linux Performance and Application Troubleshooting Training
Thanks for Signing Up!