Plötzliche Änderung von Query-Laufzeiten

Jonathan Lewis hat eine interessante Liste veröffentlicht, die mögliche Gründe für eine plötzliche Verlangsamung einer Query, die vorher deutlich schneller ausgeführt wurde, aufführt - der umgekehrte Fall ist natürlich auch denkbar, führt aber seltener zu Beschwerden.

NULL IS NOT NULL-Filter und Bindevariablen

Der folgende Test verdankt sich wieder einer Fragestellung im OTN-Forum, wobei ich die eigentliche Anfrage möglicherweise etwas frei interpretiert habe. Gegeben ist eine Query, in der in einer inline-View mehrere Subqueries über UNION ALL verknüpft sind, und in der äußeren Abfrage eine Einschränkung auf einen konstanten Wert erfolgt, der (more...)

Join Cardinality bei dynamic sampling

Im OTN Forum wurde heute die Frage gestellt, warum die join cardinality für eine Query mit einem Join zweier Tabellen über Spalten ohne übereinstimmende Werte bei Verwendung von dynamic sampling in 11g komplett falsch berurteilt wurde: statt einer Selektivität von 0 erwartet der Optimizer im Beispiel eine Selektivität von 10%. (more...)

compression in 12c

Angesichts der vorhin erwähnten Untersuchung von Julian Dyke habe ich noch mal überprüft, ob sich hinsichtlich des Themas compression in 12c Grundsätzliches verändert hat, und dazu folgendes Script verwendet:

drop table t_no_compress;
drop table t_basic_compress;
drop table t_oltp_compress;

create table t_no_compress
as
select rownum id
, 10 col1
, lpad('*', (more...)

Noch einmal OLTP compression

Julian Dyke erklärt "why OLTP compression is still always not a good idea." Dazu gibt's ein kompaktes Beispiel, dass einmal mehr zeigt, dass OLTP compression bei reinen Update workloads kontraproduktiv ist.

#describe in sqlplus

Ein nettes kleines sqlplus Feature auf das Neil Chandler dieser Tage in seinem Blog hinweist: mit #desc kann man in sqlplus das describe Kommando aufrufen, während man an einem pl/sql Block arbeitet, ohne dazu die Editieroperation beenden zu müssen:

SQL> declare
2 cnt number;
3 begin
4 select
5 #desc (more...)

Repräsentation Adaptiver Pläne in ASH

Christian Antognini untersucht in seinem Blog die Darstellung adaptiver Pläne in ASH. Dabei weist er zunächst darauf hin, dass zu den unterschiedlichen Plan-Varianten unterschiedliche plan hash values vorliegen (was keine besondere Überraschung darstellt). Wenn die runtime engine während der Ausführung der Query auf den Alternativplan ausweicht, dann erscheint anschließend der (more...)

BATCHED im Execution Plan für 12c

Im Pythian-Blog schreibt Timur Akhmadeev über seine Tests zur Bestimmung der Bedeutung der Operation
TABLE ACCESS BY INDEX ROWID BATCHED
im Exceution Plan für 12c. Grundsätzlich ist die Sammlung und Sortierung der im Index aufgefundenen rowids vor dem Zugriff auf die Tabelle nichts Neues: sie tritt auch schon in 11g (more...)

Unsichtbare Spalten

Richard Foote erläutert in seinem Blog die grundlegenden Eigenschaften von invisible columns und weist dabei insbesondere auf einen interessanten Nebeneffekt hin: durch die Änderung der Sichtbarkeit kann man die Reihenfolge der Spalten in der Anzeige ändern. Dazu ein Beispiel:

drop table t;

create table t (
a number
, b (more...)

Suche in Tabellen ähnlicher Struktur

Wieder war es eine Frage im OTN-Forum, die mich an etwas erinnert hat, das ich fast vergessen hatte: die Möglichkeit, mit Hilfe von XML-Funktionen innerhalb einer Query auf alle Tabellen zuzugreifen, die eine Spalte mit einem bestimmten Namen haben. Wenn ich z.B. herausfinden will, wie viele Datensätze in (more...)

PIVOT und UNPIVOT

Gestern hatte ich hier Frank Kulashs schöne PIVOT+UNPIVOT-Lösung zu einem relativ seltsamen SQL-Problem untergebracht und passend dazu liefert heute Alex Nuijten ein umfassenderes Beispiel zum Thema.

Umsortierung von Werten in einem Datensatz

Wieder mal ein aussageschwacher Titel - aber in diesem Fall glaube ich, dass die Fragestellung tatsächlich schwer auf den Punkt zu bringen ist. Worum es geht, ist Folgendes: im OTN-Forum SQL and PL/SQL wurde dieser Tage die Frage gestellt, wie man die Daten der folgenden Tabelle so umordnen kann, dass (more...)

Vereinfachte Administration für Partitionierte Tabellen in 12c

Gwen Lazenby zeigt im Blog der Oracle University ein paar nette Verbesserungen bei der Administration partitionierter Tabellen, die mit Release 12c eingeführt wurden. Hauptsächlich geht es dabei um die Möglichkeit, diverse Partitionen mit einem einzelnen Kommando zu behandeln - also zu erzeugen, zu splitten, zu verschmelzen oder zu löschen. Dabei (more...)

Reverse Indizes und Remote-Zugriffe

Jonathan Lewis zeigt ein recht erstaunliches Phänomen, das einerseits merkwürdig und andererseits dokumentiert ist - seit den Tagen von Oracle 8.1.5 gilt: "Reverse indexes on remote tables are not visible to the optimizer. This can prevent nested-loop joins from being used for remote tables if there is an (more...)

Bytes Angaben für View-Operatoren im Ausführungsplan

Manchmal stellt mich die Aufgabe der Wahl eines passenden Titels für einen Blog-Eintrag vor unlösbare Schwierigkeiten...

Vor knapp einem Monat hat Randolf Geist einen Artikel mit dem deutlich griffigeren Titel View Data Volume Estimates veröffentlicht, den ich an dieser Stelle kurz zusammenfasse, um die Chance zu erhöhen, mich bei (more...)

Postgres: Database Links und Foreign Data Wrapper

Es gibt viele Dinge, die mir an postgres ausgesprochen gut gefallen: die Datenbank hat einen sehr ausgereiften SQL-Dialekt, eine erstaunliche Erweiterbarkeit, zahllose Datentypen und mit psql einen sehr schönen command line client. Wenn ich allerdings darüber nachdenke, was mir an diesem RDBMS weniger gut gefällt, dann gehört dazu die Tatsache, (more...)

Jonathan Lewis über Parallel Execution

Vor ein paar Wochen hat Jonathan Lewis eine Artikelserie begonnen, in der er erklärt, wie parallele Operationen durchgeführt werden und wie man parallele Pläne interpretieren kann:
  • weist zunächst darauf hin, dass serielle Pläne in der Regel relativ harmlos bleiben und liefert ein paar Hinweise auf Fälle, (more...)

inoffizielle display_cursor Dokumentation

Eines der wichtigsten - aber leider offiziell nicht besonders gut dokumentierten - Hilfsmittel bei der Analyse von SQL-Zugriffsproblemen mit Oracle ist sei Release 10 die Prozedur dbms_xplan.display_cursor, zu der Kyle Hailey in seinem Blog eine ziemlich umfassende Erläuterung liefert (inklusive seiner Hilfs-Scripts zur grafischen Darstellung der Abweichung von E- (more...)

sqlplus output Komprimierung

Eine nette Idee, die Frits Hoogland in seinem Blog vorstellt: die Komprimierung von sqlplus output mit Hilfe einer named pipe:
This solution will look familiar to “older” Oracle DBA’s: this was how exports where compressed from the “original” export utility (exp).
Der Vorteil dieser Variante ist, dass eine Komprimierung während (more...)

Oracle 12c: in database archiving

Julian Dontcheff hat dieser Tage in seinem Blog eine ganze Reihe von Links zum Thema in-database archiving zusammengetragen und ein paar Bemerkungen zu den Performance-Aspekten dieses neuen Features gemacht - und mich damit auf die Idee gebracht, das Verhalten dieser Option etwas genauer zu betrachten. Ausgangspunkt war dabei die folgende (more...)