SQL Developer für DBAs - doag.org · © OPITZ CONSULTING 2018 überraschend mehr Möglichkeiten!...

51
© OPITZ CONSULTING 2018 überraschend mehr Möglichkeiten! © OPITZ CONSULTING 2018 #DOAGDB2018 Uwe Küchler OPITZ CONSULTING Deutschland GmbH SQL Developer für DBAs

Transcript of SQL Developer für DBAs - doag.org · © OPITZ CONSULTING 2018 überraschend mehr Möglichkeiten!...

© OPITZ CONSULTING 2018

überraschend mehr Möglichkeiten!

© OPITZ CONSULTING 2018

#DOAGDB2018

Uwe KüchlerOPITZ CONSULTING Deutschland GmbH

SQL Developer für DBAs

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

Zur Person

Generation C=64

Seit über 25 Jahren in der IT tätig

1997-2000 bei Oracle Deutschland

Seither durchgehend Oracle-Berater, im DBA-und Entwicklungs-Umfeld, Tutor

Seit 09/2013 bei OPITZ CONSULTING

Buch- und Blogautor (oraculix.de)

Performance als „Steckenpferd“

1975

2016

© OPITZ CONSULTING 2018 Seite 3

überzählige blaue Zahlenboxen löschen!

Agenda

1

2

3

4

Mitgelieferte DBA-Features

Nützliche Standard-Features

Eigenbau von Features

Fragen

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018 Seite 4

Mitgelieferte DBA-Features

Ein Tip vorweg

Das "DBA"-Tab

Der graphische Instance Viewer

SQL Trace Profiler

1

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Ein Tip vorweg: sqldeveloper.conf

<sqldev_home>/sqldeveloper/bin/sqldeveloper.conf- oder –%AppData%\sqldeveloper\<Version>\product.conf

Am Ende einfügen:

# Set Language to English

AddVMOption -Duser.language=en

# Disable annoying screen repaint

AddVMOption -DideUIBlockerShowBusy=false

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Schema Browser

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

Schema Browser

Alternative zur Baumansicht

Rechtsklick auf die Verbindung

„Schema Browser“ auswählen

Ähnlichkeit zu TOAD ist unverkennbar… „Compile Invalid“ compiliert jedoch alles, nicht nur den

gewählten Objekttyp

Multi-Tenant: aus der CDB heraus – auch als SYSDBA –keine Schemata einer PDB auswählbar.

© OPITZ CONSULTING 2018

möglich, Hauptinh. r. + Sekundärinhalt l.

SQL Developer für DBAs, DOAG DB 2018

Schema Browser (2): Export

Rechtsklick auf Tabelle oder View

Neben Daten kann auch DDL exportiert werden. DDL-Export geht bei allen

Objekttypen

Neben typischen Formaten auch JSON, PDF, HTML

© OPITZ CONSULTING 2018

möglich, Hauptinh. r. + Sekundärinhalt l.

SQL Developer für DBAs, DOAG DB 2018

Schema Browser (2): Import

Rechtsklick auf Tabelle oder Pulldown-Menü neben Objekttyp

Import via INSERT

Insert Script Erzeugen

External Table

Staging External Table

SQL Loader

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Das „DBA“ Tab

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

Das „DBA“ Tab

Aktivieren über „View“ („Ansicht“) – „DBA“

Fast alle DBA-spezifischen Funktionen des SQLDev sind hier untergebracht

Scheduler-Funktionen sind leider auf zwei Tabs verteilt.

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Instance Viewer

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

DB Banner

Session Info

Wait Statistics

Session CPU and Time Stats

Top SQL by CPU

SQL Monitor

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Instance Viewer: Memory/Storage Tab

SGA Statistics Datafiles

Logfiles

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

SQL Trace / tkprof im SQL Developer

© OPITZ CONSULTING 2018

möglich

Extended SQL Trace-- An-/Abschalten in der eigenen Session

SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';

SQL> ALTER SESSION SET EVENTS '10046 trace name context off';

-- An-/Abschalten für eine andere Session

SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>TRUE);

SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>FALSE);

-- An-/Abschalten für eine andere Session

SQL> EXEC DBMS_SYSTEM.set_ev(si=>123, se=>1234, ev=>10046, le=>8, nm=>' ');

SQL> EXEC DBMS_SYSTEM.set_ev(si=>123, se=>1234, ev=>10046, le=>0, nm=>' ');

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Extended SQL Trace (2)

„Howto“ auf oracle-base.com

Trace File auswerten mit Drag&Drop auf ein SQL Worksheetoder „Datei“ – „öffnen“

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Extended SQL Trace (2)

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018 Seite 19

Nützliche Standard-Features

Umgang mit DBMS_JOB und Scheduler

Umgang mit den Session-Reports

Code Snippets

2

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

DBMS_JOB und Scheduler

Details sind auf „Connections“ und „DBA“ verteilt. Warum?

Immerhin sind Scheduler Jobs jetzt überhaupt im Connection Tree sichtbar. Das hatte früher ganz gefehlt.

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

DBMS_JOB und Scheduler

Die Struktur-Ansicht zeigt die Abhängigkeiten von Jobs graphisch an.

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

DBMS_JOB und Scheduler

Mit dem Modeller lassen sich kompliziertere Abläufe (Chains) graphisch darstellen und leichter modellieren.

Beispiel aus einem Tutorial auf Oracle Technet

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

Code Snippets

© OPITZ CONSULTING 2018

möglich, Hauptinh. l. + Sekundärinhalt r.

SQL Developer für DBAs, DOAG DB 2018

Code Snippets

Viele, nützliche Codebeispiele schon enthalten Optimizer Hints

PL/SQL-Strukturen

Analytische Funktionen

Datums- und Zeit-Funktionen

Kommentare erläutern den Code

Vorhandene Kategorien können erweitert und

Neue Kategorien selbst angelegt werden.

Ablage unter: %AppData%\SQL Developer Kann z.B. aus meinem GitHub-Repository kopiert werden

© OPITZ CONSULTING 2018 Seite 25

Eigenbau von Features

Erweitern der Kontext-Menüs

Selbstdefinierte Reports

3

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Extensions

Selbstgemachte Erweiterungen der Funktionalität von SQLDev

XML Extensions Relativ leicht zu erstellen

Beziehen sich auf vorhandene Funktionen („Nodes“)

Leider immer noch wenig dokumentiert

Java Extensions Völlig neue Funktionen möglich

Beispiel: „Mr. Trace“ von Method R

Höhere Einstiegshürde ( Java-Kenntnisse, IDE)

API leider immer noch wenig dokumentiert

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

Extensions (2)Beispiel: „Errors“ Tab für Views<items><item type="editor" node="ViewNode" vertical="true"><title><![CDATA[ERRORS]]></title><query><sql><![CDATA[SELECTATTRIBUTE, LINE|| ':'||POSITION "LINE:POSITION", TEXTFROMAll_ErrorsWHEREtype = 'VIEW'AND owner = :OBJECT_OWNERAND name = :OBJECT_NAMEORDER BYSEQUENCE ASC]]></sql></query></item></items>

Quelle: Jeff Smith

Objekttyp

Node, der erweitert werden soll

Platzhalter, werden von SQLDev befüllt

© OPITZ CONSULTING 2018

möglich, Hauptinh. r. + Sekundärinhalt l.

SQL Developer für DBAs, DOAG DB 2018

Extensions (3)Beispiel: „Errors“ Tab für Views

XML speichern

„Tools“- „Preferences“

Siehe Bild

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

User-Defined Reports

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

User-Defined Reports

Mächtiges Werkzeug für Abfragen und Visualisierungen

Einfach aus dem SQL-Editor erstellbar

Verschiedene Ausgabeformate Tabelle

Graphen (Torte, Balken, Linien, Flächen, …)

HTML (z.B. aus PL/SQL-Prozedur generiert)

Export nach PDF

Parent-Child-Reports möglich Parameterübergabe via „:SPALTENNAME“ (IMMER in Großbuchstaben!)

Parent-Child-Grandchild durch manuelles Editieren des XML möglich

© OPITZ CONSULTING 2018

möglich

User-Defined ReportsBeispiel: Überblick über Scheduler-Jobs

/* Scheduler Reports DBA Scheduler Jobs */

SELECT * FROM "SYS"."DBA_SCHEDULER_JOBS"

WHERE :JOB_NAME IS NULL OR INSTR( UPPER( JOB_NAME ), UPPER( :JOB_NAME ) ) > 0

ORDER BY last_start_date DESC NULLS LAST

-- Als Detail-Bericht:

/* Scheduler Reports All Job Logs */

select * from sys.dba_scheduler_job_log a

where a.JOB_NAME = :JOB_NAME and a.owner = :OWNER

order by LOG_DATE desc

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

User-Defined ReportsBeispiel: Überblick über Scheduler-Jobs (2)

Anlegen aus bestehendem SQL ist simpel: SQL markieren

Rechtsklick „Create Report“

Ergebnistyp auswählen (hier: Table)

„Apply“

Detail-Bericht hinzufügen: „Child Reports“ – „Add Child“

Neu erzeugte Zeile in der Baumansicht links erweitern

SQL-Text einfügen

Ergebnistyp auswählen (hier: Table)

„Apply“

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

User-Defined ReportsBeispiel: Überblick über Scheduler-Jobs (2)

© OPITZ CONSULTING 2018

möglich

SQL Developer für DBAs, DOAG DB 2018

User-Defined Reports:Weitere Beispiele

Siehe auch: https://github.com/oraculix/sql-developer-tools

© OPITZ CONSULTING 2018

möglich

V$SESSION_LONGOPS

Zeigt lange laufendes SQL und PL/SQL Ab bestimmten Schwellwerten

PL/SQL: bei entsprechender Instrumentierung immer. DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS

Nur Operationen, deren Dauer berechnet werden kann Full Table Scans

Index (Fast) Full + Range Scans

Hash- und Merge Joins

leider keine Nested Loops Nachteil bei OLTP

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

V$SESSION_LONGOPS im SQL Developer

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Historisierte Metriken für 60 Minuten kostenfrei

Es gibt Views auf die Performance-Metriken der letzten 60 Minuten, für die kein Diagnostics Pack gekauft werden muss:

V$WAITCLASSMETRIC_HISTORY Wartezeiten nach Wait Class (Application, Concurrency, Network, …)

Durchschnitt über 15s und 60s, für eine Stunde historisiert

V$SYSMETRIC_HISTORY System-Metriken (CPU, Executes, Parses, Commits, Reads, …)

Durchschnitt über 15s und 60s, für eine Stunde historisiert

Entspricht den Performance-Infos in EM – aber kostenfrei!

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Historisierte Metriken für 60 Minuten kostenfrei (2)select * from (

with WC as(

select distinct e.WAIT_CLASS, e.WAIT_CLASS_ID

from v$event_name e

)

select to_char( END_TIME, 'yyyy-mm-dd hh24:mi' ) time

, wc.WAIT_CLASS

, round( AVERAGE_WAITER_COUNT, 2 ) AVERAGE_WAITER_COUNT

from GV$WAITCLASSMETRIC_HISTORY h

, WC

where h.WAIT_CLASS_ID = wc.WAIT_CLASS_ID

and wc.WAIT_CLASS <> 'Idle'

and h.INST_ID = ( select INST_ID from V$INSTANCE )

union all

select to_char( END_TIME, 'yyyy-mm-dd hh24:mi' ) time

, '_CPU' as WAIT_CLASS

, round( sh.VALUE / 100, 2 ) AVERAGE_WAITER_COUNT

from GV$SYSMETRIC_HISTORY sh

where sh.METRIC_ID = 2075 -- "CPU Usage Per Sec" in csec/s

and sh.INST_ID = ( select INST_ID from V$INSTANCE )

)

where rownum < 1000

order by TIME, WAIT_CLASS;

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

Rücksprache mit Mktg.

Gather Database Stats

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Log Switch Heat Map

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Log Switch Heat Map

Grundlage: v$log_history

SELECT TO_CHAR(first_time,'YYYY-MM-DD HH24')||'h' t

, COUNT(*)

FROM v$log_history

WHERE trunc(FIRST_TIME) >= trunc(sysdate - 31)

GROUP BY TO_CHAR(first_time,'YYYY-MM-DD HH24');

…das geht aber schöner! ☺

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Log Switch Heat Map in SQL Developer

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

STATSPACK

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Statspack-Analyse mit SQL Developer Reports

Beispiel: Average Active Sessions (AAS) Wesentlicher Indikator für Belastung des RDBMS.

Vergleichbar mit „Load“ in Unix/Linux top.

Guter Einstieg für ein Drill-Down nach Top Waits und Top SQL

Nicht in SQL Developer mitgeliefert; bei GitHub zu finden http://tinyurl.com/sqldevReports

http://oraculix.com/2015/03/24/visualizing-statspack-average-active-sessions-in-sql-developer/

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

Rücksprache mit Mktg.

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Fazit

Der Oracle SQL Developer ist längst auch für DBAs tauglich. Nicht nur, weil er kostenfrei ist

DBA-Funktionen werden stetig erweitert

Als kleinster, gemeinsamer Nenner oft beste Alternative für Berater

Die Reports des SQL Developer sind für DBAs besonders interessant!

Neue Features kann man selbst implementieren oder vorschlagen

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018 Seite 47SQL Developer für DBAs, DOAG DB 2018

Fragen und Antworten

© OPITZ CONSULTING 2018

überraschend mehr Möglichkeiten!

@OC_WIRE

OPITZCONSULTING

opitzconsulting

opitz-consulting-bcb8-1009116

WWW.OPITZ-CONSULTING.COM

Data matters.

Uwe M. Küchler

Managing Consultant

[email protected] +49 6172 66260 – 0Mobil +49 173 727 91 43

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Links + Literatur

Li3

6.941

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Referenzen

SQL Developer History (Stand 2014): http://www.oracle.com/technetwork/developer-tools/sql-developer/history-sqldev-087601.html

Tutorials in der Oracle Learning Library: https://apexapps.oracle.com/pls/apex/f?p=44785:2:0:FORCE_QUERY::2,RIR,CIR:P2_PRODUCT_ID,P2_TAGS:2040,DBA

Oracle 12.1 „Scheduling Jobs with Oracle Scheduler”: https://docs.oracle.com/database/121/ADMIN/scheduse.htm#ADMIN034

Screencast zum DBMS_SCHEDULER Feature: http://download.oracle.com/otn_hosted_doc/sqldev/scheduler/scheduler_viewlet_swf.html

SQL Developer Reports und Snippets: https://github.com/oraculix/sql-developer-tools

Welche Views und APIs sind Lizenzpflichtig: http://docs.oracle.com/cd/E11882_01/license.112/e47877/options.htm#DBLIC165

Creating User Defined Extensions in Oracle SQL Developer: http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/sqldev/r30/srccodexmlext/xmlext_otn.htm

SQL Developer für DBAs, DOAG DB 2018

© OPITZ CONSULTING 2018

möglich

Referenzen

SQL Developer 18.1 User‘s Guide: https://docs.oracle.com/database/sql-developer-18.1/RPTUG/toc.htm

XML Extensions HOWTO: http://www.thatjeffsmith.com/archive/2012/07/how-to-view-errors-for-views-in-oracle-sql-developer/ und http://www.thatjeffsmith.com/archive/2015/10/more-on-xml-extensions-in-oracle-sql-developer/

SQL Developer für DBAs, DOAG DB 2018