Automatisierung von Tabellen- und Index-Reorganisationen

Ähnliche Dokumente
DOAG Regionaltreffen TABLE REORG. Klaus Reimers. Leiter Beratung & Entwicklung, ORDIX AG, Paderborn

DOAG Index Tuning

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 8 Indizes. Universität Hannover. Installation. Index-Typen. Anhang.

Row Chaining & Row Migration Alte Bekannte - immer noch aktuell! DOAG 2014 Datenbank Dierk Lenz

Datenbank Reorganisation Sinn oder Unsinn?

Tabellen und Indizes Reorganisieren, aber wann?

Oracle Index Tuning &Admin

Online Table Shrink. Freigabe von ungenutztem Speicherplatz. Autor: Ralf Durben, ORACLE Deutschland GmbH

Gliederung. 1) Speicherplatz-Zuordnung und -Verwaltung 2) Indizes 3) Explain Plan 4) Join-Operationen 5) Der Optimizer 6) Parallelisieren

Index Rebuild. DOAG Konferenz , Nürnberg. Martin Hoermann

Index Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann

Datenbank Objekte (Tabellen, Segemente, Extents, Blöcke)

Oracle Datenbank Reorganisationen

Oracle 9i Einführung Performance Tuning

10 Gründe warum Ihr Index nicht verwendet wird

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten

Performance in der Oracle Datenbank von Anfang an

Automatisierte Datenmigration mit dynamischen SQL

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 10 Stored Outlines. Universität Hannover. Eigenschaften. Migration. Erstellen mit OEM.

Johannes Ahrends CarajanDB GmbH CarajanDB GmbH

Philipp Nebel, 05 IN. Speicherung von Datenbank-Objekten in Oracle

Übung PL/SQL Trigger Lösungen

Warum wird mein Index nicht benutzt?

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Online-Datenbankreorganisation

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Tablespaces und Datendateien

Ablauf von startdupindmass beim Erstaufbau der Strukturierten Titeldaten; sisis-db; DBS=syb; BVBX8:

Flashback mal sieben. DOAG Konferenz , Nürnberg. Klaus Reimers

Oracle 10g Einführung

Kurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning.

Datenbank und Tabelle mit SQL erstellen

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Online Table Reorg mit Quest Space Manager. Wolfgang Steiner

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

PostgreSQL Wartungsstrategien

Martin Bracher Technische Background Info und Trivadis Scripts

Erzeugung und Veränderung von Tabellen

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Oracle 10g Einführung

Übersicht der wichtigsten MySQL-Befehle

Willkommen zum DOAG Regionaltreffen

Tablespaces und Datendateien

Sind wir eigentlich ganz dicht? - Revisited. Eero Mattila Principal Systems Consultant

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Üben von DDL und DML. Ergebnis:

Einfache Administration von Oracle Datenbanken mit der neuen Toad 10 DBA Suite

Oracle Advanced Compresion 10g versus 11g

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Anfrageoptimierung Ausführungspläne, Hints, Statistikinformationen, IDEs

Praktische SQL-Befehle

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Vorlesung Datenbanken II B Nachklausur

Datenbanken Implementierungstechniken SS2015

ifadm Vortrag IUG 2015

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Aufbau einer Oracle Datenbank Tablespace, Arten von Dateien

INFORMATIK ROEING UND FRITZE ORACLE DBMS UND SQL. Seminarunterlage

Oracle Flashback. in der Praxis Dr. Frank Haney 1

Oracle Datenbank 11g Advanced Compression Option

Oracle 9i Einführung Performance Tuning

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

Verwendung und Einsatzmöglichkeiten des Flashback-Query

Tuning the Mobile Server

Oracle Indexing Primer

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - WS Metadaten. Andreas Schmidt Metadaten 1/17

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW

Schnellübersichten. SQL Grundlagen und Datenbankdesign

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Indexbasiertes SQL Tuning

Johannes Ahrends Geschäftsführer CarajanDB GmbH CarajanDB GmbH

SAP Business Information Warehouse mit Oracle Database

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

DOAG Nürnberg Oracle Index Tuning & Administration. Marco Patzwahl

IV. Datenbankmanagement

Partitioning mit Oracle Text 9i

Parallele Programmierung in SQL und PL/SQL. Peter Bekiesch Dierk Lenz DOAG 2011 Konferenz und Ausstellung 17. November 2011

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Naxtron GmbH Schlosstalstrasse Winterthur. Subject. New Features Oracle 9i Tuning. Edo Bezemer. Author

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Abfragen (Queries, Subqueries)

Fehlerbehandlung mittels DML Error Logging

Datenbanken II B: DBMS-Implementierung Klausur

Android Programmierung. Studiengang MI

Andrea Held. Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken. Empfehlungen

Grundlagen der Datenbanksysteme 2 (M-DB2) Dr. Karsten Tolle

Quest Central for Oracle

Oracle Datenbankadministration Grundlagen

DATENBANKTUNING - NEUE MÖGLICHKEITEN DURCH DIE FEATURES DER ORACLE DATABASE 12C OPTION ADVANCED COMPRESSION

Space The Final Frontier

Acht große Oracle-Datenbank-Mythen

Fast Analytics on Fast Data

Donnerstag, 10. November h00, Musensaal Database. LogMiner im Einsatz. Marco Patzwahl MuniQSoft GmbH, Unterhaching b.

Transkript:

UB SERVICES ZIT P Automatisierung von Tabellen- und Index-Reorganisationen SAP/Oracle-Umfeld

2 Agenda 1. Wie Fragmentierung entsteht Objekt-Fragmentierung Tablespace-Fragmentierung 2. Problematik bei Fragmentierung (Beispiel SAP-Umfeld) Unterschiedliche Extent-Größen Nutzloser Speicherplatz 3. Die Lösung: Neuaufteilung der DB-Objekte Uniform Extents Zusätzliche Tablespaces 4. Die automatisierten Verfahren Index-Rebuild Table-Rebuild Move Table

3 1. Wie Fragmentierung entsteht Objekt-Fragmentierung: Tabellen Durch update und delete entstehen Lücken und chained rows Insert into... PCTFREE row 7 row 6 row 5 row 4 row 3 row 2 row 1 unfragment. Block delete from... where row>4 PCTFREE row 4 row 3 row 2 row 1 Block ist fragmentiert bis pctused erreicht update... set... where row=7 Block 1 Block n ptr 7 row 7 row 6 row 5 row 4 row 3 row 2 row 1 Chained rows

4 1. Wie Fragmentierung entsteht Objekt-Fragmentierung: Indexe Durch insert, update und delete werden Blöcke aufgespalten Insert: Block-Splitting Leaf-Block 1 10 RowID 12 RowID 11 RowID 13 RowID Update/Delete: unbenutzbarer Bereich entsteht 10 RowID 11 RowID 13 RowID Leaf-Block 1 Leaf-Block 2 10 RowID 12 RowID 11 RowID 13 RowID update Tabelle set ID=ID+50 where ID in (10,11) 13 RowID 60 RowID 61 RowID

5 1. Wie Fragmentierung entsteht Tablespace-Fragmentierung: Durch Create, Drop und Recreate von Datenbank-Objekten entstehen Lücken : INIT1 INIT2 INIT3 INIT4 NEXT3 Tabelle1 NEXT1 NEXT3 NEXT1 NE XT1 NEXT3 Tabelle2 NEXT4 NEXT2 NEXT1 Tabelle3 Tabelle4 create table Tabelle5 as select * from Tabelle3; drop table Tabelle3; alter table Tabelle5 rename to Tabelle3; INIT1 INIT2 INIT4 NEXT1 NEXT1 XT1 NEXT4 NEXT2 NEXT1 INIT3 NE

6 2. Problematik (Beispiel SAP-Umgebung): Unterschiedliche Extent-Größen SQL> select tablespace_name, count(distinct bytes) NUMDIST, count(distinct segment_name) 2 as NUMOBJ, min(bytes)/1024 as KBMIN, max(bytes)/1024 as KBMAX 3 from dba_extents where owner='sapr3' group by tablespace_name; TABLESPACE_NAME NUMDIST NUMOBJ KBMIN KBMAX ------------------------------ --------- --------- --------- --------- PSAPBTABD 181 3511 16 207080 PSAPBTABI 54 4976 16 28120 PSAPCLUD 5 36 16 10240 PSAPCLUI 4 36 16 11400 PSAPDDICD 34 250 16 53400 PSAPDDICI 19 283 16 23880 PSAPDOCUD 16 110 16 9960 PSAPDOCUI 7 123 16 7200 PSAPPOOLD 117 10747 16 137208 PSAPPOOLI 29 10939 16 95880 PSAPPROTD 21 160 16 17520 PSAPPROTI 8 168 16 3480 PSAPSOURCED 20 73 16 25240 PSAPSOURCEI 8 90 16 14760 PSAPSTABD 224 5935 16 214520 PSAPSTABI 13 7823 16 2736

7 2. Problematik So entsteht nutzloser Speicherbereich, d.h. viele kleine Lücken im Tablespace (dba_free_space): - Erreichen von Maxextents und anschließende manuelle Reorganisation - Verschieben von Tabellen in ein anderes Tablespace - Alter Index rebuild - Hinzufügen von kleinen Datenbank-Dateien

8 2. Problematik Weitere Gründe für Reorganisationen können sein: - Falsch dimensionierte Tabelle - Block-Fragmentierung - Viele Transaktionen => Erhöhung von INITTRANS-Parameter - Güte eines Index extrem schlecht => Neuaufbau Objekt-Reorganisationen und sind bei Datenbanken mittelfristig nicht vermeidbar!

9 3. Die Lösung: Neuaufteilen der DB-Objekte Neue Tablespaces: create tablespace PSAP40KB1D datafile... default storage (initial 40K next 40K maxextents 5000 pctincrease 0) miminum extent 40K; Alternativ bei 8i/9i: create tablespace PSAP40KB1D datafile... extent management local uniform size 40k; create tablespace PSAP640KB1D... create tablespace PSAP10MB1D... create tablespace PSAP50MB1D...

10 3. Die Lösung: Neuaufteilen der DB-Objekte Tabellen mit create table as select ohne storage-klausel verschoben Nur eine einzige Extent-Größe innerhalb eines Tablespace! PSAPBTABD PSAPCLUD PSAPDDICD PSAPDOCUD PSAPLOADD PSAPPOOLD PSAPPROTD PSAPSOURCED PSAPSTABD PSAPUSER1D <640KB >=640KB und <10MB >=10MB und <=1000MB >1000MB PSAP40KB1D PSAP640KB1D PSAP10MB1D PSAP50MB1D Standard-Tablespaces wurden gelöscht und leer mit 50MB Größe angelegt

11 3. Die Lösung: Neuaufteilen der DB-Objekte Select auf dba_extents: SQL> select tablespace_name, count(distinct bytes) NUMDIST, count(distinct segment_name) 2 as NUMOBJ, min(bytes)/1024 as KBMIN, max(bytes)/1024 as KBMAX 3 from dba_extents where owner='sapr3' group by tablespace_name; TABLESPACE_NAME NUMDIST NUMOBJ KBMIN KBMAX ------------------------------ --------- --------- --------- --------- PSAP40KB1D 1 20108 40 40 PSAP40KB1I 1 22962 40 40 PSAP640KB1D 1 703 640 640 PSAP640KB1I 1 1065 640 640 PSAP10MB1D 1 115 10240 10240 PSAP10MB1I 1 238 10240 10240 PSAP50MB1D 1 10 51200 51200 PSAP50MB1I 1 21 51200 51200 PSAPBTABD 1 21 40 40 PSAPBTABI 1 22 40 40 PSAPDDICD 1 2 40 40 PSAPDDICI 1 3 40 40

12 3. Die Lösung: Neuaufteilen der DB-Objekte Durch Reorganisationen freigewordener Speicherplatz kann jederzeit wieder belegt werden: drop table Tabelle3; alter table Tabelle5 rename to Tabelle3; INIT1 INIT2 INIT3 INIT4 NEXT3 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT3 NEXT3 NEXT3 NEXT4 NEXT4 NEXT4 NEXT4 NEXT4 NEXT2 NEXT3 NEXT1 create table Tabelle5 as select * from Tabelle3; INIT1 INIT2 INIT4 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT4 NEXT4 NEXT4 NEXT4 NEXT4 NEXT2 NEXT1 INIT3 NEXT3 NEXT3 NEXT3 NEXT3 NEXT3 insert into Tabelle1... INIT1 INIT2 INIT3 INIT4 NEXT3 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT3 NEXT3 NEXT3 NEXT4 NEXT4 NEXT4 NEXT4 NEXT4 NEXT2 NEXT3 NEXT1 INIT5 NEXT5 NEXT5 NEXT5 NEXT5 NEXT5 INIT1 INIT2 NEXT1 INIT4 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT1 NEXT4 NEXT4 NEXT4 NEXT4 NEXT4 NEXT2 NEXT1 INIT3 NEXT3 NEXT3 NEXT3 NEXT3 NEXT3 NEXT1

13 4. Die automatisierten Verfahren Automatische Tabellen Reorganisationen: - Wöchentliches analyze table estimate statistics 10000 rows auf alle Tabellen - Während Downtime: In einer PL/SQL-Schleife create table as select /*+index(tab Tab~0)*/ -Statements absetzen für alle Tabellen mit num_rows*avg_row_len/(blocks*block_size)<0.5 - Tabellen mit LONG-Feldern werden mit exp/imp-utility reorganisiert - Zentrales Überwachen durch Abgleich mit einem zentralen Repository

14 4. Die automatisierten Verfahren Clustering Factor erhöhen: - Index-Hint /*+index(tab Tab~0)*/ bei CTAS-Statements - Datensätze werden sortiert wie der Primärschlüssel - Sequentiellen Lesen (Range-Scan) über Index erfordert wesentlich weniger Disk-I/O DB_BLOCK_BUFFER LB1 TB1 Leaf-Block 1 10 RowID 11 RowID 13 RowID Tabellen-Block 1 RowID 10...... RowID 11...... RowID 13......

15 4. Die automatisierten Verfahren Move-Table Funktion: - Im Repository kann definiert werden, ob eine Tabellen-Reorganisation mit neuen storage-parametern forciert werden soll - Dadurch kann eine stark wachsende Tabelle z.b. in das Tablespace mit der nächsthöheren Extent-Größe verschoben werden - Beim wöchentlichen Reorg-Lauf werden die definierten Tabellen bevorzugt berücksichtigt

16 4. Die automatisierten Verfahren Move-Table Funktion: Eingabemaske

17 4. Die automatisierten Verfahren Automatischer Index-Rebuild: - wöchentliches analyze index validate structure auf jeden Index - Abspeichern der Ergebnisse in einer lokalen Tabelle - Erstellen von alter index rebuild -Statements für alle Indexes mit Height>3 und del_lf_rows_len/lf_rows_len>0.2 - Start des Index-Rebuild-Skripts - Zentrales Überwachen durch Abgleich mit einem zentralen Repository

18 4. Die automatisierten Verfahren Historisierung - Zweimal täglich werden die Daten aus v$parameter, dba_segments, dba_tablespaces und dba_free_space aller DB s mit der zentralen DB abgeglichen (historisiert) - Wenn sich ein beliebiger Wert in einem Datensatz zum Repository ändert, wird dort ein Datensatz erstellt - Täglich wird aus dem Repository eine Mail generiert mit Informationen, ob systemübergreifend z.b. - Eine Tabelle mehr als 500 Extents oder zu 90% maxextents erreicht hat - Tablespace mehr als 90% voll ist

19 4. Die automatisierten Verfahren Speicherplatzverlauf Tablespace PSAP10MB1D

20 Fazit - Verlagern der Administration vom Reagieren zum Agieren - Kalkulierbarer und berechenbarer Platz in allen Tablespaces - Höhere Verfügbarkeit, keine ORA-001653 Fehlermeldungen - Keine Wochenend-Aktionen für Reorganisationen - Automatisches Erkennen von fragmentierten Tabellen und Indexen - Optimaler Füllgrad der Datenbank-Blöcke - Optimale Speicherplatzausnutzung in den Tablespaces

21 Vielen Dank für Ihre Aufmerksamkeit! Q + A Rainer.Zerwes@commerzbank.com