Ausarbeitung Datenbanken II

Größe: px
Ab Seite anzeigen:

Download "Ausarbeitung Datenbanken II"

Transkript

1 Christian Gasch 05IN Ausarbeitung Datenbanken II Thema: Physische Datenbankdefinition in Oracle

2 Inhaltsverzeichnis: 1. Cluster 2. Index-organisierte Tabellen 3. Partitionierung 3.1 Range-Partitionierung 3.2 Hash-Partitionierung 3.3 Composite-Partitionierung 3.4 List-Partitionierung 3.5 Partitionierte Indizes 3.6 Existierende Tabellen partitionieren 4. Die Storage-Klausel 5. Unterstützte Indexstrukturen 5.1 B*Indizes 5.2 Bitmap-Indizes 5.3 Bitmap-Join-Indizes 5.4 Reverse-Key-Indizes 5.5 Funktionale Indizes

3 1. Cluster: Cluster sind Gruppen von einer, oder mehrerer Tabellen, die physisch zusammen gespeichert werden, weil sie gemeinsame Spalten teilen und oft zusammen benutzt werden. Das verbessert die Platten-Zugriffszeiten. Die verbundenen Spalten der Tabellen in einem Cluster werden Cluster-Schlüssel genannt. Der Cluster-Schlüssel ist indiziert, so, dass die Zeilen des Clusters mit einem minimalen I/O-Aufwand abgefragt werden können. Es spielt keine Rolle, wie viele Tabellen im Cluster den Cluster-Schlüsselwert enthalten. Er wird immer nur einmalig pro Cluster und Cluster-Index gespeichert. Deshalb wird weniger Speicherplatz benötigt. Ungeclusterte Tabellenzeilen: Geclusterte Tabellenzeilen: Die Grafiken sind eine Abwandlung der Beispielgrafiken von

4 Es gibt zwei verschiedene Arten von Clustern: Hash-Cluster Index-Cluster In Hash-Clustern werden die Daten in einem einzelnen Block basierend auf Hash-Key und Hash- Funktion zusammen gespeichert. In Index-Clustern wiederum werden die Daten in einem Block basierend auf einem gemeinsamen Spalten-Index gespeichert. SQL-Beispiel für das Erstellen eines Hash-Clusters: CREATE CLUSTER scott.off_clu (country VARCHAR2(2),postcode VARCHAR2(8)) SIZE 500 HASHKEYS 1000 TABLESPACE DATA01 STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0); HASHKEYS 1000 = wie viele Hash-Gruppen sollen erstellt werden CREATE TABLE scott.office ( office_cd NUMBER(3), cost_ctr NUMBER(3), country VARCHAR2(2), postcode VARCHAR2(8) ) CLUSTER scott.off_clu(country,postcode); SQL-Beispiel für das Erstellen eines Index-Clusters: CREATE CLUSTER scott.ord_clu (ord_no NUMBER(3)) INDEX SIZE 200 TABLESPACE DATA01 STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0); CREATE INDEX scott.ord_clu_idx ON CLUSTER scott.ord_clu TABLESPACE INDX01 STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0); CREATE TABLE scott.ord (ord_no NUMBER(3) CONSTRAINT ord_pk PRIMARY KEY, ord_dt DATE, cust_cd VARCHAR2(3)) CLUSTER scott.ord_clu(ord_no); CREATE TABLE scott.item (ord_no NUMBER(3) CONSTRAINT item_ord_fk REFERENCES scott.ord, prod VARCHAR2(5), qty NUMBER(3), CONSTRAINT item_pk PRIMARY KEY(ord_no,prod)) CLUSTER scott.ord_clu(ord_no);

5 2. Index-organisierte Tabellen: Index-organisierte Tabellen haben ihre eigene Struktur- und Indexmodelle die sich von denen konventioneller Tabellen unterscheiden. In einer konventionellen Tabelle ist die physische Adresse, oder ROWID stabil und ändert sich nicht, solange die ROW existiert Index-organisierte Tabellen sind nicht an einen physischen Ort gebunden. Sie speichern ihre Daten sortiert nach dem Primärschlüssel in Form eines B*-Indexbaumes. Im Gegensatz zu normalen B*- Indexbäumen enthalten die B*-Bäume von Index-organisieren Tabellen jedoch auch Spalten, die nicht zu dem Tabellenschlüssel gehören. Ausserdem ist es bei Index-organisierten Tabellen möglich, bestimmte Spalten, in einem separaten Segment zu speichern. Mit Hilfe dieser Überlaufbereiche können die Datensätze in dem Blättern des Baumes kurz gehalten und dadurch der Baum kompakter aufgebaut werden. Darüber hinaus kann man zusätzliche Sekundärindizes für Index-organisierten Tabellen definieren. Damit werden Zugriffe, die nicht über die Primärschlüsselspalten erfolgen, optimiert. Diese Sekundärindizes enthalten logische Satzadressen für den Zugriff auf den Index- Baum. In einer Index-organisierten Tabelle können sich die Row hin und her bewegen, um die sortierte Reihenfolge zu erhalten. An einen anderen Platz, oder sogar in einen anderen Block. Da Einträge in Index-Bäumen durch INSERT- und UPDATE-Operationen und damit verbundenen Splitoperationen auf den Index-Blättern möglicherweise verschoben werden, können Zugriffe über logische Satzadressen fehlschlagen. In diesen Fällen wird eine zusätzliche Scan-Operation über den Primärschlüssel notwendig, um den betreffenden Datensatz zu lesen. Wie normale Indizes, so lassen sich auch Index-organisierte Tabellen zusätzlich komprimieren. Bei der Komprimierung werden die Spalten des Primärschlüssels in Präfix- und Sufixbereiche aufgeteilt und die wiederholt auftretenden Werte der Präfixe innerhalb eines Blockes unterdrückt. Index-organisierte Tabellen sind sehr gut geeignet für die Umsetzung aller Entitäten, die einen großen Teil ihres Imformationsgehaltes aus den Schlüsselspalten beziehen. Dabei gibt es eine große Ersparnis an Speicherplatz, da keine seperaten Segemente für Tabellen und Indizes angelegt werden müssen. Beispiel für die Implementierung einer Tabelle, bei der die Spalten Rabatt und kommentar und rabattliste, sofern der Schwellwert von 10% pro Block und Datensatz überschritten wird, in einen Überlaufbereich im Tablespace ts_over ausgelagert werden. CREATE TABLE artikelpreis (artnr VARCHAR(20), von_datum DATE, bis_datum DATE, preis_euro number(6,2), kommentar VARCHAR2(2000), rabattliste mumber(4), CONSTRAINT pk_artikelpreis PRIMARY KEY(artnr, von_datum, bis_datum) ) ORGANIZATION INDEX TABLESPACE ts_data PCTTHRESHOLD 10 INCLUDE preis_euro OVERFLOW TABLESPACE ts_over;

6 Im folgenden Beispiel wird die Tabelle aus dem letzen Beispiel mit einer Komprimierung auf der ersten Schlüsselspalte angelegt. Dementsprechend werden redundante Artikelnummern innerhalb eines Index-Blattes unterdrückt. CREATE TABLE artikelpreis (artnr VARCHAR(20), von_datum DATE, bis_datum DATE, preis_euro number(6,2), kommentar VARCHAR2(2000), rabattliste mumber(4), CONSTRAINT pk_artikelpreis PRIMARY KEY(artnr, von_datum, bis_datum) ) ORGANIZATION INDEX COMPRESS 1 TABLESPACE ts_data PCTTHRESHOLD 10 INCLUDE preis_euro OVERFLOW TABLESPACE ts_over; * Die beiden Beispiele sind dem Buch Oracle9i für den DBA von Uwe Herrmann entnommen. 3. Partitionierung 3.1 Range-Partitionierung Bei der Range-Partitionierung werden die Daten durch einen bestimmten Wertebereich in einer, oder mehreren Spalten partitioniert. Dabei werden die entsprechenden Grenzwerte über Value- Klauseln vorgegeben. Dadurch ist immer ersichtlich, in welcher Partitionierung welche Daten gespeichert sind. Des Weiteren kann diese Partitionierung benutzt werden, wenn zum Beispiel nach Monaten, oder Jahren partitioniert wird und ein bestimmter Monat gelöscht werden soll, kann einfach die Partition gelöscht werden. Das selbe gilt für andere Zugriffe, die speziell eine bestimmte Partition betreffen. SQL-Beispiel für das Anlegen einer Range-Partitionierung: CREATE TABLE person (pid NUMBER NOT NULL, birth_date DATE NOT NULL, name VARCHAR2(100)) PARTITION BY RANGE (birth_date) (PARTITION person_q1 VALUES LESS THAN (TO_DATE('01/01/1986', 'DD/MM/YYYY')) TABLESPACE people, PARTITION person_q2 VALUES LESS THAN (TO_DATE('01/01/1987', 'DD/MM/YYYY')) TABLESPACE people, PARTITION person_q3 VALUES LESS THAN (TO_DATE('01/01/1988', 'DD/MM/YYYY')) TABLESPACE people, PARTITION person_q4 VALUES LESS THAN (TO_DATE('01/01/1989', 'DD/MM/YYYY')) TABLESPACE people); Hierbei wird die Tabelle person nach dem Geburtsdatum partitioniert werden. In vier Partitionen.

7 3.2 Hash-Partitionierung Bei einer Hash-Partitionierung übernimmt eine interne Hash-Funktion die Zuordnung einer Tabellenzeile zu einer Partition anhand einer, oder mehrerer Spalten. Auf Grund der internen Hash- Funktion kann nicht vorher gesagt werden, in welche Partition eine Zeile gespeichert wird. Dadurch ist es bei einer Hash-Partitionierung nur möglich eine gewünschte Anzahl an Partitionierungen anzugeben. Bei einer Partitionierung über einem natürlichen Wert, wie Monate, oder Jahre bringt die Hash- Partitionierung keine Vorteile. Die Vorteile der Hash-Partitionierung liegen in der Anwendung auf Daten ohne natürliches Partitionierungskriterium, oder bei denen die Daten ungleich verteilt sind. SQL-Beispiel für das Anlegen einer Hash-Partitionierung: CREATE TABLE person (pid NUMBER NOT NULL, bierth_date DATE NOT NULL, name VARCHAR2(100)) PARTITION BY HASH (pid) PARTITIONS 4 STORE IN (people, people, people, people); Hierbei wird über die STORE IN-Klausel der Tablespace definiert werden in dem die Partitionen gespeichert werden. Alternativ dazu kann der Tablespace direkt angegeben werden: CREATE TABLE person (pid NUMBER NOT NULL, birth_date DATE NOT NULL, name VARCHAR2(100)) PARTITION BY HASH (pid) (PARTITION person_q1 TABLESPACE people, PARTITION person_q2 TABLESPACE people, PARTITION person_q3 TABLESPACE people, PARTITION person_q4 TABLESPACE people); 3.3 Composite-Partitionierung Bei der Composite-Partitionierung handelt es sich um eine Kombination aus Range- und Hash- Partitionierung. Dabei wird zuerst eine Range-Partitionierung durchgeführt und dann die einzelnen Partitionierungen mit einer Hash-Partitionierung partitioniert. SQL-Beispiel für fas Anlegen einer Composite-Partinionierung: CREATE TABLE person (pid NUMBER NOT NULL, birth_date DATE NOT NULL, name VARCHAR2(100)) PARTITION BY RANGE (birth_date) SUBPARTITION BY HASH (pid) SUBPARTITIONS 8 (PARTITION person_q1 VALUES LESS THAN (TO_DATE('01/01/1986', 'DD/MM/YYYY')), PARTITION person_q2 VALUES LESS THAN (TO_DATE('01/01/1987', 'DD/MM/YYYY')), PARTITION person_q3 VALUES LESS THAN (TO_DATE('01/01/1988', 'DD/MM/YYYY')), PARTITION person_q4 VALUES LESS THAN (TO_DATE('01/01/1989', 'DD/MM/YYYY'));

8 3.4 List-Partitionierung Bei einer List-Partitionierung werden keine festen Wertebereiche fest gelegt. Sondern möglicherweise nicht fortlaufende, explizite Werte als Partitionierungskriterium festgelegt. Dies findet vor allem dort Anwendung, wo keine natürlichen Wertebereiche vorliegen, trotzdem aber eine Kontrolle darüber erwünscht ist, was in welcher Partitionierung gespeichert wurde, um zum Beispiel das Löschen zu erleichtern. Die Partitionierung geschieht hier, wie bei der Range-Partitionierung über eine Value-Klausel. Dabei ist es bei der List-Partitionierung jedoch nur möglich eine Spalte als Kriterium anzugeben. SQL-Beispiel für das Anlegen einer List-Partitionierung: CREATE TABLE state_sales( acct_no NUMBER(5), acct_name VARCHAR2(30), amount_of_sale NUMBER(6), state_cd VARCHAR2(2), sale_details VARCHAR2(1000), PRIMARY KEY (acct_no, acct_name, state_cd) ) ORGANIZATION INDEX INCLUDING state_cd OVERFLOW TABLESPACE users PARTITION BY LIST (state_cd) ( PARTITION reg_east VALUES ('MA','NY','CT','NH'), PARTITION reg_west VALUES ('CA', 'AZ', 'NM','OR'), PARTITION reg_south VALUES ('TX','KY','TN','GA'), PARTITION reg_central VALUES ('OH','ND','SD','IA'), PARTITION reg_null VALUES (NULL), PARTITION reg_unknown VALUES (DEFAULT) Dieses Beispiel ist der Oracle-Tutorialseite entnommen. 3.5 Partitionierte Indizes Ebenso wie Tabellen können auch Indizes partitioniert. Partitionierte Indizes können sowohl für partitionierte als auch für nicht partitionierte Tabellen angelegt werden. Ebenso kann man partitionierte Tabellen mit nicht partitionierten Indizes versehen werden. Indextypen: Lokale Indizes: Partitionierte Indizes sind dann lokal wenn ihnen die selben Partitionierungskriterien wie die Tabellen zu denen sie gehören zu Grunde liegen. Dadurch können Operationen auf den partitionierten Tabellen eins zu eins auf die Indizes übertragen werden. Globale Indizes: Bei globalen partitionierten Indizes haben ein von der partitionierten Tabelle unabhängiges Partitionierungskriterium. Dies Kriterien werden stets auf Basis der Range- Partitionierung definiert. Prefixed: Indizes sind prefixed, wenn die als Partitionierungskriterium verwendeten Spalten selber auch indiziert sind.

9 Nonprefixed: Indizes sind nonprefixed, wenn wenn die für die Partitionierung verantwortlichen Spalten selbst nicht indiziert werden. Es sind drei Kombinationen dieser Eigenschaftspaare möglich: Lokal Prefixed-Index: CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL; CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL (PARTITION invoices_q1 TABLESPACE users, PARTITION invoices_q2 TABLESPACE users, PARTITION invoices_q3 TABLESPACE users, PARTITION invoices_q4 TABLESPACE users); Lokal Nonprefixed-Index: CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL; CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL (PARTITION invoices_q1 TABLESPACE users, PARTITION invoices_q2 TABLESPACE users, PARTITION invoices_q3 TABLESPACE users, PARTITION invoices_q4 TABLESPACE users); Global Prefixed-Index: CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL; CREATE INDEX invoices_idx ON invoices (invoice_date) LOCAL (PARTITION invoices_q1 TABLESPACE users, PARTITION invoices_q2 TABLESPACE users, PARTITION invoices_q3 TABLESPACE users, PARTITION invoices_q4 TABLESPACE users); 3.6 Existierende Tabellen partitionieren Eine nachträgliche Partitionierung einer Tabelle ist nur auf einem Umweg möglich. Dabei wird die Partitionierung einer anderen Tabelle mit der zu partitionierenden Tabelle vertauscht. Dabei können ALTER TABLE und EXCAHNGE PARTITION verwendet werden, um schon bestehende Tabellen zu partitionieren. Als erstes wird eine Tabelle erstellt: CREATE TABLE my_table ( id NUMBER, description VARCHAR2(50) ); INSERT INTO my_table (id, description) VALUES (1, 'One'); INSERT INTO my_table (id, description) VALUES (2, 'Two'); INSERT INTO my_table (id, description) VALUES (3, 'Three'); INSERT INTO my_table (id, description) VALUES (4, 'Four'); COMMIT;

10 Als nächstes wird eine neue, partitionierte Tabelle mit einer Partition erstellt, die als Zieltabelle dienen wird. CREATE TABLE my_table_2 ( id NUMBER, description VARCHAR2(50) ) PARTITION BY RANGE (id) (PARTITION my_table_part VALUES LESS THAN (MAXVALUE)); Als nächstes wird das original Tabllensegment mit dem partitionierten vertausch. ALTER TABLE my_table_2 EXCHANGE PARTITION my_table_part WITH TABLE my_table WITHOUT VALIDATION; Jetzt muss bloß noch die alte Tabelle gelöscht und die neue in den Namen der alten umbenannt werden, und die Partitionierung ist vollständig. *Das Beispiel ist der Oracle Tutorialseite: entnommen. 4. Die STORAGE-Klausel Die Storage-Klausel spezifiziert wie ein Objekt den Platz benutzt, in dem es angelegt ist. Einige Objekte, einschließlich Pakete, Prozeduren, Typen, Sichten,Bibliotheken, Ordner und Index-Typen benutzen die Storage-Klausel nicht. Eine create tablespace-statement kann eine default -Storage-Klausel haben, die die Storage- Vorgabe für im Tablespace angelegte Objekte festlegt. SQL-Beispiel für der Verwendung der Storage Klausel: storage ( initial next minextents 1 maxextents pctincrease 0 freelists 1 freelist groups 1 optimal 7k buffer_pool default )

11 initial Spezifiziert die Größe (in Bytes) des ersten Extents. next Spezifiziert die Größe (in Bytes) des zweiten Extents. pctincrease Spezifiziert die Größe des n-ten Extents. Die größe des n-ten Extents = pctincrease * der Größe des (n-1)-ten Extents. Pctincrease sollte auf 0 gesetzt sein, um die Fragmentierung des Tablespace zu reduzieren. minextents Spezifiziert die anfängliche Anzahl der Extents. Dadruch lässt sich bereits einen große Menge Speicher allokieren wenn man ein Objekt erstellt, selbst, wenn der Speicher nicht fortlaufend ist. Der Default- und Minimumwert ist 1, womit nur das anfängliche Extent allokiert wird. Für Rollback-Segmente ist das Minimum 2. Die Maximal-Größe hängt vom verwendeten Betriebssystem ab. maxextents Spezifiziert die maximale Anzahl von Extents, die ein Objekt haben kann. Der Minimum-Wert für diese Spezifikation ist 1, außer für Rollback-Segmente, da liegt der Minimum-Wert, genau wie bei maxextents bei 2. Der Default-Wert hängt von der Größe der Datenblöcke ab. Des Weiteren kann hier auch der Wert unlimited angegeben werde, wenn gewünscht ist, dass bei Bedarf automatisch neue Extents allokiert werden. Dies sollte nicht für Rollback-Segmente verwendet werden, das dies ermöglicht, dass lang läufige DML-Transaktionen mit dem Erstellen neuer Extents fort fahren, bis die Platte voll ist. freelists Spezifiziert für andere Objekte als Tablespaces und Rollback-Segmente,die Anzahl der freien Listen für jede der Gruppen freier Listen eine Tablle, eine Partition, ein Cluster, oder einen Index. Default- und Minimum-Parameter sind 1, so, dass jede Gruppe freier Listen eine frei Tabelle beinhaltet. Der Maximalwert hängt von der Größe der Datenblöcke ab. Wenn ein zu großer Wert für freelists angegeben wird, gibt Oracle eine Fehlermeldung mit dem Maximalwert zurück. freelist groups Spezifiziert die Anzahl der Gruppen freier Listen für das Datenbankobjekt, dass man erstellt. Der Default- und Minimumwert dieses Parameters liegt bei 1. Jede Gruppe benutzt einen Datenbankblock. Es gilt: Wenn für initial ein zu geringer Wert angeben wird, wird Oracle automatisch den Wert auf den nötigen Betrag erhöhen Wenn man ein Objekt in einem uniformen Lokal gemanageten Tablespace erstellt, und die Extent-Größe ist nicht groß genug, um die Anzahl an Gruppen zu aufzunehmen, wird create- Operation fehlschlagen..

12 buffer_pool Der Wert von buffer_pool folgende Werte annehmen: keep recycle default KEEP spezifiziert, dass Blöcke aus dem Segment in den KEEP Bufferpool getan werden. RECYCLE spezifiziert, dass Blöck aus dem Segment in den RECYCLE-Pool getan werden. DEFAULT zeigt den default-bufferpool an. Dieser Parameter kann nur für create table, create index, create cluster, alter table, alter index und alter cluster spezifiziert werden. optimal Das Optimum kann nur für rollback-segemente spezifiziert werden. Es spezifiziert die optimale Größe (in Bytes) für ein Rollback-Segment. Oracle versucht die Größe des Rollback-Segments durch das automatische Freigeben von Extents, wenn ihr Inhalt nicht mehr für aktive Transaktionen benötigt wird, beizubehalten. Des Weiteren werden so viele Extents wie möglich frei gegeben, ohne die komplette Größe des Segments unter den bei OPTIMAL spezifizierten Wert fällt. Der Wert von OPTIMAL kann nicht niedriger als der zuvor von den Anderen Parametern allokierte Speicher. Der Maximalwert hängt vom Betriebssystem ab. Oracle rundet Werte auf das nächste Vielfache der Blockgröße auf. Es kann auch der Wert NULL angegeben werden. Das heißt es gibt keine optimale Größe. Demnach wird Oracle nie Extents frei geben. Dieses ist das Default-Verhalten. 5. Unterstützte Indexstrukturen: 5.1 B*Indizes: B*Indizes sind die klassischen Indizes in Oracle-Datenbanken und basieren auf einem B*-Baum. Sie zeigen ein gutes Sperrverhalten, da immer nur der momentan von einer Transaktion bearbeitete Eintrag gesperrt wird. Dadurch werden keine unnötigen Wartezeiten bei gleichzeitig operierenden Transaktionen ausgelöst. Dadurch ist allerdings höher als, der Bitmap-Indizes mit ihrem ungünstigen Sperrverhalten. Dadurch entstehen mehr Kosten, da beim Zugriff mehr Indexblöcke gelesen werden müssen. Das führt außerdem dazu, dass Mischoperationen mit B*-Indizes wesentlich aufwendiger sind als bei Bitmap-Indizes. Um unnötige Mischoperationen zu vermeiden kann deshalb einen zusammengesetzter Index angelegt werden.

13 5.2 Bitmap-Indizes: Bei einem Bitmap-Index wird eine Bitmaske gespeichert, die bestimmte Werte repräsentiert, die nur ein Zustände annehmen können. Dieses findet zum Beispiel bei der Charakterisierung von Personen Anwendung, wo bestimmte Zustände wie ledig, oder verheiratet, männlich, oder weiblich gespeichert werden. In der Bitmapstruktur wird ein zweidimensionales Feld erstellt, mit einer Spalte für jede Zeile der zu indizierenden Tabelle. Jede Spalte repräsentiert einen bestimmten Wert im Bitmap-Index. Dieses zweidimensionale Feld repräsentiert jeden Wert im Index, vervielfacht um die Anzahl der Zeilen in der Tabelle. Bei der Zeilenabfrage dekomprimiert die Bitmap in den RAM-Datenpuffer, so das es sie schnell auf Treffer gescant werden kann. Diese Treffer werden Oracle in Form einer Row-ID-Liste zurück geliefert. Der echte Vorteil von Bitmap-Indizierung tritt zu Tage, wenn eine Tabelle mehrere Bitmap-indexe beinhaltet. Das erstellen von multiplen Bitmap-Indizes liefert eine gute Methode, um schnell komplizierte SQL-Anfragen zu beantworten. Da sich maximal nur zwei physische Bitmaps einen Block teilen, können abhängig von der Blockgröße und Komprimierung Tausende von Datensätzen in einer Bitmap referenziert werden. Dieser Vorteil kann auch als Nachteil wirken. Werden Spalten geändert, die durch einen Bitmapindex indiziert wurden, wird das ganze physische Bitmap gesperrt. Das heißt von der Sperrung können wiederum tausende von Datensätzen betroffen sein. Bitmaps können optimal eingesetzt werden, wenn die betreffende Spalte äußerstem selten geändert wird, die Kardinalität der Spalten niedrig ist, oder die Tabellen viele Datensätzen enthalten. Wegen ihres Sperrverhaltens dürfen Bitmap-Indizes keines Falls für Spalten angelegt werden, die gleichzeitig von mehreren Transaktionen verändert werden. Beispiel für einen Bitmap-Index: pid F K Pid: Personen-ID F: Familienstand (0=Ledig, 1=Verheiratet) K: Kinder (0=keine Kinder, 1=Kinder) pid F K Die grün markierte ROW wird durch eine Transaktionen verändert. Alle anderen daten der Bitmaske werden auch gesperrt. Die Transaktion in der gelb markierten ROW kann nicht zugreifen.

14 5.3 Bitmap-Join-Indizes Bei Bitmap-Join-Indizes werden Tabellen anhand von Spaltenwerten anderer Tabellen die über Fremdschlüssel mit der Tabelle verbunden sind indiziert. Dadurch können Join-Operationen im Index vorbereitet werden. Dadurch sind für einen Join keine Zugriffe auf Fremdschlüssel-Tabellen mehr nötig. Die Where-Klauseln können über den Bitmap-Join-Index aufgelöst werden. Dadurch kann die Performance der Datenbank erhöht werden. Ein Beispiel für die Verwendung von Bitmap-Join-Indizes: Eine Tabelle mit Wettkampfteilnehmern setzt sich sich aus bestimmten Werten zusammen. Darunter auch Fremdschlüssel auf einen Trainer und ein Herkunftsland. Trainer Tid Name Alter Herkunft Land Cid Name Einwohnerzahl Kontinent Spieler... Tid Cid Name Erstellen eines Bitmap-Join-Indexes: create bitmap index trainer_land_spieler on spieler(trainer.herkunft,land.kontinent) from spieler s, trainer t, land l where s.tid=t.tid and s.cid=l.cid; Um die Funktionsweise zu verdeutlichen sollen nun alle Trainer ausgewählt werden, deren Spieler und sie selbst aus Asien stammen. Verwendung Select name from trainer natural join spieler natural join land where herkunft = 'Asien' and kontinent = 'Asien'

15 Normalereise würde diese Anfrage mit einem nested-loop- Join oder hash-join für alle drei Tabellen bedient werden. Mit einem Bitmap-Join-Index sind die die Tabellen schon vorgejoint und die Query kann schnell eine Row-ID passender Rows in allen drei Tabellen erhalten. Oracle-Benchmarks zeigen, dass ein Bitmap-Join-Index eine Anfrage bis zu acht mal schneller bearbeiten können, als herkömmliche Indizierungsmethoden. 5.4 Reverse Key-Indizes Reverse Key-Indizes sind eine Variante der B*Indizes. Dabei werden die Schlüsselwerte in den Index-Blättern in umgekehrter Zeichenreihenfolge abgespeichert. Aus 'Jim' wird 'mij', aus 'Bob' wird 'bob'. Der Nutzen besteht vor allen darin, dass Schlüssel, die normaler Weise auf einem Blatt zusammen stünden, auf verschiedene Blätter verteilt. Das gleiche gilt für Operationen die diese Schlüsselwerte verändern. Dadurch können I/O-Operationen besser auf verschiedene Index-Blätter verteilt werden 5.5 Funktionale Indizes Funktionale Indizes werden im Kontext mit Funktionen oder Ausdrücken angelegt, die sich auf Spalten der betreffenden Tabelle beziehen. Dabei werden die von den Funktionen zurückgegebenen Werte indiziert. Dabei können sowohl vordefinierte SQL-Funktionen verwendentet werden, als auch jegliche vom Benutzer definierte Funktion. Da der Rückgabewert einer Funktion beliebig ist können Funktionale Indizes als B*Baum- oder Bitmap-Index angelegt werden.

16 Quellen: Oracle9i für den DBA Uwe Herrmann Oracle9i Index-Organized Tables Technical Whitepaper

Physische Datenbankdefinition in. Arthur Bauer

Physische Datenbankdefinition in. Arthur Bauer Physische Datenbankdefinition in Arthur Bauer Inhalt Cluster Index-Cluster Hash-Cluster Vor- und Nachteile Index-Organisierte Tabelle (IOT) Partitionierung STORAGE-Klausel in DDL Indexstrukturen Oracle

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 13 Cluster Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 14 Seite 1 von 14 1. Anordnung von Zeilen in einer Tabelle 2. Einführung 3. Cluster 4. Typen

Mehr

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

Oracle Database 12c Was Sie immer schon über Indexe wissen wollten Oracle Database 12c Was Sie immer schon über Indexe wissen wollten Marco Mischke, 08.09.2015 DOAG Regionaltreffen B* Indexe - Aufbau 0-Level Index A-F G-Z 1-Level Index A-F G-Z 2-Level Index A-F G-M N-Z

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 14 Index-Organized Tables Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 13 Seite 1 von 13 1. Anordnung von Zeilen in einer Tabelle 2. Einführung 3.

Mehr

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

DOAG Regionaltreffen TABLE REORG. Klaus Reimers. Leiter Beratung & Entwicklung, ORDIX AG, Paderborn DOAG Regionaltreffen TABLE REORG Klaus Reimers Leiter Beratung & Entwicklung, ORDIX AG, Paderborn kr@ordix.de Agenda Reorganisationsgründe - Extents - Blockfüllgrad - Migrated Rows Workarounds - Storage

Mehr

Performance in der Oracle Datenbank von Anfang an

Performance in der Oracle Datenbank von Anfang an Performance in der Oracle Datenbank von Anfang an Marco Mischke, 26.04.2018 DOAG Regional Agenda Tabellen Indizes Ausführungspläne SQL vs PL/SQL Tabellen Zu 99% werden Standard Strukturen zur Speicherung

Mehr

Datenbankdesign. 3.1 Namenskonventionen. Oracle9i für den DBA ISBN X

Datenbankdesign. 3.1 Namenskonventionen. Oracle9i für den DBA ISBN X Datenbankdesign Oracle9i für den DBA ISBN 3-8273-1559-X Beim Aufbau jeder Datenbank und jedes Datenbankschemas sind eine Fülle von Designentscheidungen zu treffen. Diese Entscheidungen stehen auf der einen

Mehr

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

Philipp Nebel, 05 IN. Speicherung von Datenbank-Objekten in Oracle Philipp Nebel, 05 IN Speicherung von Datenbank-Objekten in Oracle 1. Allgemeines Diese Ausarbeitung soll sich mit der Speicherung von Datenbankobjekten des RDBMS Oracle beschäftigen. Als Datenbankobjekte

Mehr

Datenschutz: Zugriffsrechte in SQL

Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

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

Datenbank Objekte (Tabellen, Segemente, Extents, Blöcke) Datenbank Objekte (, Segemente,, Blöcke) 5. Juni 2007 Datenbank Objekte (, Segemente,, Blöcke) Datenbank Objekte (, Segemente,, Blöcke) Aufbau eines Datenblocks Zeilenverkettung und -verschiebung Freispeicherverwaltung

Mehr

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P Index- und Zugriffsstrukturen für Data Warehousing Holger Brämer, 05IND-P Index- und Zugriffstrukturen für Data Warehousing Materialisierte Sichten Bitmap-Indexe Verbundindexe Materialisierte Sichten gehören

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 3 Der Optimizer Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 16 Seite 1 von 16 1. auf Tabellen 2. 3. Optimizer 4. Optimizer RBO 5. Optimizer CBO 6.

Mehr

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

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 8 Indizes. Universität Hannover. Installation. Index-Typen. Anhang. Kurs Oracle 9i Einführung Performance Tuning Teil 8 Indizes Grid Einführung Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 15 Seite 1 von 15 Agenda 1. Einführung 2. 3. B*Tree-Index 4. Bitmap-Index Grid

Mehr

Partitioning Technik und Anwendungsbeispiele

Partitioning Technik und Anwendungsbeispiele Partitioning Technik und Anwendungsbeispiele Klaus Reimers ORDIX AG Köln Schlüsselworte: Range Partitioning, Hash Partitioning, List partitioning, System Partitioning, Interval Partitioning, Virtual Column

Mehr

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

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

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

Mehr

Partitioning mit Oracle Text 9i

Partitioning mit Oracle Text 9i Partitioning mit Oracle Text 9i Autor: Andreas Habl, msg systems ag DOAGNews Q1_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks,

Mehr

Automatisierung von Tabellen- und Index-Reorganisationen

Automatisierung von Tabellen- und Index-Reorganisationen 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

Mehr

Cluster-Bildung. VL Datenbanken II 4 107

Cluster-Bildung. VL Datenbanken II 4 107 Cluster-Bildung gemeinsame Speicherung von Datensätzen auf Seiten wichtige Spezialfälle: Ballung nach Schlüsselattributen. Bereichsanfragen und Gruppierungen unterstützen: Datensätze in der Sortierreihenfolge

Mehr

Aufbau einer Oracle Datenbank

Aufbau einer Oracle Datenbank Aufbau einer Oracle Datenbank Eike Florian Petersen 29. Juni 2015 Inhaltsverzeichnis 1. Tablespaces 1.1 Konzept, Arten 1.2 Operationen 2. Arten von Dateien 2.1 Datendateien 2.2 Redolog-Dateien 2.3 Control-Dateien

Mehr

Partitionierung Indizes und Statistiken

Partitionierung Indizes und Statistiken Partitionierung Indizes und Statistiken DOAG Konferenz + Ausstellung 18.11.2014 Nürnberg Klaus Reimers info@ordix.de www.ordix.de Agenda Einführung Arten der Partitionierung Fragestellungen Indizes Indextypen

Mehr

Indexstrategien im Data Warehouse

Indexstrategien im Data Warehouse Indexstrategien im Data Warehouse Reinhard Mense areto consulting gmbh Köln Schlüsselworte Business Intelligence, Data Warehouse, Bitmap Index, B*Tree Index, Partial Index, Star Schema, Snowflake Schema,

Mehr

Indizes B+Bäume in Oracle. Jörg Winkler

Indizes B+Bäume in Oracle. Jörg Winkler Indizes B+Bäume in Oracle Vortragende: Conrad Kobsch Jörg Winkler Inhalt Allgemeines Aufbau / Eigenschaften von B+Bäumen Vorteile / Nachteile B+Baum-Indexe Kriterien für Indizes Anlegen eines Indizes Anfrageoptimierung

Mehr

Oracle Indexing Primer

Oracle Indexing Primer Oracle Indexing Primer Data Warehousing and Data Mining Patrick Schäfer Berlin, 18. Dezember 2017 patrick.schaefer@hu-berlin.de Vorlesung: Übung: https://hu.berlin/vl_dwhdm17 https://hu.berlin/ue_dwhdm17

Mehr

DOAG Index Tuning

DOAG Index Tuning DOAG Index Tuning 2010-1 DOAG Index Tuning 2010-2 DOAG Index Tuning 2010-3 DOAG Index Tuning 2010-4 DOAG Index Tuning 2010-5 Ausführliche Syntax: CREATE [UNIQUE] INDEX [.] ON TABLE [.]

Mehr

Partitionierungsstrategien für Data Vault

Partitionierungsstrategien für Data Vault ierungsstrategien für Data Vault Dani Schnider Trivadis AG Zürich/Glattbrugg, Schweiz Einleitung Während das Laden von Tabellen in Data Vault in der Regel nicht zeitkritisch ist, stellt uns das effiziente

Mehr

Relationales Datenbanksystem Oracle

Relationales Datenbanksystem Oracle Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes

Mehr

Kapitel 7: Referentielle Integrität

Kapitel 7: Referentielle Integrität Kapitel 7: Referentielle Integrität Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen

Mehr

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

Online Table Shrink. Freigabe von ungenutztem Speicherplatz. Autor: Ralf Durben, ORACLE Deutschland GmbH Online Table Shrink Freigabe von ungenutztem Speicherplatz Autor: Ralf Durben, ORACLE Deutschland GmbH DOAGNews Q2_2004 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Datenbank und Tabelle mit SQL erstellen

Datenbank und Tabelle mit SQL erstellen Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`

Mehr

Oracle Index Tuning &Admin

Oracle Index Tuning &Admin Oracle Index Tuning &Admin Marco Patzwahl MuniQSoft GmbH München-Unterhaching Schlüsselworte: SQL, PL/SQL, DBA Zusammenfassung Indizes sind ein erprobtes Mittel, um SQL-Abfragen zu beschleunigen. Aber

Mehr

AUFBAU EINER ORACLE DATENBANK MARTIN CLAUS & UWE GÄRTNER

AUFBAU EINER ORACLE DATENBANK MARTIN CLAUS & UWE GÄRTNER AUFBAU EINER ORACLE DATENBANK MARTIN CLAUS & UWE GÄRTNER GLIEDERUNG 1. Tablespaces 2. Arten von Dateien 3. Oracle Datenbank-Objekte 4. Oracle Data Dictionary 5. Prozessarchitektur einer Oracle-Instanz

Mehr

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

Row Chaining & Row Migration Alte Bekannte - immer noch aktuell! DOAG 2014 Datenbank Dierk Lenz Row Chaining & Row Migration Alte Bekannte - immer noch aktuell! DOAG 2014 Datenbank Dierk Lenz Herrmann & Lenz Services GmbH Herrmann & Lenz Solutions GmbH Erfolgreich seit 1996 am Markt Firmensitz: Burscheid

Mehr

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. 1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?

Mehr

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff. Indizes Gesucht wird: 44791 Index Normale Tabelle 1. Zugriff 1 44789 2. Zugriff 2 44801 3. Zugriff 3 44797 4. Zugriff 4 44388 5. Zugriff 5 44746 6. Zugriff 6 44787 7. Zugriff 7 44793 8. Zugriff 8 44799

Mehr

Datenzugriffskomponente mit JPA 2.1

Datenzugriffskomponente mit JPA 2.1 Datenzugriffskomponente mit JPA 2.1 (Grundlagen der Java Persistence Architecture) Vladislav Faerman Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der

Mehr

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1

Dateiorganisation und Zugriffsstrukturen. Prof. Dr. T. Kudraß 1 Dateiorganisation und Zugriffsstrukturen Prof. Dr. T. Kudraß 1 Mögliche Dateiorganisationen Viele Alternativen existieren, jede geeignet für bestimmte Situation (oder auch nicht) Heap-Dateien: Geeignet

Mehr

Methoden zum Befüllen von SCD2

Methoden zum Befüllen von SCD2 www.immobilienscout24.de Methoden zum Befüllen von SCD2 Berlin 08.12.2010 Dierk Bachmann Inhaltsverzeichnis (1) Gewünschte Eigenschaften von SCD2s (2) Befüllen per Merge (3) Befüllen mit Exchange Partition

Mehr

Oracle 10g Einführung

Oracle 10g Einführung Kurs Oracle 10g Einführung Teil 8 Indizes und Suchbäume Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 15 Seite 1 von 15 Agenda 1 Einleitung 2 Binäre Suchbäume

Mehr

SQL. Datendefinition

SQL. Datendefinition SQL Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer oder logischer Natur sein. Das folgende Kapitel beschäftigt sich mit der

Mehr

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Schnellübersichten. SQL Grundlagen und Datenbankdesign Schnellübersichten SQL Grundlagen und Datenbankdesign 5 Datenbanken 2 6 Tabellen erstellen und verwalten 3 7 Daten einfügen, aktualisieren, löschen 4 8 Einfache Datenabfragen 5 9 Schlüsselfelder und Indizes

Mehr

Eine neue Datenbank erstellen

Eine neue Datenbank erstellen Eine neue Datenbank erstellen Eine neue Datenbank erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Das

Mehr

Die InnoDB Storage Engine. Handy aus?

Die InnoDB Storage Engine. Handy aus? Die InnoDB Storage Engine Kristian Köhntopp Handy aus? InnoDB: Vorteile, Nachteile Vorteile: Transaktionen MVCC Row Locks OLTP Concurrency Crash-Recovery Nachteile: Höherer Platzbedarf Höherer Speicherbedarf

Mehr

Warum wird mein Index nicht benutzt?

Warum wird mein Index nicht benutzt? Warum wird mein Index nicht benutzt? Index Nutzung-1 Tätigkeitsbereiche: Oracle Support Hotline: Mo-Fr 8.00 18.00 Uhr Erweiterung um eine Rufbereitschaft auch am Wochenende möglich Oracle IT-Consulting

Mehr

Datenbanken II. Datenbankobjekte. von Werner Hahn, 05IND-P - 1 -

Datenbanken II. Datenbankobjekte. von Werner Hahn, 05IND-P - 1 - Datenbanken II Datenbankobjekte von Werner Hahn, 05IND-P - 1 - Inhaltsverzeichnis 1 Tabellen... 3 1.1 Relationale Tabellen... 3 1.2 Temporäre Tabellen... 4 1.3 Indexorganisierte Tabellen... 4 1.4 Object

Mehr

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

Copyright 2013, Oracle and/or its affiliates. All rights reserved. 1 Effiziente Speicherung für SAP Jörn Bartels Architect Oracle Database Server Technologies 2 Oracle 12c Jörn Bartels Architect Oracle Database Server Technologies 3 1997 Effiziente Speicherung für SAP

Mehr

Erzeugung und Veränderung von Tabellen

Erzeugung und Veränderung von Tabellen Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen

Mehr

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

Index Rebuild. DOAG Konferenz , Nürnberg DOAG Konferenz , Nürnberg Martin Hoermann Martin Hoermann Index Rebuild DOAG Konferenz 17.01.2011, Nürnberg DOAG Konferenz 17.11.2011, Nürnberg Martin Hoermann info@ordix.de Martin Hoermann www.ordix.de info@ordix.de www.ordix.de Eine kurze Geschichte der Zeit

Mehr

Reference Partitioning in der Praxis

Reference Partitioning in der Praxis Reference Partitioning in der Praxis Dr. Frank Haney Consultant Jena Schlüsselworte: Oracle Database, Manageability, Partitionierung Partitionierung von Tabellen Die Partitionierung gehört zur physischen

Mehr

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

Kurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning. Kurs Oracle 9i Performance Tuning Teil 7 UNDO-Management Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 23 Seite 1 von 23 1. 2. Nutzung des Rollback Segments 3. 4. 5. Größe von UNDO- TBS berechnen 6.

Mehr

Aufbau Datenbanksysteme

Aufbau Datenbanksysteme Aufbau Datenbanksysteme Lehrveranstaltung Datenbanktechnologien Prof. Dr. Ingo Claßen Prof. Dr. Martin Kempa Hochschule für Technik und Wirtschaft Berlin Speichersystem c Ingo Claßen, Martin Kempa Softwarearchitektur

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

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

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte

Mehr

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh) Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1 Aufgabe 1: ( 30 Punkte) 1) Ein Entity-Set E1 wird in die Subklassen S1 und S2 spezialisiert. Was bedeutet die Aussage:

Mehr

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen

8. Tabellendefinition in SQL 8-1. Tabellendefinitionen 8. Tabellendefinition in SQL 8-1 Tabellendefinitionen 8. Tabellendefinition in SQL 8-2 Inhalt 1. Schlüssel 2. Fremdschlüssel 3. CREATE TABLE-Syntax 4. DROP TABLE 5. ALTER TABLE 8. Tabellendefinition in

Mehr

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

Copyright 2013, Oracle and/or its affiliates. All rights reserved. 1 1997 Effiziente Speicherung für SAP 8.0 Jörn Bartels Architect Oracle Database Server Technologies 2 Effiziente Speicherungsformen Ziele Index Komprimierung Index Organized Tables Ergebnisse 3 Ziele

Mehr

mit konventionellen Datenbanksystemen konventionellen Datenbanksystemen

mit konventionellen Datenbanksystemen konventionellen Datenbanksystemen Stream-Verwaltung mit konventionellen Datenbanksystemen Christian Rensch.06.005 Seminar Data Streams Thema Verwaltung von Datenströmen in konventionellen Datenbanksystemen optimiert auf Daten geringer

Mehr

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

Optimiertes Laden in die F-Fakten-Tabelle des SAP BW Optimiertes Laden in die F-Fakten-Tabelle des SAP BW Schlüsselworte SAP BW Index unusable. Einleitung Jörn Bartels Oracle München Mit Oracle Database 11g Release 2 kann das Laden der F-Fakten Tabelle in

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

4. Objektrelationales Typsystem Kollektionstypen. Nested Table Nested Table Bei einer Nested Table handelt es sich um eine Tabelle als Attributwert. Im Gegensatz zu Varray gibt es keine Beschränkung bei der Größe. Definition erfolgt auf einem Basistyp, als Basistypen

Mehr

DOAG Treffen September

DOAG Treffen September DOAG Treffen September Erfahrungen mit der Partitionierungsoption des RDBMS Oracle Martin Bach Überblick Strategie Weshalb Partitionierung? Partitionierung in OLTP/DWH Umgebungen Realisierung Indexe Performance

Mehr

Arbeit mit zusammengesetzten Datentypen

Arbeit mit zusammengesetzten Datentypen Arbeit mit zusammengesetzten Datentypen Zusammengesetzte Datentypen Typen: PL/SQL RECORDS PL/SQL TABELLEN Enthalten interne Komponenten Sind wiederverwendbar Copyright Oracle Corporation, 1998. All rights

Mehr

Aufbau einer Oracle Datenbank Tablespace, Arten von Dateien

Aufbau einer Oracle Datenbank Tablespace, Arten von Dateien Aufbau einer Oracle Datenbank Tablespace, Arten von Dateien Boris Meißner 05-INDT Fachbereich Informatik, Mathematik und Naturwissenschaften HTWK-Leipzig 05. Juni 2008 Boris Meißner (Fb IMN - HTWK-Leipzig)

Mehr

Wintersemester 2016/ Matrikelnummer: Hinweise. Unterschrift

Wintersemester 2016/ Matrikelnummer: Hinweise. Unterschrift Fachbereich für Computerwissenschaften Prof. Dr. Nikolaus Augsten Jakob-Haringer-Str. 2 5020 Salzburg, Austria Telefon: +43 662 8044 6347 E-Mail: nikolaus.augsten@sbg.ac.at Datenbanken II Prüfung Wintersemester

Mehr

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten 12.1.2004 Änderungsoperationen bei SQL (Daten) Einfügen neuer Tupel (schon bekannt) INSERT INTO Table (Spalte1, Spalte2)

Mehr

Oracle native json Support. Erste Schritte

Oracle native json Support. Erste Schritte Oracle native json Support Erste Schritte 1 Ausgangslage Als erster Schritt erstellen wir eine Tabelle, die wir für den weiteren Verlauf brauchen werden. Die Felder Id, Created und Username sind normale

Mehr

Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird:

Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird: ALTER TABLE BEFEHLE Im Folgenden möchten wir Ihnen einige Beispiele aufzeigen, wie ALTER TABLE gemäß SQL92 verwendet wird: Fügt die Spalte Adresse zur Tabelle Kunden hinzu: ALTER TABLE Kunden ADD COLUMN

Mehr

Übung 01 Tabellen erstellen

Übung 01 Tabellen erstellen UEB-01-1 Übung 01 Tabellen erstellen Die folgende Musterrechnung dokumentiert eine Miniwelt "Rechnung" in einer Firma. 1. Welche Objekte und Beziehungen lassen sich daraus ableiten? 2. Erstellen Sie ein

Mehr

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

Introduction to Data and Knowledge Engineering. 6. Übung SQL Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB

Mehr

Vorlesung Datenbanken II B Nachklausur

Vorlesung Datenbanken II B Nachklausur Prof. Dr. Stefan Brass 28. März 2007 Institut für Informatik MLU Halle-Wittenberg Vorlesung Datenbanken II B Nachklausur Name: Matrikelnummer: Studiengang: Aufgabe Punkte Max. Punkte Zeit 1 (Datenspeicherung)

Mehr

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index

Inhalt. 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index Inhalt 1. Indextypen B*Baum-Index Reversed Key Index Bitmap Index Funktionsbasierter Index 2. Indexverwendung Vergleich von B*Baum und Bitmap Steuerung der Indexverwendung Richtlinien für die Indizierung

Mehr

Willkommen. Datenbanken und Anbindung

Willkommen. Datenbanken und Anbindung Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein

Mehr

[W, T4, D, 15] [start_transaction, T3] [W, T3, C, 30] [W, T4, A, 20] [commit, T4] [W, T2, D, 25] System Crash

[W, T4, D, 15] [start_transaction, T3] [W, T3, C, 30] [W, T4, A, 20] [commit, T4] [W, T2, D, 25] System Crash Übungen Aufgabe 1 Geben ist die folgende Logdatei: [start_transaction, T1] [W, T1, D, 20] [commit, T1] [checkpoint] [start_transaction, T2] [W, T2, B, 12] [start_transaction, T4] [W, T4, D, 15] [start_transaction,

Mehr

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints Prakt. Datenbankprogrammierung Sommersemester 2005 I,11: Verwendung von Constraints Was sind Constraints? Constraints stellen Regeln auf Tabellenebene sicher. Constraints verhindern das Löschen aus einer

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

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

Andrea Held. Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken. Empfehlungen Andrea Held Motivation ILM: Definition und Strategien Lösungen für Oracle Datenbanken Partitionierung Komprimierung ILM Assistant Flashback Data Archive Empfehlungen 1 Datenwachstum Wachsende Kosten Schlechtere

Mehr

Partitionierung Indizes und Statistiken

Partitionierung Indizes und Statistiken Partitionierung Indizes und Statistiken Klaus Reimers ORDIX AG Paderborn Schlüsselworte Local index, global index, prefixed index, nonprefix index, hash partitioned index, unusable index, orphaned index,

Mehr

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008 MS SQL Server: Index Management Stephan Arenswald 10. Juli 2008 Agenda 1. Einführung 2. Grundlagen Tabellen 3. Grundlagen Indexe 4. Indextypen 5. Index-Erstellung 6. Indexe und Constraints 7. Und Weiter...?

Mehr

Datenbank-Tuning. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Datenbank-Tuning. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 7 Datenbank-Tuning Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

Indexe. Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen

Indexe. Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen Indexe im Praxis Indexe Ein Index = eine Struktur auf Platte, die einer Tabelle oder Sicht zugeordent ist, um die Tupeln in der Tabelle oder Sicht schneller abzurufen Gute Indexierung schnelle Applikation

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Datenbanken im WI-Unterricht mit

Datenbanken im WI-Unterricht mit Datenbanken im WI-Unterricht mit Inhaltsverzeichnis 1 ER-Modell - Entity Relationship Modell 1 1.1 Entitäten................................................. 2 1.2 Relationen................................................

Mehr

Erzeugen von Constraints

Erzeugen von Constraints Erzeugen von Constraints Was sind Constraints? Durch Constraints werden Regeln auf einem bestimmtem Tabellen-Level erzwungen. Die folgenden Constraint-Typen sind in Oracle integriert: NOT NULL UNIQUE Key

Mehr

DOAG Konferenz Was Sie bei modernen Datenbank-Systemen anders machen müssen!

DOAG Konferenz Was Sie bei modernen Datenbank-Systemen anders machen müssen! oracledeli.wordpress.com DOAG Konferenz 2015 Was Sie bei modernen Datenbank-Systemen anders machen müssen! Matthias Schulz Selbständiger Software- und Datenbankentwickler: Consulting Schulungen Workshops

Mehr

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

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse

Mehr

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

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Oracle Datenbank - Tuning

Oracle Datenbank - Tuning Oracle Datenbank - Tuning H.-G. Hopf Georg-Simon-Ohm Fachhochschule Nürnberg Datenbank Tuning / 1 Η. G.Hopf / 10.04.2003 Inhaltsverzeichnis Tuning Datenstruktur-Ebene SQL-Befehls-Ebene Anwendungsebene

Mehr

Partitionieren Sie Ihr Data Warehouse!

Partitionieren Sie Ihr Data Warehouse! Partitionieren Sie Ihr Data Warehouse! Beat Flühmann Trivadis AG Zürich (Schweiz) Schlüsselworte: BI, DWH, Partitionierung, phys. Modellierung Einleitung Die Technik der Partitionierung ist schon seit

Mehr

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

Index Rebuild. DOAG Konferenz , Nürnberg. Martin Hoermann Index Rebuild DOAG Konferenz 17.11.2011, Nürnberg Martin Hoermann info@ordix.de www.ordix.de asktom.oracle.com Quelle: asktom.oracle.com/pls/asktom/f?p=100:11:745954239666467::::p11_question_id:2913600659112

Mehr

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe MySQL 4, 5 Kapitel 16: Fremdschlüssel Gliederung 1 Gliederung 1 Fremdschlüssel sichern die Referenzielle Integrität voneinander abhängiger Tabellen. Um Fremdschlüssel definieren zu können, müssen Sie die

Mehr

Üben von DDL und DML. Ergebnis:

Üben von DDL und DML.   Ergebnis: SQL DDL Üben von DDL und DML https://www.jdoodle.com/execute-sql-online Ergebnis: Befehlsgruppen in SQL DDL Data Definition Language DML Data Manipulation Language CREATE: Tabellen anlegen DROP: Tabellen

Mehr

Übung PL/SQL Trigger Lösungen

Übung PL/SQL Trigger Lösungen Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde

Mehr

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten

Datenbanken. Seminararbeit. Einführung in das wissenschaftliche Arbeiten Seminararbeit vorgelegt von: Gutachter: Studienbereich: Christian Lechner Dr. Georg Moser Informatik Datum: 6. Juni 2013 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung in Datenbanken 1 1.1 Motivation....................................

Mehr

Nutzung der Oracle Database InMemory Option für SAP BW

Nutzung der Oracle Database InMemory Option für SAP BW Nutzung der Oracle Database InMemory Option für SAP BW Schlüsselworte Oracle, SAP-BW, InMemory, Star-Schema. Jörn Bartels Oracle München Einleitung In SAP BW wurde bisher ein erweitertes Snow Flake Schema

Mehr

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

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach) Multimedia im Netz Wintersemester 2013/14 Übung 03 (Nebenfach) Ludwig-Maximilians-Universität München Multimedia im Netz WS 2013/14 - Übung 3-1 Datenbanken und SQL Mit Hilfe von Datenbanken kann man Daten

Mehr

Fehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig. Christian Borghardt I BI Consultant

Fehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig. Christian Borghardt I BI Consultant Fehlertoleranz und Robustheit von ETL-Prozessen Wie gestalten wir Abläufe möglichst widerstandsfähig Christian Borghardt I BI Consultant Über uns areto consulting gmbh Echter Business Intelligence Spezialist

Mehr