RSS.Social

Tanel Poder Consulting

follow: @[email protected]

Posts

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!