SQL Developer für DBAs - doag.org · © OPITZ CONSULTING 2018 überraschend mehr Möglichkeiten!...
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, 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, 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
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 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
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
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-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
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
ü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
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