Apr 20 2009

Upcoming Speaking Engagements

Tag: SpeakingChristian Antognini @ 4:56 pm

In May I’ll be speaking at two events and present a two-day class.

When Where What
2009-05-05 09:00-11:20 OakTable Day, Ljubljana (SI) Execution Plans
2009-05-11 12:05-13:05 Orcan Conference, Baltic Sea (SE/FI) Interpreting Execution Plans
2009-05-12 17.30-17.45 Orcan Conference, Baltic Sea (SE/FI) SQL Plan Baselines
2009-05-25/26 09:00-17:00 Trivadis, Glattbrugg (CH) Oracle Data Storage Internals

The abstracts of the presentations and the class are the following:

  • Execution Plans: An execution plan describes the operations carried out by the SQL engine to execute a SQL statement. Every time you have to analyze a performance problem related to a SQL statement, or simply question the decisions taken by the query optimizer, you must know the execution plan. Whenever you deal with an execution plan, you carry out three basic actions: you obtain it, you interpret it, and you judge its efficiency. The aim of this session is to describe in detail how you should perform these three actions.
  • Interpreting Execution Plans: An execution plan describes the operations carried out by the SQL engine to execute a SQL statement. Every time you have to analyze a performance problem related to a SQL statement, or simply question the decisions taken by the query optimizer, you must know the execution plan. Whenever you deal with an execution plan, you carry out three basic actions: you obtain it, you interpret it, and you judge its efficiency. The aim of this session is to describe in detail how you should perform the second of these three actions. In other words, how to read execution plans.
  • SQL Plan Baselines: A SQL plan baseline is an object associated with a SQL statement that is designed to influence the query optimizer while it generates execution plans. As of Oracle Database 11g, SQL plan baselines substitute stored outlines. Actually, they can be considered an enhanced version of stored outlines. The aim of this session is to explain what SQL plan baselines are, how to create and manage them, and when to use them.
  • Oracle Data Storage Internals: During this class, you will learn how Oracle stores data and indexes in blocks and segments, manages free space at the segment and the block level, and implements transactions. With this information you will be able, during the physical design, to minimize the access costs, to imcrease the throughput, and to avoid/minimize the fragmentation. The internal structure of the most important block types will be described in detail. The detailed content of this calss is the following:
    • Description of key identifiers (RDBA, ROWID, SCN, XID and UBA)
    • How to inspect blocks (formatted block dumps, BBED and raw blocks dumps)
    • Common block structures
    • Segment space management (extent map, high water mark, freelist, freelist groups, automatic segment space management, waits)
    • Transaction layer (block cleanout, interested transaction list, waits and deadlocks)
    • Undo block management (transaction table, undo chain)
    • Data storage (table and row directory, row migration/chaining, row format, compression, reorganizations)
    • Index Storage (B*Tree and bitmap concepts, structure, management, compression, reorganizations)
    • Corruptions (block checksum, block checking, find and resolve corruptions)

I will present the class Oracle Data Storage Internals in German. Later this year further dates will be planned in both German and English. If you are interested, do not hesitate to send me a message through the contact form.


Apr 09 2009

TVD$XTAT 4.0 Beta 9

Tag: SQL Trace, TOP, TVD$XTATChristian Antognini @ 8:08 am

This is just a short note to point out that I just uploaded under the section Downloadable Files of TOP a new version of TVD$XTAT. Not only I introduced some new features, but I also fixed a couple of major bugs related to memory consumption and poor performance…

The detailed change log since Beta 8 is the following:

  • Added formatting for bind variable values of type DATE
  • Added support for several execution plans for a single cursor
  • Added number of executions and hash value to execution plans
  • Added detection of incomplete execution plans
  • Added support for RPC bind variables
  • Added command-line option to control logging level
  • Added warning for 11.1.0.7 trace files (because of bug# 7522002 timing information might be wrong)
  • Improved data type detection to distinguish VARCHAR2 from NVARCHAR2 and CHAR from NCHAR
  • Improved handling of incorrectly formatted input lines
  • Changed logging formatter (time is displayed with the following pattern HH:mm:ss)
  • Reduced memory utilization for the processing of large trace files
  • Fix to prevent poor performance for the processing of large trace files
  • Fix to replace special characters not supported by XML (the unicode character FFFD is used istead of the special ones)
  • Fix in template to correctly handle space character in SQL text and bind variable values
  • Fix to ignore timestamp lines not generated by SQL trace

As always, your feedback is welcome!