Enviar pesquisa
Carregar
Wie kommt der Hint in das SQL, ohne die anwendung zu ändern?
•
1 gostou
•
2,548 visualizações
Trivadis
Seguir
Wie kommt der Hint in das SQL, ohne die anwendung zu ändern? von Mathias Zarick
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 60
Baixar agora
Baixar para ler offline
Recomendados
Livorno - Hafen der Medici
Livorno - Hafen der Medici
AuVi - eBooks & Photos
Going Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile Apps
Josh Clark
Bringing Design to Life
Bringing Design to Life
Bill Scott
Employee Discipline and Grievance Handling
Employee Discipline and Grievance Handling
Muhammad Aleem Habib ,PMP
Making inferences ppt lesson
Making inferences ppt lesson
Teresa Diaz
Operative instruments in Conservative Dentistry & Endodontics
Operative instruments in Conservative Dentistry & Endodontics
Ashok Ayer
Java Design Pattern
Java Design Pattern
manuelberger
Concept of energy transmission & distribution
Concept of energy transmission & distribution
ZunAib Ali
Recomendados
Livorno - Hafen der Medici
Livorno - Hafen der Medici
AuVi - eBooks & Photos
Going Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile Apps
Josh Clark
Bringing Design to Life
Bringing Design to Life
Bill Scott
Employee Discipline and Grievance Handling
Employee Discipline and Grievance Handling
Muhammad Aleem Habib ,PMP
Making inferences ppt lesson
Making inferences ppt lesson
Teresa Diaz
Operative instruments in Conservative Dentistry & Endodontics
Operative instruments in Conservative Dentistry & Endodontics
Ashok Ayer
Java Design Pattern
Java Design Pattern
manuelberger
Concept of energy transmission & distribution
Concept of energy transmission & distribution
ZunAib Ali
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Jérôme Petazzoni
Banking in India
Banking in India
Prasant Patro
Types of Irrigation
Types of Irrigation
Pranamesh Chakraborty
Soft tissue tumor
Soft tissue tumor
Narmada Tiwari
50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent
Leslie Bradshaw
Asean quiz championship_2012
Asean quiz championship_2012
Movin Miranda
Introducing Apple Watch
Introducing Apple Watch
JJ Wu
Spectralis oct normal anatomy & systematic interpretation.
Spectralis oct normal anatomy & systematic interpretation.
oxfordshireloc
Data Modeling with Neo4j
Data Modeling with Neo4j
Neo4j
Lantal Textiles Projekt Fitness
Lantal Textiles Projekt Fitness
IBM Switzerland
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
Acacio Chimenes
BLOCO II - RPA - CMS
BLOCO II - RPA - CMS
TAS ESCOLA DE AVIAÇÃO CIVIL
Set off and carry forward of losses
Set off and carry forward of losses
Sunill Bn
Social Media Marketing For Business
Social Media Marketing For Business
Jeff Bullas
Guía para la evaluación sensorial de alimentos
Guía para la evaluación sensorial de alimentos
evytaguevara
Philippines American Colony
Philippines American Colony
John Paul San Pedro
Performanceaspekte im Oracle DWH
Performanceaspekte im Oracle DWH
Trivadis
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
Désirée Pfister
Middleware Basics für den DBA
Middleware Basics für den DBA
Trivadis
DWH-Modellierung mit Data Vault
DWH-Modellierung mit Data Vault
Trivadis
Oracle AVDF in der Praxis
Oracle AVDF in der Praxis
Trivadis
Perry pakull datenbank entwickler auf dem prüfstand präsentation
Perry pakull datenbank entwickler auf dem prüfstand präsentation
Trivadis
Mais conteúdo relacionado
Destaque
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Jérôme Petazzoni
Banking in India
Banking in India
Prasant Patro
Types of Irrigation
Types of Irrigation
Pranamesh Chakraborty
Soft tissue tumor
Soft tissue tumor
Narmada Tiwari
50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent
Leslie Bradshaw
Asean quiz championship_2012
Asean quiz championship_2012
Movin Miranda
Introducing Apple Watch
Introducing Apple Watch
JJ Wu
Spectralis oct normal anatomy & systematic interpretation.
Spectralis oct normal anatomy & systematic interpretation.
oxfordshireloc
Data Modeling with Neo4j
Data Modeling with Neo4j
Neo4j
Lantal Textiles Projekt Fitness
Lantal Textiles Projekt Fitness
IBM Switzerland
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
Acacio Chimenes
BLOCO II - RPA - CMS
BLOCO II - RPA - CMS
TAS ESCOLA DE AVIAÇÃO CIVIL
Set off and carry forward of losses
Set off and carry forward of losses
Sunill Bn
Social Media Marketing For Business
Social Media Marketing For Business
Jeff Bullas
Guía para la evaluación sensorial de alimentos
Guía para la evaluación sensorial de alimentos
evytaguevara
Philippines American Colony
Philippines American Colony
John Paul San Pedro
Destaque
(16)
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Banking in India
Banking in India
Types of Irrigation
Types of Irrigation
Soft tissue tumor
Soft tissue tumor
50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent
Asean quiz championship_2012
Asean quiz championship_2012
Introducing Apple Watch
Introducing Apple Watch
Spectralis oct normal anatomy & systematic interpretation.
Spectralis oct normal anatomy & systematic interpretation.
Data Modeling with Neo4j
Data Modeling with Neo4j
Lantal Textiles Projekt Fitness
Lantal Textiles Projekt Fitness
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
Cálculo e detalhamento de estruturas usuais de concreto armado volume 2 rober...
BLOCO II - RPA - CMS
BLOCO II - RPA - CMS
Set off and carry forward of losses
Set off and carry forward of losses
Social Media Marketing For Business
Social Media Marketing For Business
Guía para la evaluación sensorial de alimentos
Guía para la evaluación sensorial de alimentos
Philippines American Colony
Philippines American Colony
Semelhante a Wie kommt der Hint in das SQL, ohne die anwendung zu ändern?
Performanceaspekte im Oracle DWH
Performanceaspekte im Oracle DWH
Trivadis
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
Désirée Pfister
Middleware Basics für den DBA
Middleware Basics für den DBA
Trivadis
DWH-Modellierung mit Data Vault
DWH-Modellierung mit Data Vault
Trivadis
Oracle AVDF in der Praxis
Oracle AVDF in der Praxis
Trivadis
Perry pakull datenbank entwickler auf dem prüfstand präsentation
Perry pakull datenbank entwickler auf dem prüfstand präsentation
Trivadis
PL SQL Unit Tests mit SQL Developer
PL SQL Unit Tests mit SQL Developer
Trivadis
Implementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise Manager
Martin Obst
Secure Technical Implementation Guide for databases by Martin Obst
Secure Technical Implementation Guide for databases by Martin Obst
Carsten Muetzlitz
Indexierungsstrategie im Data Warehouse - Zwischen Albtraum und optimaler Per...
Indexierungsstrategie im Data Warehouse - Zwischen Albtraum und optimaler Per...
Trivadis
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
Guido Schmutz
PureSQL APEX Connect
PureSQL APEX Connect
Trivadis
Pure SQL for batch processing
Pure SQL for batch processing
Andrej Pashchenko
Oracle Text 12c New Features
Oracle Text 12c New Features
Ulrike Schwinn
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Trivadis
SAP HANA, Power Pivot, SQL Server – In-memory-Technologien im Vergleich
SAP HANA, Power Pivot, SQL Server – In-memory-Technologien im Vergleich
Marcel Franke
Icinga 2: Migration von Nagios oder Icinga 1.x leicht gemacht (Webinar 02.09....
Icinga 2: Migration von Nagios oder Icinga 1.x leicht gemacht (Webinar 02.09....
NETWAYS
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
OPITZ CONSULTING Deutschland
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Daniel Steiger
Warum ich so auf das c von cdi stehe
Warum ich so auf das c von cdi stehe
Sven Ruppert
Semelhante a Wie kommt der Hint in das SQL, ohne die anwendung zu ändern?
(20)
Performanceaspekte im Oracle DWH
Performanceaspekte im Oracle DWH
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
12c SQL Pattern Matching wann werde ich das benutzen Andrej Pashchenko
Middleware Basics für den DBA
Middleware Basics für den DBA
DWH-Modellierung mit Data Vault
DWH-Modellierung mit Data Vault
Oracle AVDF in der Praxis
Oracle AVDF in der Praxis
Perry pakull datenbank entwickler auf dem prüfstand präsentation
Perry pakull datenbank entwickler auf dem prüfstand präsentation
PL SQL Unit Tests mit SQL Developer
PL SQL Unit Tests mit SQL Developer
Implementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise Manager
Secure Technical Implementation Guide for databases by Martin Obst
Secure Technical Implementation Guide for databases by Martin Obst
Indexierungsstrategie im Data Warehouse - Zwischen Albtraum und optimaler Per...
Indexierungsstrategie im Data Warehouse - Zwischen Albtraum und optimaler Per...
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
PureSQL APEX Connect
PureSQL APEX Connect
Pure SQL for batch processing
Pure SQL for batch processing
Oracle Text 12c New Features
Oracle Text 12c New Features
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
SAP HANA, Power Pivot, SQL Server – In-memory-Technologien im Vergleich
SAP HANA, Power Pivot, SQL Server – In-memory-Technologien im Vergleich
Icinga 2: Migration von Nagios oder Icinga 1.x leicht gemacht (Webinar 02.09....
Icinga 2: Migration von Nagios oder Icinga 1.x leicht gemacht (Webinar 02.09....
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Automatisierung im DWH - Sich das Leben erleichern mit dem ODI
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Infrastruktur agil bauen - der DBA im SAFe-Umfeld
Warum ich so auf das c von cdi stehe
Warum ich so auf das c von cdi stehe
Mais de Trivadis
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Trivadis
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Trivadis
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Trivadis
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Trivadis
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Trivadis
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Trivadis
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Trivadis
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Trivadis
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Trivadis
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Trivadis
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
Trivadis
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
Trivadis
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
Trivadis
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
Trivadis
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
Trivadis
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
Trivadis
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
Trivadis
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
Trivadis
Mais de Trivadis
(20)
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
Wie kommt der Hint in das SQL, ohne die anwendung zu ändern?
1.
Wie kommt der
Hint in das SQL? … ohne die Anwendung zu ändern … Mathias Zarick Principal Consultant BASEL BERN BRUGG GENF LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 1
2.
Vorstellung – Mathias
Zarick Principal Consultant bei Trivadis Delphi GmbH in Wien 2014 © Trivadis Trainer Data Guard, Architektur und Interna für fortgeschrittene DBAs, Maximum Availability Architecture Workshop E-Mail: Mathias.Zarick@trivadis.com Hauptthemen: Oracle Datenbank Oracle Hochverfügbarkeitsprojekte (Real Application Clusters, Data Guard, Maximum Availability Architecture, Replikation mit Streams und GoldenGate) Backup/Recovery Entwicklungsleiter der Trivadis Toolbox Entwickler von TVD-Standby Forschungsprojekte im Trivadis Technology Center (TTC) 2 DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014
3.
Unser Unternehmen Trivadis
ist führend bei der IT-Beratung, der Systemintegration, dem Solution-Engineering und der Erbringung von IT-Services mit Fokussierung auf und Technologien im D-A-CH-Raum. Unsere Leistungen erbringen wir aus den strategischen Geschäftsfeldern: Trivadis Services übernimmt den korrespondierenden Betrieb Ihrer IT Systeme. 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 B E T R I E B 3
4.
Mit über 600
IT- und Fachexperten bei Ihnen vor Ort 2014 © Trivadis 4 12 Trivadis Niederlassungen mit über 600 Mitarbeitenden 200 Service Level Agreements Mehr als 4'000 Trainingsteilnehmer Forschungs- und Entwicklungs-budget: CHF 5.0 Mio. / EUR 4.0 Mio. Finanziell unabhängig und nachhaltig profitabel Erfahrung aus mehr als 1'900 Projekten pro Jahr bei über 800 Kunden Stand 12/2013 Hamburg Düsseldorf Frankfurt Freiburg München Wien Basel Bern Zürich Lausanne 4 Stuttgart DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 4 Brugg
5.
Trivadis an der
DOAG Ebene 3 - gleich neben der Rolltreppe Wir freuen uns auf Ihren Besuch. Denn mit Trivadis gewinnen Sie immer. 2014 © Trivadis 18.11.2014 5 DOAG 2014 - Wie kommt der Hint in das SQL?
6.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 6
7.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 Einführung 7
8.
Was sind Hints?
Hints ermöglichen, den Oracle Optimizer und/oder seine Entscheidungen zu beeinflussen wenn möglich, wird ihnen gefolgt Hints werden in Kommentaren nach dem ersten Schlüsselwort eines Query Blocks benutzt Das erste Zeichen im Kommentar muss ein + sein 2 Kategorien: Nicht-Optimizer Hints, z.B. APPEND, CACHE, MONITOR, GATHER_PLAN_STATISTICS, RESULT_CACHE, … Optimizer Hints, z.B. FULL, INDEX, LEADING, ORDERED, … Welche Hints gibt es? Siehe View v$sql_hint 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 8
9.
Warum (keine) Hints?
Workaround für suboptimale Ausführungspläne Sollten keine permanente Lösung sein Die Daten können sich ändern, der Plan kann unangebracht werden Der Optimizer lernt in einer neueren Version dazu Nützlich in Testszenarien / Was-wäre-wenn-Analysen Einige Hints müssen verwendet werden, um ein spezielles Verhalten der Oracle Datenbank zu erreichen, z.B. APPEND, BIND_AWARE, RESULT_CACHE, … 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 9
10.
Jonathan Lewis’ Rules
for Hinting http://jonathanlewis.wordpress.com/2008/05/02/rules-for-hinting/ 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 10
11.
Beispiel für diese
Präsentation (1) Ursprüngliches Statement Ursprünglicher Plan 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 11 SELECT count(*) FROM t WHERE id=0815 SELECT * FROM table(dbms_xplan.display_cursor(format='BASIC')) ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | INDEX UNIQUE SCAN| T_PK | -----------------------------------
12.
Beispiel für diese
Präsentation (2) Alternatives Statement mit Hint Alternativer Plan 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 12 SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815 SELECT * FROM table(dbms_xplan.display_cursor(format='BASIC')) ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS FULL| T | -----------------------------------
13.
Die Herausforderung
Kein Zugriff auf die Applikation um das SQL zu ändern Der Hint muss auf irgendeine andere Weise injiziert werden SQL_ID btuu7yga9bcp1 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 13
14.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 14
15.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 Stored Outlines 15
16.
Was sind Stored
Outlines? Stored Outlines stellen Planstabilität durch das Speichern der Outline- Daten eines assoziierten Planes eines SQL Statements zur Verfügung Es werden alle Hints gespeichert, um den Ausführungsplan zu fixieren Die Assoziierung zwischen SQL und Stored Outline geschieht durch eine SQL Signatur, welche nach einer Normalisierung produziert wird Großbuchstaben – außer Literale Whitespace wird entfernt – Kommentare nicht Literal-insensitiver Match nur durch cursor_sharing=force Hints werden gespeichert in OUTLN.OL$ OUTLN.OL$HINTS OUTLN.OL$NODES 2014 © Trivadis Views CDB_/DBA_/ALL_/USER_OUTLINES CDB_/DBA_/ALL_/USER_OUTLINE_HINTS DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 16
17.
Unser Beispiel mit
einer Stored Outline (1) Einmal pro Instanz oder für die gewünschten Sessions Achtung: use_stored_outlines kann nicht persistent im init.ora eingetragen werden, man braucht einen Startup Trigger Wir erzeugen 2 Outlines für den ursprünglichen und den gewünschten Plan 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 17 ALTER SYSTEM SET use_stored_outlines=TRUE; CREATE OUTLINE my_outline ON SELECT count(*) FROM t WHERE id=0815; CREATE OUTLINE my_outline_interim ON SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815;
18.
Unser Beispiel mit
einer Stored Outline (2) Outline Hints austauschen – das erste Set kommt zur zweiten Outline, das zweite Set zur ersten Outline 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 18 UPDATE outln.ol$hints SET ol_name=decode(ol_name,'MY_OUTLINE','MY_OUTLINE_INTERIM', 'MY_OUTLINE_INTERIM','MY_OUTLINE') WHERE ol_name IN ('MY_OUTLINE','MY_OUTLINE_INTERIM'); UPDATE outln.ol$ SET hintcount = ( SELECT count(*) FROM outln.ol$hints WHERE outln.ol$.ol_name = outln.ol$hints.ol_name ) WHERE outln.ol$.ol_name in ('MY_OUTLINE','MY_OUTLINE_INTERIM'); COMMIT;
19.
Ups! DML auf
OUTLN Tables? Was ist das denn für ein Hack? Ist das erlaubt? Anerkannt durch „My Oracle Support - How to Specify Hidden Hints (Outlines) on SQL Statements in Oracle 8i (Doc ID 92202.1)” Komplettiert von Jonathan Lewis: Plan Stability in Oracle 8i/9i - http://www.jlcomp.demon.co.uk/04_outlines.rtf 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 19 full_outline.sql
20.
Verifikation Überprüfen,
ob der gewünschte Plan verwendet wird 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 20 SELECT count(*) FROM t WHERE id=0815; SELECT * FROM table(dbms_xplan.display_cursor(format='basic +note')); ... ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS FULL| T | ----------------------------------- Note ----- - outline MY_OUTLINE used for this statement
21.
Zwischenbilanz: Stored Outlines
2014 © Trivadis Stored Outlines Verfügbar seit 8i Deprecated ? Seit 11g XE/SE/SE1 ? Ja Tuning Pack benötigt Nein Match wird nach Normalisierung durchgeführt Ja Literal-insensitiver Match (force_match=true) Nein Datenänderungen werden berücksichtigt Nein Nutzbar um einen Hint im SQL unwirksam zu machen Ja Kategorien für verschiedene Workloads und Perioden Ja gather_plan_statistics Hint injizieren Nein Parallelverarbeitung ändern Ja DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 21
22.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 22
23.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 SQL Profiles 23
24.
Was sind SQL
Profiles? SQL Profiles helfen dem Optimizer, einen besseren Ausführungsplan zu finden Werden durch SQL Tuning Advisor (oder manuell angelegt) Brauchen Tuning Pack (daher auch Enterprise Edition und Diagnostics Pack) Brauchen control_management_pack_access auf DIAGNOSTIC+TUNING gesetzt SQL Profiles speichern nicht alle (wie stored outlines) sondern nur einige Hints um den Ausführungsplan zu beeinflussen Assoziierung auf das SQL geschieht durch eine Signatur, welche nach Normalisierung erzeugt wird (es ist außerdem ein literal-insensitiver Match konfigurierbar) Hints sind gespeichert in sys.sqlobj$ sys.sqlobj$auxdata 2014 © Trivadis Views CDB_/DBA_/ALL_ /USER_SQL_PROFILES DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 24 sys.sql$text sys.sql$ (12c)
25.
Unser Beispiel mit
einem SQL Profile Manuelle Erstellung des SQL Profile mit undokumentierter Prozedur force_match: Literal-insensitiver Match 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 25 BEGIN dbms_sqltune.import_sql_profile( name = 'MY_SQL_PROFILE', description = 'full table scan', sql_text = 'SELECT count(*) FROM t WHERE id=0815', force_match = true, profile = sqlprof_attr('FULL(@SEL$1 T@SEL$1)') ); END;
26.
Undokumentierte Prozeduren benutzen?
Was ist das denn für ein Hack? Ist das erlaubt? full_profile_force_match.sql Man lese “My Oracle Support - SQLT Diagnostic Tool (Doc ID 215187.1)” Zip file sqlt.zip, script sqltutlcoe_xfr_sql_profile.sql 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 26 REM DESCRIPTION REM This script generates another that contains the commands to REM create a manual custom SQL Profile out of a known plan from REM memory or AWR. The manual custom profile can be implemented REM into the same SOURCE system where the plan was retrieved, REM or into another similar TARGET system that has same schema REM objects referenced by the SQL that generated the known plan.
27.
Verifikation Überprüfen,
ob der gewünschte Plan verwendet wird 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 27 SELECT count(*) FROM t WHERE id=0815; SELECT * FROM table(dbms_xplan.display_cursor(format='basic +note')); ... ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS FULL| T | ----------------------------------- Note ----- - SQL profile MY_SQL_PROFILE used for this statement
28.
Zwischenbilanz: SQL Profiles
2014 © Trivadis SQL Profiles Verfügbar seit 10g Deprecated ? Nein XE/SE/SE1 ? Nein Tuning Pack benötigt Ja Match wird nach Normalisierung durchgeführt Ja Literal-insensitiver Match (force_match=true) Ja Datenänderungen werden berücksichtigt Einigermaßen Nutzbar um einen Hint im SQL unwirksam zu Ja machen Kategorien für verschiedene Workloads und Perioden Ja gather_plan_statistics Hint injizieren Ja Parallelverarbeitung ändern Ja DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 28
29.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 29
30.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 SQL Patches 30
31.
Was sind SQL
Patches? SQL Patches helfen dem Optimizer, einen alternativen Ausführungsplan zu 2014 © Trivadis finden Wurden designt, um Ausführungsfehler zu vermeiden, welche bei einem bestimmten Ausführungsschritt passieren und werden durch den SQL Repair Advisor (oder manuell) erstellt Auch in Standard Edition verfügbar, siehe http://www.oracle.com/webfolder/technetwork/de/community/dbadmin/tipps/advisor/index.html SQL Patches speichern nicht alle (wie stored outlines) sondern nur einige Hints, um den Ausführungsplan zu beeinflussen Assoziierung geschieht wieder durch dieselbe Signatur nach Normalisierung (Literal-insensitiver Match ist auch konfigurierbar) Hints sind gespeichert in sys.sqlobj$ sys.sqlobj$auxdata Views CDB_/DBA_/ALL_/USER_SQL_PATCHES DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 31 sys.sql$text sys.sql$ (12c)
32.
Unser Beispiel mit
einem SQL Patch (1) Manuelle Erstellung eines SQL Patch mit undokumentiertem Package und Prozedur 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 32 BEGIN sys.dbms_sqldiag_internal.i_create_patch( sql_text = 'SELECT count(*) FROM t WHERE id=0815', hint_text = 'FULL(@SEL$1 T@SEL$1)', name = 'MY_SQL_PATCH'); END;
33.
Unser Beispiel mit
einem SQL Patch (2) Text wird etwas länger, wenn wir literal-insensitiven Match (forced text match) brauchen 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 33 DECLARE v_name VARCHAR2(128); BEGIN v_name := sys.dbms_sqltune_internal.i_create_sql_profile( sql_text = 'SELECT count(*) FROM t WHERE id=0815', profile_xml = 'outline_datahint ![CDATA[FULL(@SEL$1 T@SEL$1)]] /hint/outline_data', is_patch = true, name = 'MY_SQL_PATCH', force_match = true); END;
34.
Undokumentierte Prozeduren benutzen?
Was ist das denn für ein Hack? Ist das erlaubt? Lösung wird durch das Oracle Optimizer Team auf ihrem Blog vorgeschlagen: https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 34 full_patch_force_match.sql
35.
Verifikation Überprüfen,
ob der gewünschte Plan verwendet wird 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 35 SELECT count(*) FROM t WHERE id=0815; SELECT * FROM table(dbms_xplan.display_cursor(format='basic +note')); ... ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS FULL| T | ----------------------------------- Note ----- - SQL patch MY_SQL_PATCH used for this statement
36.
Zwischenbilanz: SQL Patches
2014 © Trivadis SQL Patches Verfügbar seit 11g Deprecated ? Nein XE/SE/SE1 ? Ja Tuning Pack benötigt Nein Match wird nach Normalisierung durchgeführt Ja Literal-insensitiver Match (force_match=true) Ja Datenänderungen werden berücksichtigt Einigermaßen Nutzbar um einen Hint im SQL unwirksam zu Ja machen Kategorien für verschiedene Workloads und Perioden Ja gather_plan_statistics Hint injizieren Ja Parallelverarbeitung ändern Ja DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 36
37.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 37
38.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 SQL Plan Baselines 38
39.
Was sind SQL
Plan Baselines? SQL Plan Baselines sind Teil des SQL Plan Management Feature Es sind Objekte, welche vom Optimizer berücksichtigt werden Sie enthalten Pläne für bestimmte Statements, welche als Hints gespeichert 2014 © Trivadis sind Pläne können akzeptiert (verifiziert), fixed, enabled/disabled sein Keine weitere Lizenz https://blogs.oracle.com/optimizer/entry/does_the_use_of_sql aber sie funktionieren nicht in Standard Edition Assoziierung geschieht wieder durch dieselbe Signatur nach Normalisierung, ein literal-insensitiver Match ist leider nicht konfigurierbar Hints sind gespeichert in sys.sqlobj$ sys.sqlobj$auxdata Views CDB_/DBA_/ALL_/USER_SQL_PLAN_BASELINES DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 39 sys.sql$text sys.sql$ (12c)
40.
SQL Plan Baselines
– Auswahl Ablauf (vereinfacht) 2014 © Trivadis 40 Akzeptiert? Akzeptierten Ausführungsplan benutzen Ausführungsplan zur History hinzufügen Wähle akzeptierten Ausführungsplan mit geringsten Kosten Ja Nein Ausführungsplan DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014
41.
Unser Beispiel mit
einer SQL Plan Baseline (1) Wir müssen die SQL ID kennen, dann können wir den ungewünschten Plan aus dem Cursor Cache in eine Baseline laden Wir brauchen sql_handle und plan_name aus dba_sql_plan_baselines 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 41 DECLARE v_cnt NUMBER; BEGIN v_cnt := dbms_spm.load_plans_from_cursor_cache( sql_id='btuu7yga9bcp1'); END; SELECT sql_handle, sql_text, plan_name, description, enabled FROM dba_sql_plan_baselines WHERE sql_text LIKE 'SELECT count(*) FROM t WHERE id=0815'
42.
Unser Beispiel mit
einer SQL Plan Baseline (2) Plan deaktivieren und optional umbenennen und kommentieren 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 42 DECLARE v_cnt NUMBER; BEGIN v_cnt := dbms_spm.alter_sql_plan_baseline( sql_handle = 'SQL_d7cd0a6e6c80df97', plan_name = 'SQL_PLAN_dgm8adtq81rwr916941b3', attribute_name = 'enabled', attribute_value = 'NO'); v_cnt := dbms_spm.alter_sql_plan_baseline( sql_handle = 'SQL_d7cd0a6e6c80df97', plan_name = 'SQL_PLAN_dgm8adtq81rwr916941b3', attribute_name = 'plan_name', attribute_value = 'NOT_DESIRED_PLAN'); v_cnt := dbms_spm.alter_sql_plan_baseline( sql_handle = 'SQL_d7cd0a6e6c80df97', plan_name = 'NOT_DESIRED_PLAN', attribute_name = 'description', attribute_value = 'original, but not desired plan'); END; sql_handle und plan_name stammen aus dba_sql_plan_baselines
43.
Unser Beispiel mit
einer SQL Plan Baseline (3) Das Statement mit Hint ausführen, um es in den Cursor Cache zu laden sql_id und plan_hash_value dieses Statement mit Hint besorgen Den gewünschten Plan nun mit der bereits bestehenden Baseline assoziieren 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 43 SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815 SELECT sql_id, plan_hash_value FROM v$sql WHERE sql_text LIKE 'SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815' DECLARE v_cnt NUMBER; BEGIN v_cnt := dbms_spm.load_plans_from_cursor_cache( sql_id = 'buzbqk5t2m81y', plan_hash_value = '2966233522', sql_handle = 'SQL_d7cd0a6e6c80df97'); END; sql_id und plan_hash_value stammen aus v$sql sql_handle ist dieselbe wie zuvor
44.
Unser Beispiel mit
einer SQL Plan Baseline (4) Optional den zweiten Plan umbenennen und kommentieren 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 44 DECLARE v_cnt NUMBER; BEGIN v_cnt := dbms_spm.alter_sql_plan_baseline( sql_handle = 'SQL_d7cd0a6e6c80df97', plan_name = 'SQL_PLAN_dgm8adtq81rwr3fdbb376', attribute_name = 'plan_name', attribute_value = 'DESIRED_PLAN'); v_cnt := dbms_spm.alter_sql_plan_baseline( sql_handle = 'SQL_d7cd0a6e6c80df97', plan_name = 'DESIRED_PLAN', attribute_name = 'description', attribute_value = 'desired plan introduced by the hint'); END; sql_handle ist dieselbe wie zuvor plan_name stammt aus dba_sql_plan_baselines
45.
Einen Plan zu
einem anderen Statement assoziieren? Was ist das denn für ein Hack? Ist das erlaubt? Die gezeigten Schritte werden durch Maria Colgan (ehemals Product Manager Oracle Optimizer) in verschiedenen Posts auf https://blogs.oracle.com/optimizer empfohlen Ebenso in ihrer Präsentation „Harnessing the Power of Optimizer Hints” Aus dieser Präsentation stammt das Mantra „If you can hint it, baseline it“ Außerdem – alle benutzten Statements sind regulär dokumentiert 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 45 full_plan_baseline.sql
46.
Verifikation Überprüfen,
ob der gewünschte Plan verwendet wird 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 46 SELECT count(*) FROM t WHERE id=0815; SELECT * FROM table(dbms_xplan.display_cursor(format='basic +note')); ... ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS FULL| T | ----------------------------------- Note ----- - SQL plan baseline DESIRED_PLAN used for this statement
47.
Zwischenbilanz: SQL Plan
Baselines 2014 © Trivadis SQL Plan Baselines Verfügbar seit 11g Deprecated ? Nein XE/SE/SE1 ? Nein Tuning Pack benötigt Nein Match wird nach Normalisierung durchgeführt Ja Literal-insensitiver Match (force_match=true) Nein Datenänderungen werden berücksichtigt Ja Nutzbar um einen Hint im SQL unwirksam zu Ja machen Kategorien für verschiedene Workloads und Perioden Nein gather_plan_statistics Hint injizieren Nein Parallelverarbeitung ändern Ja DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 47
48.
Wie kommt der
Hint in das SQL? 1. Einführung 2. Stored Outlines 3. SQL Profiles 4. SQL Patches 5. SQL Plan Baselines 6. Allgemeines und Fazit 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 48
49.
2014 © Trivadis
DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 Allgemeines und Fazit 49
50.
Ungewünschte Hints unwirksam
machen Alle gezeigten Techniken können verwendet werden, um ungewünschte Hints in einem SQL statement unwirksam zu machen, z.B. Einfachster Weg kann auch auf System-Ebene gesetzt werden Ansonsten einen konträren Hint oder den IGNORE_OPTIM_EMBEDDED_HINTS Hint verwenden 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 50 SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815 ALTER SESSION SET _optimizer_ignore_hints = true
51.
Unhint mit Stored
Outline Für Stored Outlines gibt es einen Spezialfall, wir können die Hints auf einen einzigen reduzieren: 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 51 CREATE OUTLINE my_outline ON SELECT /*+ FULL(t) */ count(*) FROM t WHERE id=0815; DELETE FROM outln.ol$hints WHERE ol_name = 'MY_OUTLINE' AND hint_text != 'IGNORE_OPTIM_EMBEDDED_HINTS' ; UPDATE outln.ol$ SET hintcount = 1 WHERE outln.ol$.ol_name = 'MY_OUTLINE' ; COMMIT; unhint_patch.sql or unhint_profile.sql maybe: unhint_plan_baseline.sql
52.
Outlines können zu
SQL Plan Baselines migriert werden Die Migration erfolgt mit dem dbms_spm Package 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 52 variable v clob exec :v := dbms_spm.migrate_stored_outline('outline_name','MY_OUTLINE'); DROP OUTLINE my_outline;
53.
Planstabilitäts-Objekte transferieren
Stored Outlines: Inhalte der outln Tabellen transferieren, siehe Troubleshooting Oracle Performance 2 / Christian Antognini Für SQL profiles, SQL patches, SQL plan baselines gibt es unpack/pack Prozeduren Staging Tabelle erzeugen - dbms_sqltune.create_stgtab_sqlprof - dbms_sqldiag.create_stgtab_sqlpatch - dbms_spm.create_stgtab_baseline Die Staging Tabellen haben dieselbe Struktur man kann sogar ein und dieselbe Tabelle als ein Container für alle drei Typen verwenden Objekt packen, Tabelle transferieren, Objekt auspacken (unpack) - dbms_sqltune.(un)pack_stgtab_sqlprof - dbms_sqldiag.(un)pack_stgtab_sqlpatch - dbms_spm.(un)pack_stgtab_baseline 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 53
54.
Besondere non-Optimizer Hints
Tuning Sessions können von Plan Statistiken profitieren Ein GATHER_PLAN_STATISTICS Hint kann in eine bestimmte sql_id eingefügt 2014 © Trivadis werden Funktioniert nur mit SQL profiles und SQL patches Manchmal möchte man Result Cache für bestimmte sql_id einschalten Ein Weg wäre Result Cache auf Objektebene auf force zu setzen Wenn man es aber nicht für alle Queries auf dem Objekt einschalten möchte: benutze man einen unsichtbaren RESULT_CACHE Hint Bei meinen Tests funktionierte das nur mit SQL patches Andere gute Beispiele: APPEND, BIND_AWARE, CACHE, DYNAMIC_SAMPLING, MONITOR Im Allgemeinen können alle diese Hints „ SELECT name FROM v$sql_hint WHERE version_outline IS NULL “ nicht in Stored Outlines und SQL plan baselines, aber in manchen Fällen in SQL Profiles und/oder SQL Patches verwendet werden DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 54 result_cache_patch.sql append_patch.sql or append_profile.sql maybe: gather_plan_statistics_patch.sql
55.
Privilegien Stored
Outlines create any outline, alter any outline, drop any outline alter system or alter session DML Privilegien auf 3 outln Tabellen SQL Profiles und SQL Patches create any sql profile, alter any sql profile, drop any sql profile (deprecated) administer sql management object Für einige gezeigte Fälle: execute on sys.dbms_sqldiag_internal, sys.dbms_sqltune_internal SQL Plan Baselines administer sql management object Für einige gezeigte Fälle: select on v$sql, dba_sql_plan_baselines Im Allgemeinen ist es hilfreich, folgende Rechte zu haben: select on cdb_/dba_ outlines, sql_profiles, sql_patches, sql_plan_baselines Oder select any dictionary 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 55
56.
Zusammenfassender Vergleich 2014
© Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 56 Stored Outlines SQL Profiles SQL Patches SQL Plan Baselines Verfügbar seit 8i 10g 11g 11g Deprecated ? Seit 11g Nein Nein Nein XE/SE/SE1 ? Ja Nein Ja Nein Tuning Pack benötigt Nein Ja Nein Nein Match nach Normalisierung Ja Ja Ja Ja Literal-insensitiver Match (force_match=true) Nein Ja Ja Nein Datenänderungen werden berücksichtigt Nein Etwas Etwas Ja Nutzbar, um Hints in SQL unwirksam zu machen Ja Ja Ja Ja Kategorien für verschiedene Workloads und Ja Ja Ja Nein Perioden gather_plan_statistics Hint Nein Ja Ja Nein result_cache Hint Nein Nein Ja Nein Parallelverarbeitung ändern Ja Ja Ja Ja
57.
2014 © Trivadis
Fazit Es ist möglich, unsichtbar Hints zu injizieren, auch dafür, um ungewünschte Hints zu „entfernen“ Oracle treibt SMB und SQL Plan Baselines als zukünftiges Planstabilitätsfeature voran 4 verschiedene Technologien, jede hat seine eigenen Stärken und Limitierungen Die Welt ist nicht nur schwarz und weiß Manchmal auch ein bisschen rot, gelb und grün ☺ Interessanterweise zeigen SQL Patches eine Menge grün Testen Sie sorgfältig und bedenken Sie, dass Hints in den meisten Fällen nur Workarounds sind! DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 57
58.
Weitere Informationen... www.trivadis.com
Für Quellen siehe nächste Seite 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 58
59.
Quellenangabe Maria
Colgan - How do I migrate stored outlines to SQL Plan Management? - https://blogs.oracle.com/optimizer/entry/how_do_i_migrate_stored Maria Colgan - How do I deal with a third party application that has embedded hints that result in a sub-optimal execution plan in my environment? - https://blogs.oracle.com/optimizer/entry/how_do_i_deal_with_a_third_party_application_that_has_embedded_h ints_that_result_in_a_sub-optimal_ex Maria Colgan - Oracle Database Optimizer: Harnessing the Power of Optimizer Hints - http://www.nocoug.org/download/2012-11/NoCOUG_201211_Maria_Colgan_Optimizer_Hints.pdf Allison / Oracle Optimizer Blog - Additional Information on SQL Patches - https://blogs.oracle.com/optimizer/entry/additional_information_on_sql_patches Allison / Oracle Optimizer Blog - What should I do with old hints in my workload? - https://blogs.oracle.com/optimizer/entry/what_should_i_do_with_old_hints_in_my_workload Allison / Oracle Optimizer Blog - Using SQL Patch to add hints to a packaged application - https://blogs.oracle.com/optimizer/entry/how_can_i_hint_a Christian Antognini - SQL Profiles - http://antognini.ch/papers/SQLProfiles_20060622.pdf Christian Antognini - Troubleshooting Oracle Performance My Oracle Support - How to Specify Hidden Hints (Outlines) on SQL Statements in Oracle 8i (Doc ID 92202.1) Enkitec Blog - http://blog.enkitec.com/enkitec_scripts/exchange_outline_hints.sql Jonathan Lewis - Plan Stability in Oracle 8i/9i - http://www.jlcomp.demon.co.uk/04_outlines.rtf Jonathan Lewis - Hints on Hints - http://jonathanlewis.files.wordpress.com/2009/05/hints_on_hints.pdf Jonathan Lewis - Rules for Hinting - http://jonathanlewis.wordpress.com/2008/05/02/rules-for-hinting/ Kerry Osborne - Licensing Requirements for SQL Profiles - http://kerryosborne.oracle-guy. com/2011/01/licensing-requirements-for-sql-profiles/ 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014 59
60.
Fragen und Antworten...
Mathias Zarick Principal Consultant +43 664 85 44 295 Mathias.Zarick@trivadis.com BASEL BERN BRUGG GENF LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 2014 © Trivadis DOAG 2014 - Wie kommt der Hint in das SQL? 18.11.2014
Baixar agora