SlideShare ist ein Scribd-Unternehmen logo
Oracle-DB
Beeinflussen der Ausführungspläne von
SQL-Statements ohne Code-Anpassung
Verschiedene Verfahren und ihre Unterstützung durch Panorama
April 2018Peter Ramm, OSP Dresden
Gründung:
März 1991
Muttergesellschaft:
OTTO Group
Standorte:
Dresden, Hamburg, Burgkunstadt, Taipeh, Bangkok
Mitarbeiterzahl:
Ca. 250
Geschäftsführer:
Dr. Stefan Borsutzky, Norbert Gödicke, Jens Gruhl
Otto Group Solution Provider Dresden GmbH
www.osp.de
zur Person
Peter Ramm
Teamleiter strategisch-technische Beratung bei OSP Dresden
> 20 Jahre Historie in IT-Projekten
Schwerpunkte:
• Entwicklung von OLTP-Systemen auf Basis von Oracle-
Datenbanken
• Architektur-Beratung bis Trouble-Shoo]ng
• Performance-Op]mierung bestehender Systeme
Mail: Peter.Ramm@ottogroup.com Tel.: 0351 49723 150
Motivation
Dabei werden im folgenden betrachtet:
• SQL Plan Baselines
• SQL Profiles
• SQL Patches
• SQL Translations
• Einfluss auf problematische SQL-Ausführung erfordert oft ein
Ausrollen der angepassten Software
• In kritischen Produktions-Szenarien ist teils eine schnellere Lösung
nötig.
• Dieser Vortrag demonstriert, mit welchen Verfahren der Oracle-DB
sich SQL-Ausführungen auch ohne Ausrollen von Software-
Änderungen ad hoc beeinflussen lassen.
Verfahren zur Beeinflussung des Op7mizers
Verfahren Wirkungsweise Erforderliche Lizenz
SQL Plan Baseline Vorgabe des Plan-Hash-Wertes des zu
verwendenden Ausführungsplans
EE ( +Tuning Pack für Erstellung
per Panorama aus AWR-Daten)
SQL Profile Injizierung von Optimizer-Hints EE + Diagnostics and Tuning
Pack
SQL Patch Injizierung von Optimizer-Hints ähnlich SQL-
Profile
Keine (auch anwendbar in
Standard Edition)
SQL Translation Ersetzen des vollständigen SQL-Textes EE
Panorama für Oracle: freies Analyse-Tool
Freies Werkzeug für Performance-Analyse
von Oracle-DB
Weitere Doku + Download:
http://rammpeter.github.io
https://hub.docker.com/r/rammpeter/panorama
• „Leichte“ Machbarkeit der Analysen mittels GUI-Workflow, für DBA als auch gezielt für Entwickler
• Senken der Hemmschwelle, Problemen tatsächlich detailliert auf den Grund zu gehen
• Iden_fika_on der konkrete Ursachen für unzureichende Applika_ons-Performance bei Datenzugriffen
• Aubereitung komplexer Zusammenhänge der DB ohne _efes Insider-Wissen
Gehostet für Nutzung innerhalb otto group:
http://sbfappserver.ov.otto.de:8080/Panorama
http://panorama.osp-dd.de:8080/Panorama
https analog auf Port 8443
SQL Plan Baseline
• Erlaubt es, einen konkreten Ausführungsplan verbindlich vorzugeben, wenn ein syntaktisch
identisches SQL-Statement ausgeführt wird (SQL-ID Hash).
• Es wird hierbei nicht der konkrete Ausführungsplan vorgegeben, sondern der Plan Hash Value des
zu verwendenden Plans. D. h., der Optimizer muss selbst diesen Plan mit dem zu erzielenden Plan
Hash Value ermitteln können.
Support durch Panorama:
• Generieren von PL/SQL-Code zum Erzeugen einer SQL Plan Baseline für einen in Vergangenheit
aktiven konkreten Ausführungsplan eines SQL
• Generierung ausführbar über Button „SQL Plan Baseline“ in historischer SQL-Detail-Ansicht
Vorteil in der Anwendung:
• Beim Auftreten eines geänderten problematischen Ausführungsplanes kann über Vergleich der
bisherigen Ausführungen in AWR-Historie ein evtl. besserer Plan identifiziert werden
• Durch Generieren der Baseline-Erzeugung auf Basis des besseren Plans kann das Problem erstmal in
Minuten gefixt werden ohne das SQL überhaupt inhaltlich verstanden zu haben
SQL Plan Baseline: generiertes Script (Extrakt)
DECLARE
cur sys_refcursor;
hit_count PLS_INTEGER;
BEGIN
-- Create new SQL Tuning Set (STS)
DBMS_SQLTUNE.CREATE_SQLSET(sqlset_name => 'PANORAMA_STS‘,
description => 'Panorama: SQL Tuning Set for SQL Plan Baseline');
-- Populate STS from AWR, using a time duration when the desired plan was used
OPEN cur FOR
SELECT VALUE(P)
FROM TABLE(
DBMS_SQLTUNE.Select_Workload_Repository(Begin_Snap=>116673, End_Snap=>116769,
Basic_Filter=>'sql_id = ''7fbk69tj7ak43'‘‘,
attribute_list=>'ALL')
) p;
DBMS_SQLTUNE.LOAD_SQLSET( sqlset_name=> 'PANORAMA_STS', populate_cursor=>cur);
CLOSE cur;
-- Load desired plan from STS as SQL Plan Baseline, Filter explicitly for the plan_hash_value here
hit_count := DBMS_SPM.LOAD_PLANS_FROM_SQLSET(sqlset_name => 'PANORAMA_STS‘,
Basic_Filter=>'plan_hash_value = ''3026395079''');
END;
/
SQL Profile
• Erlaubt es, bei Ausführung eines über SQL-ID iden7fizierten SQLs weitere Op7mizer-Hints von
außen zu injizieren, die bei der Ermi_lung des Ausführungsplanes berücksich7gt werden.
• Über diverse SQL-Tuning-Funk7onen des Oracle Enterprise Managers (bzw. neu Cloud Control)
können SQL-Profiles erzeugt werden.
Support durch Panorama:
• Das Generieren von SQL Profiles wird durch Panorama nicht unterstützt, da die identische Funktion auch
durch SQL Patches erreicht werden kann ohne Limitierung bzgl. Edition und Option Pack
SQL Patch
• SQL-Patches (verfügbar ab Release 11.1) erlauben es, bei Ausführung eines über SQL-ID identifizierten
SQLs weitere Optimizer-Hints von außen zu injizieren, die bei der Ermittlung des Ausführungsplanes
berücksichtigt werden.
• SQL-Patches können ohne weitere Lizenz genutzt werden auch in Standard Edition.
Support durch Panorama:
• Generieren von PL/SQL-Code zum Erzeugen eines SQL Patch
• Dieser PL/SQL-Code muss nach Generierung um die gewünschten Op7mizer-Hints erweitert werden
• Generierung ist ausführbar über Bu_on „SQL Patch“ in historischer und aktueller SQL-Detail-Ansicht
• Unterschiedliche PL/SQL-API je DB-Release werden durch Generator berücksich7gt
SQL Patch: generiertes Script
BEGIN
sys.DBMS_SQLDiag_Internal.i_create_patch(
sql_text => 'SELECT * FROM Hugo h WHERE h.Filter_ID = :A1',
hint_text => '< my personal hint>',
name => 'Panorama-Patch 7fbk69tj7ak43',
description => 'My personal description for patch‘
);
END;
/
Mit Hint angepasstes Script:
BEGIN
sys.DBMS_SQLDiag_Internal.i_create_patch(
sql_text => 'SELECT * FROM Hugo h WHERE h.Filter_ID = :A1',
hint_text => 'INDEX(@SEL$1 h@SEL$1, IDX_Hugo_Neu)',
name => 'Panorama-Patch 7fbk69tj7ak43',
description => 'Soll den genannten Index verwenden'
);
END;
/
Durch Panorama generiertes Script:
Für Positionierung der Hints in komplexen SQLs Query-Block-Name in Hint angeben
SQL Transla7on
• Das SQL Transla7on Framework erlaubt ab Version 12.1 das Hinterlegen von alterna7ven SQL-Texten
zu einem SQL-Statement.
Vor der Ausführung des SQLs wird der SQL-Text ersetzt durch den hinterlegten alterna7ven SQL-Text.
• Bedingung ist, dass das alterna7ve SQL die selbe Result-Struktur besitzt und die selben
Bindevariablen unterstützt wie das originale SQL.
Support durch Panorama:
• Generieren von PL/SQL-Code zum Erzeugen einer SQL Translation über den Button "SQL-Translation"
der SQL-Detail-Anzeige (aktuell oder historisch)
Vorteil in der Anwendung:
• Diese Funk7on erlaubt eine totale Einflussnahme auf das ausgeführte SQL.
Nicht nur, dass dem SQL Op7mizer-Hints zugefügt werden können, es können auch Ergebnisspalten
ausgetauscht werden, JOIN-Beziehungen enhernt oder hinzugefügt werden, aus anderen Quellen
selek7ert werden etc. .
SQL Translation: Generiertes Script
• Das generierte Script ist etwas komplexer als bei den vorgenannten Varianten und enthält drei
Abschnitte:
– SYSDBA grantet User die Erzeugung von Translation Profiles
– User erzeugt Translation Profile mit altem und neuem SQL-Test
– SYSDBA erzeugt Logon-Trigger, der die Nutzung der Translation in User-Session aktiviert
• Im generierten Script muss die neue Variante des SQL entsprechend angepasst werden
Risiko bei Verwendung der genannten Verfahren
• Da die Zuordnung der Verfahren zu einem SQL-Statement auf der SQL-ID bzw. dem SQL-Text
basiert, geht diese Beziehung bei Änderung oder Erweiterung der SQL-Syntax verloren
• Daher sollten diese Maßnahmen eher als Quick-Fix bis zum nächsten Solware-Rollout gesehen
werden und nicht als langfris7ge Lösung
Support durch Panorama:
• Die Existenz eines der vier Verfahren für ein SQL-Statement wird in Panorama in der SQL-Detail-
Ansicht signalrot angezeigt.
Ohne diese Informa7on besteht das Risiko der Konfusion darüber, wie der Op7mizer zu dem
konkret verwendeten Ausführungsplan kommt
• Menü „DBA/SGA-Details“ / „SQL plan management“ gibt einen Überblick über alle exis7erenden
Maßnahmen inkl. ihrer wirklichen Nutzung
Panorama greift nur lesend auf die Datenbank zu
und benötigt keine eigenen PL/SQL-Objekte.
Ihr könnt die Funktionen also ohne Risiko testen und verstehen.
Probiert es gern aus.
Beschreibung inkl. Download-Link: http://rammpeter.github.io/panorama.html
Docker-Image https://hub.docker.com/r/rammpeter/panorama
Blog zum Thema: http://rammpeter.blogspot.com
Letztes Wort
Vielen Dank für Euer Interesse
Fragen ?
Otto Group Solution Provider (OSP) Dresden GmbH
Freiberger Str. 35 | 01067 Dresden
T +49 (0)351 49723 0 | F +49 (0)351 49723 119
osp.de
Backup
Weitere Links zum Thema:
• Einführung in Oracle-Performance-Analyse mit Panorama
• Ulrike Schwinn: Ausführungspläne beeinflussen mit SQL Plan Management
• Oracle white paper: SQL Plan Management in Oracle Database 11g
• Oracle white paper: SQL Plan Management in Oracle Database 12c Release 2
• SQL Tuning Guide 12.2: Influencing the Optimizer
• SQL Tuning Guide 12.2: SQL Controls and Plan Baselines

Weitere ähnliche Inhalte

Was ist angesagt?

Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
OPITZ CONSULTING Deutschland
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Ulrike Schwinn
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
Ileana Somesan
 
Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016
Digicomp Academy AG
 
Überblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank HochverfügbarkeitÜberblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank Hochverfügbarkeit
Ileana Somesan
 
Daos
DaosDaos
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
Ulrike Schwinn
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
BCC - Solutions for IBM Collaboration Software
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichDierk Lenz
 
Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)
Ileana Somesan
 
18c: private temporary tables
18c: private temporary tables18c: private temporary tables
18c: private temporary tables
Ulrike Schwinn
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
Ulrich Krause
 
Überblick Oracle GoldenGate
Überblick Oracle GoldenGateÜberblick Oracle GoldenGate
Überblick Oracle GoldenGate
Ileana Somesan
 
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateReplikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Ileana Somesan
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
Jürg Stuker
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
KurtStockinger
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
Dierk Lenz
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
Ulrike Schwinn
 
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Ileana Somesan
 
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
Lars Platzdasch
 

Was ist angesagt? (20)

Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
Datenbank Migration - Oracle 11gR2 Erfahrungen 2011 - OPITZ CONSULTING - Chri...
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
 
Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016Roadshow: What's new in Microsoft SQL Server 2016
Roadshow: What's new in Microsoft SQL Server 2016
 
Überblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank HochverfügbarkeitÜberblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank Hochverfügbarkeit
 
Daos
DaosDaos
Daos
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013XPages: Performance-Optimierung  - Ulrich Krause (eknori) SNoUG 2013
XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
 
Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)Oracle Database In-Memory Advisor (Deutsch)
Oracle Database In-Memory Advisor (Deutsch)
 
18c: private temporary tables
18c: private temporary tables18c: private temporary tables
18c: private temporary tables
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
 
Überblick Oracle GoldenGate
Überblick Oracle GoldenGateÜberblick Oracle GoldenGate
Überblick Oracle GoldenGate
 
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateReplikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGate
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
 
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
 
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
Optimizing SQL Server 2012 Deep dive for SharePoint 2013 Lars Platzdasch SQL ...
 

Ähnlich wie Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anpassung

DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release Management
Marc Müller
 
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Sebastian Huppmann
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdf
Oliver Lemm
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Peter Ramm
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
Torsten Kleiber
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
Ulrike Schwinn
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
oraclebudb
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
Kremer Consulting
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
QAware GmbH
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Ulrike Schwinn
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
Ulrich Krause
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Andreas Wissel
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
Lennart Passig
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
Digicomp Academy AG
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
Philipp Burgmer
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
DevOps Meetup Bern
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
Henning Blohm
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
Andreas Schulte
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
Daniel Andrisek
 

Ähnlich wie Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anpassung (20)

DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release Management
 
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
 
Qualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdfQualitätsstandards in der Datenbankentwicklung.pdf
Qualitätsstandards in der Datenbankentwicklung.pdf
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Azure Bootcamp Hamburg
Azure Bootcamp Hamburg Azure Bootcamp Hamburg
Azure Bootcamp Hamburg
 
Roadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & FeaturesRoadshow Oracle Database 12c: News & Features
Roadshow Oracle Database 12c: News & Features
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 

Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anpassung

  • 1. Oracle-DB Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anpassung Verschiedene Verfahren und ihre Unterstützung durch Panorama April 2018Peter Ramm, OSP Dresden
  • 2. Gründung: März 1991 Muttergesellschaft: OTTO Group Standorte: Dresden, Hamburg, Burgkunstadt, Taipeh, Bangkok Mitarbeiterzahl: Ca. 250 Geschäftsführer: Dr. Stefan Borsutzky, Norbert Gödicke, Jens Gruhl Otto Group Solution Provider Dresden GmbH www.osp.de
  • 3. zur Person Peter Ramm Teamleiter strategisch-technische Beratung bei OSP Dresden > 20 Jahre Historie in IT-Projekten Schwerpunkte: • Entwicklung von OLTP-Systemen auf Basis von Oracle- Datenbanken • Architektur-Beratung bis Trouble-Shoo]ng • Performance-Op]mierung bestehender Systeme Mail: Peter.Ramm@ottogroup.com Tel.: 0351 49723 150
  • 4. Motivation Dabei werden im folgenden betrachtet: • SQL Plan Baselines • SQL Profiles • SQL Patches • SQL Translations • Einfluss auf problematische SQL-Ausführung erfordert oft ein Ausrollen der angepassten Software • In kritischen Produktions-Szenarien ist teils eine schnellere Lösung nötig. • Dieser Vortrag demonstriert, mit welchen Verfahren der Oracle-DB sich SQL-Ausführungen auch ohne Ausrollen von Software- Änderungen ad hoc beeinflussen lassen.
  • 5. Verfahren zur Beeinflussung des Op7mizers Verfahren Wirkungsweise Erforderliche Lizenz SQL Plan Baseline Vorgabe des Plan-Hash-Wertes des zu verwendenden Ausführungsplans EE ( +Tuning Pack für Erstellung per Panorama aus AWR-Daten) SQL Profile Injizierung von Optimizer-Hints EE + Diagnostics and Tuning Pack SQL Patch Injizierung von Optimizer-Hints ähnlich SQL- Profile Keine (auch anwendbar in Standard Edition) SQL Translation Ersetzen des vollständigen SQL-Textes EE
  • 6. Panorama für Oracle: freies Analyse-Tool Freies Werkzeug für Performance-Analyse von Oracle-DB Weitere Doku + Download: http://rammpeter.github.io https://hub.docker.com/r/rammpeter/panorama • „Leichte“ Machbarkeit der Analysen mittels GUI-Workflow, für DBA als auch gezielt für Entwickler • Senken der Hemmschwelle, Problemen tatsächlich detailliert auf den Grund zu gehen • Iden_fika_on der konkrete Ursachen für unzureichende Applika_ons-Performance bei Datenzugriffen • Aubereitung komplexer Zusammenhänge der DB ohne _efes Insider-Wissen Gehostet für Nutzung innerhalb otto group: http://sbfappserver.ov.otto.de:8080/Panorama http://panorama.osp-dd.de:8080/Panorama https analog auf Port 8443
  • 7. SQL Plan Baseline • Erlaubt es, einen konkreten Ausführungsplan verbindlich vorzugeben, wenn ein syntaktisch identisches SQL-Statement ausgeführt wird (SQL-ID Hash). • Es wird hierbei nicht der konkrete Ausführungsplan vorgegeben, sondern der Plan Hash Value des zu verwendenden Plans. D. h., der Optimizer muss selbst diesen Plan mit dem zu erzielenden Plan Hash Value ermitteln können. Support durch Panorama: • Generieren von PL/SQL-Code zum Erzeugen einer SQL Plan Baseline für einen in Vergangenheit aktiven konkreten Ausführungsplan eines SQL • Generierung ausführbar über Button „SQL Plan Baseline“ in historischer SQL-Detail-Ansicht Vorteil in der Anwendung: • Beim Auftreten eines geänderten problematischen Ausführungsplanes kann über Vergleich der bisherigen Ausführungen in AWR-Historie ein evtl. besserer Plan identifiziert werden • Durch Generieren der Baseline-Erzeugung auf Basis des besseren Plans kann das Problem erstmal in Minuten gefixt werden ohne das SQL überhaupt inhaltlich verstanden zu haben
  • 8. SQL Plan Baseline: generiertes Script (Extrakt) DECLARE cur sys_refcursor; hit_count PLS_INTEGER; BEGIN -- Create new SQL Tuning Set (STS) DBMS_SQLTUNE.CREATE_SQLSET(sqlset_name => 'PANORAMA_STS‘, description => 'Panorama: SQL Tuning Set for SQL Plan Baseline'); -- Populate STS from AWR, using a time duration when the desired plan was used OPEN cur FOR SELECT VALUE(P) FROM TABLE( DBMS_SQLTUNE.Select_Workload_Repository(Begin_Snap=>116673, End_Snap=>116769, Basic_Filter=>'sql_id = ''7fbk69tj7ak43'‘‘, attribute_list=>'ALL') ) p; DBMS_SQLTUNE.LOAD_SQLSET( sqlset_name=> 'PANORAMA_STS', populate_cursor=>cur); CLOSE cur; -- Load desired plan from STS as SQL Plan Baseline, Filter explicitly for the plan_hash_value here hit_count := DBMS_SPM.LOAD_PLANS_FROM_SQLSET(sqlset_name => 'PANORAMA_STS‘, Basic_Filter=>'plan_hash_value = ''3026395079'''); END; /
  • 9. SQL Profile • Erlaubt es, bei Ausführung eines über SQL-ID iden7fizierten SQLs weitere Op7mizer-Hints von außen zu injizieren, die bei der Ermi_lung des Ausführungsplanes berücksich7gt werden. • Über diverse SQL-Tuning-Funk7onen des Oracle Enterprise Managers (bzw. neu Cloud Control) können SQL-Profiles erzeugt werden. Support durch Panorama: • Das Generieren von SQL Profiles wird durch Panorama nicht unterstützt, da die identische Funktion auch durch SQL Patches erreicht werden kann ohne Limitierung bzgl. Edition und Option Pack
  • 10. SQL Patch • SQL-Patches (verfügbar ab Release 11.1) erlauben es, bei Ausführung eines über SQL-ID identifizierten SQLs weitere Optimizer-Hints von außen zu injizieren, die bei der Ermittlung des Ausführungsplanes berücksichtigt werden. • SQL-Patches können ohne weitere Lizenz genutzt werden auch in Standard Edition. Support durch Panorama: • Generieren von PL/SQL-Code zum Erzeugen eines SQL Patch • Dieser PL/SQL-Code muss nach Generierung um die gewünschten Op7mizer-Hints erweitert werden • Generierung ist ausführbar über Bu_on „SQL Patch“ in historischer und aktueller SQL-Detail-Ansicht • Unterschiedliche PL/SQL-API je DB-Release werden durch Generator berücksich7gt
  • 11. SQL Patch: generiertes Script BEGIN sys.DBMS_SQLDiag_Internal.i_create_patch( sql_text => 'SELECT * FROM Hugo h WHERE h.Filter_ID = :A1', hint_text => '< my personal hint>', name => 'Panorama-Patch 7fbk69tj7ak43', description => 'My personal description for patch‘ ); END; / Mit Hint angepasstes Script: BEGIN sys.DBMS_SQLDiag_Internal.i_create_patch( sql_text => 'SELECT * FROM Hugo h WHERE h.Filter_ID = :A1', hint_text => 'INDEX(@SEL$1 h@SEL$1, IDX_Hugo_Neu)', name => 'Panorama-Patch 7fbk69tj7ak43', description => 'Soll den genannten Index verwenden' ); END; / Durch Panorama generiertes Script: Für Positionierung der Hints in komplexen SQLs Query-Block-Name in Hint angeben
  • 12. SQL Transla7on • Das SQL Transla7on Framework erlaubt ab Version 12.1 das Hinterlegen von alterna7ven SQL-Texten zu einem SQL-Statement. Vor der Ausführung des SQLs wird der SQL-Text ersetzt durch den hinterlegten alterna7ven SQL-Text. • Bedingung ist, dass das alterna7ve SQL die selbe Result-Struktur besitzt und die selben Bindevariablen unterstützt wie das originale SQL. Support durch Panorama: • Generieren von PL/SQL-Code zum Erzeugen einer SQL Translation über den Button "SQL-Translation" der SQL-Detail-Anzeige (aktuell oder historisch) Vorteil in der Anwendung: • Diese Funk7on erlaubt eine totale Einflussnahme auf das ausgeführte SQL. Nicht nur, dass dem SQL Op7mizer-Hints zugefügt werden können, es können auch Ergebnisspalten ausgetauscht werden, JOIN-Beziehungen enhernt oder hinzugefügt werden, aus anderen Quellen selek7ert werden etc. .
  • 13. SQL Translation: Generiertes Script • Das generierte Script ist etwas komplexer als bei den vorgenannten Varianten und enthält drei Abschnitte: – SYSDBA grantet User die Erzeugung von Translation Profiles – User erzeugt Translation Profile mit altem und neuem SQL-Test – SYSDBA erzeugt Logon-Trigger, der die Nutzung der Translation in User-Session aktiviert • Im generierten Script muss die neue Variante des SQL entsprechend angepasst werden
  • 14. Risiko bei Verwendung der genannten Verfahren • Da die Zuordnung der Verfahren zu einem SQL-Statement auf der SQL-ID bzw. dem SQL-Text basiert, geht diese Beziehung bei Änderung oder Erweiterung der SQL-Syntax verloren • Daher sollten diese Maßnahmen eher als Quick-Fix bis zum nächsten Solware-Rollout gesehen werden und nicht als langfris7ge Lösung Support durch Panorama: • Die Existenz eines der vier Verfahren für ein SQL-Statement wird in Panorama in der SQL-Detail- Ansicht signalrot angezeigt. Ohne diese Informa7on besteht das Risiko der Konfusion darüber, wie der Op7mizer zu dem konkret verwendeten Ausführungsplan kommt • Menü „DBA/SGA-Details“ / „SQL plan management“ gibt einen Überblick über alle exis7erenden Maßnahmen inkl. ihrer wirklichen Nutzung
  • 15. Panorama greift nur lesend auf die Datenbank zu und benötigt keine eigenen PL/SQL-Objekte. Ihr könnt die Funktionen also ohne Risiko testen und verstehen. Probiert es gern aus. Beschreibung inkl. Download-Link: http://rammpeter.github.io/panorama.html Docker-Image https://hub.docker.com/r/rammpeter/panorama Blog zum Thema: http://rammpeter.blogspot.com Letztes Wort
  • 16. Vielen Dank für Euer Interesse Fragen ? Otto Group Solution Provider (OSP) Dresden GmbH Freiberger Str. 35 | 01067 Dresden T +49 (0)351 49723 0 | F +49 (0)351 49723 119 osp.de
  • 17. Backup Weitere Links zum Thema: • Einführung in Oracle-Performance-Analyse mit Panorama • Ulrike Schwinn: Ausführungspläne beeinflussen mit SQL Plan Management • Oracle white paper: SQL Plan Management in Oracle Database 11g • Oracle white paper: SQL Plan Management in Oracle Database 12c Release 2 • SQL Tuning Guide 12.2: Influencing the Optimizer • SQL Tuning Guide 12.2: SQL Controls and Plan Baselines