Ausgewählte Advisors und Monitoring-Werkzeuge in der Datenbank Ulrike Schwinn Ulrike.Schwinn@oracle.com Oracle Deutschland B.V. & Co KG Oracle Business Unit Database Technologies & Cloud Blog: http://blogs.oracle.com/dbacommunity_deutsch DOAG Oracle Monitoring Day
Fragen ... Welche Objekte bzw. welche Blöcke sind im Data Buffer Cache? Welche Ressourcen verwendet meine Abfrage? Welche Abfragen sind langlaufende Abfragen? Welche Sessions/User verursachen die Engpässe? Wie kann man PL/SQL monitoren? Sind meine Indizes ausreichend oder habe ich zu viele Indizes? Lohnt sich die In-Memory Option für mich? Komprimierte Indizes oder Tabellen: Wieviel Platz spare ich?
Monitoring Werkzeuge, Advisors ... in der Datenbank Einfaches Framework in der Datenbank bestehend aus V$- und Data Dictionary Views Initialisierungsparameter PL/SQL Packages Enterprise Manager Cloud Control, Database Express, SQL Developer, sqlcl Eigenschaften Stehen in der Regel nach der Installation sofort zur Verfügung Teilweise gekoppelt an Initialisierungsparameter Lizenzierung berücksichtigen
Advisors im Überblick Advisor Name Beschreibung ADDM diagnostiziert Datenbank Performance Probleme und gibt Empfehlungen SQL Access gibt Informationen und Empfehlungen über die Zugriffsstrukturen SQL Tuning führt Optimizer-Analyse-Läufe durch und gibt Empfehlungen SPA (SQL Performance Analyzer) Testing Werkzeug für SQL Workloads Compression berechnet die Komprimierungsrate pro Segment Memory analysiert die unterschiedlichen Cache Größen in einer WHAT-IF Analyse Segment analysiert Tablespaces, Tabellen, Partitionen usw. auf ihren Platzverbrauch UNDO hilft eine angemessene Größe des UNDO Tablespaces festzulegen MTTR beeinflusst das Checkpoint Verhalten Data Recovery analysiert persistente "Failure" (z.B. Daten-Korruptionen) SQL Repair analysiert SQL mit kritischen Fehlern, versucht einen SQL Plan zu finden In-Memory Advisor In-Memory Nutzen für eine Workload ...
Bevor man startet ... Parameter STATISTICS_LEVEL TYPICAL oder ALL , nicht BASIC Defaultwert ist TYPICAL Aktiviert das Sammeln von Advisor Statistiken Zusätzlich für Diagnostics und Tuning Pack SQL> show parameter statistics_level NAME TYPE VALUE ------------------------------------ ----------- ----------------------------statistics_level string TYPICAL SQL> show parameter control_man NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_management_pack_access string DIAGNOSTIC+TUNING
Beispiel 1 – SQL Access Advisor – nicht neu aber ... Gute Strukturen sind ein wichtiger Faktor für Performance! Funktionsweise: Strukturanalyse von SQL Workloads Gibt Empfehlungen für Indizes Materialized Views/Materialized View Logs Partitionierung Empfiehlt Aktionen und erzeugt SQL Skript Erstellen (CREATE), Löschen (DROP), Beibehalten (RETAIN) Verfügbarkeit im Linemode oder Enterprise Manager Tuning Pack
SQL Access Advisor – API DECLARE workload_name varchar2(100) :='STS_DOAG'; task_name varchar2(100); task_id number; begin dbms_advisor.create_task('SQL Access Advisor', task_id, task_name); dbms_advisor.set_task_parameter(task_name,'ANALYSIS_SCOPE','INDEX'); dbms_advisor.set_task_parameter(task_name,'WORKLOAD_SCOPE','FULL'); dbms_advisor.set_task_parameter(task_name,'MODE','LIMITED'); dbms_advisor.set_task_parameter(task_name,'TIME_LIMIT','5'); dbms_advisor.set_task_parameter(task_name,'VALID_TABLE_LIST','DWH_DATA.%'); dbms_advisor.add_sts_ref(task_name, 'SYS', workload_name); dbms_advisor.execute_task(task_name); dbms_advisor.create_file(DBMS_ADVISOR.GET_TASK_SCRIPT(task_name),'HOME','adv.sql'); end;
SQL Access Advisor – Im Cloud Control
SQL Access Advisor – Ergebnis Rem SQL Access Advisor: Version 12.1.0.2.0 – Production Rem Rem Username: SYS Rem Task: TASK_74091 Rem Execution date: /* RETAIN INDEX "DWH_DATA"."FACT_701_CC_IDX" */ /* RETAIN INDEX "DWH_DATA"."FACT_701_PER_IDX" */ /* RETAIN INDEX "DWH_DATA"."LU_ITEM_701_FV01_IDX" */ CREATE INDEX "DWH_DATA"."LU_ELEMENTGROU_IDX$$_1216B0000“ ON "DWH_DATA"."LU_ELEMENTGROUP_REL“ ("ELEMENTGROUP_ID","VALUE_ID") COMPUTE STATISTICS; ... DROP INDEX "DWH_DATA"."LU_ITEM_701_ITM_IDX"; DROP INDEX "DWH_DATA"."LU_ITEM_701_PG_IDX";
SQL Access Advisor - Fazit Überprüfung der Strukturen ohne eigene Applikationskenntnisse Kein Setup erforderlich Einfache Durchführung über graphische Oberfläche Benötigt Ressourcen Benötigt Workload/STS Überprüfung ist in jedem Fall sinnvoll Indizes niemals einfach löschen oder einfach anlegen=> Skript editieren Unterstützende Features: Invisible Indizes, Mehrfachindizierung in 12c Tuning Pack erforderlich
Beispiel 2 – Oracle Database In-Memory - Steckbrief Reines In-Memory Format Nutzung unterschiedlicher Komprimierungsarten (2x - 20x) Einschaltbar auf Objektebene Voraussetzungen: Datenbank Release 12.1.0.2 Gebunden an In-Memory Option Der Column Store ist geeignet für einheitliche Zugriffe (alle Zeilen einer Tabelle) => typisch für analytische Abfragen Der Column Store ist mit zusätzlichen neuen Optimizerzugriffen und Komprimierungsalgorithmen ausgestattet
Beispiel 2 – In-Memory Advisor Analysiert Workload und gibt Ratschläge zur Verwendung von Oracle Database In-Memory Option Nutzt AWR und ASH Daten Installation und Download notwendig Nutzung Über Package oder vorgefertigte Skripte bzw. EM ab Version 13.1 Für 12c und auch für 11.2.0.3 Datenbanken Voraussetzung: XMLDB Lizenzierung: Tuning Pack erforderlich
In-Memory Advisor Verwendung Aktuellen Download (neu im Juni!) von MOS (Doc ID 1965343.1) nutzen Zip Datei und Paper Kurze Installation über SQL Skript Erzeugt IMADVISOR Schema, neue Packages und Views Einfache Verwendung mit Skript Während Live Workload oder nach Batch Lauf Notwendig: Zeitspanne (ab wann und wie lange) Optional: Memory Size für In-Memory Ergebnis ist HTML Report und SQL Skript
In-Memory Advisor – in Aktion SQL> @imadvisor_recommendations.sql The following is a list of your existing tasks: TASK_NAME DATE_CREATED ------------------------------ ----------------------------- task1 2016-JUN-16 15:01:44 Default task_name (new task): im_advisor_task_20160616172326 Enter value for task_name: task4 ... Analyzing and reporting on a live workload on this database (DBID=1381635790)... Enter value for inmemory_size: 2Gb The In-Memory Advisor will optimize for this In-Memory size: 2GB Enter begin time for report: Enter value for begin_time: -3:00 Enter duration in minutes starting from begin time Enter value for duration: 180 Using 2016-JUN-16 14:23:42.000000000 as report begin time Using 2016-JUN-16 17:23:59.000000000 as report end time
In-Memory Advisor – Ergebnisse HTML Datei (imadvisor_<taskname>.html) SQL Skript Rem Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. ALTER TABLE "DWH_DATA"."FACT_PD_OUT_ITM_701" INMEMORY MEMCOMPRESS FOR QUERY LOW; ALTER TABLE "DWH_DATA"."LU_ELEMENTGROUP_REL" INMEMORY MEMCOMPRESS FOR QUERY LOW; ALTER TABLE "DWH_DATA"."LU_ITEM_701" INMEMORY MEMCOMPRESS FOR QUERY LOW; ALTER TABLE "DWH_DATA"."LU_ELEMENTRANGE_REL" INMEMORY NO MEMCOMPRESS; ...
Ergebnis Ausschnitt
In-Memory Advisor - Weiteres Weitere Verwendung AWR s und STS können von anderer Datenbank importiert werden Müssen dem Advisor bekannt gegeben werden (spezielle Vorgehensweise siehe Paper) Wichtig: Muss ausreichende und relevanten Daten erhalten Informationen Oracle Database In-Memory Advisor Usage Examples Using SAP NetWeaver with Oracle Database In- Memory - im SAP Umfeld eigenes Vorgehen
Fazit und Ausblick Ausprobieren lohnt sich! Immer zusätzlich Realitäts Check durchführen Nicht vergessen: Advisor und Monitoring Werkzeuge haben fokussierten und definierten Einsatzbereich In 12.2 wird es neue bzw. erweiterte Advisors geben Informationen auch auf unserem deutschsprachigen Community Blog Seite https://blogs.oracle.com/dbacommunity_deutsch/