Oracle
- Oracle Hint Scopes and Join Level Cardinality Hint
- 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 1 - Low Latency Commits
- xb.sql and xbi.sql - Explain Oracle Execution Plans Better! (Part 2)
- 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
- Oracle Wait Event Name vs. Display Name
- Reasons why SELECT * is bad for SQL performance
- 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
- 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)
- 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
- What Caused This Wait Event: Using Oracle's wait_event[] tracing
- Log file switch (checkpoint incomplete) wait events and LGWR waiting for checkpoint progress
- 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!
- 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 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
- 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
- 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!
- 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? :-)
- 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?!
- 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
- 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
- Scripts for showing execution plans via plain SQL and also in Oracle 9i
- “Free” DBA_HIST AWR views in 11g…
- 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
- 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
- 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
- Can you write a working SQL statement without using any whitespace?
- Why does Oracle parameter count change during session lifetime?
- Sqlplus is my second home, part 5: Reading the name of currently executing script
- 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 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 Session Snapper – real-time session-level performance stats for DBAs
- Advanced Oracle Troubleshooting Guide: When the wait interface is not enough [part 1]