REORG INDEXES/TABLE (Befehl) mit Verwendung der Prozedur ADMIN_CMD
Der Befehl REORG INDEXES/TABLE reorganisiert einen Index oder eine Tabelle.
Sie können alle Indizes reorganisieren, die für eine Tabelle definiert sind, indem Sie die Indexdaten in unfragmentierten, physisch zusammenhängenden Seiten erneut erstellen. In einer Datenpartitionstabelle können Sie einen bestimmten nicht partitionierten Index in einer partitionierten Tabelle reorganisieren oder Sie können alle partitionierten Indizes in einer bestimmten Datenpartition reorganisieren.
Wenn Sie die Option CLEANUP der Indexklausel angeben, wird die Bereinigung ausgeführt, ohne dass Indizes erneut erstellt werden. Sie können einen bestimmten Index für eine Tabelle bereinigen oder Sie können alle Indizes für die Tabelle bereinigen.
Dieser Befehl kann nicht verwendet werden für Indizes für deklarierte temporäre Tabellen oder erstellte temporäre Tabellen (SQLSTATE 42995).
SQL1419Nfehl.Bereich
Dieser Befehl wirkt sich auf alle Datenbankpartitionen in der Datenbankpartitionsgruppe aus.
Berechtigung
- SYSADM
- SYSCTRL
- SYSMAINT
- DBADM
- SQLADM
- Zugriffsrecht CONTROL für die Tabelle
Erforderliche Verbindung
Datenbank
Befehlssyntax
Befehlsparameter
- INDEXES ALL FOR TABLE table-name
- Gibt die Tabelle an, deren Indizes reorganisiert werden sollen. Die Tabelle kann sich in einer lokalen oder fernen Datenbank befinden.
- INDEX index-name
- Gibt einen einzelnen Index an, der reorganisiert wirdDie Reorganisation von einzelnen Indizes wird in den folgenden Szenarios unterstützt:
- Nicht partitionierte Indizes für eine Datenpartitionstabelle, bei denen es sich nicht um Blockindizes handelt
- Alle Indizes für beliebige permanente Tabellen, wenn CLEANUP ALL angegeben ist und RECLAIM EXTENTS nicht angegeben ist
- FOR TABLE table-name
- Gibt den Namen der Tabelle an, für die der Index indexname erstellt wird. Dieser Parameter ist unter der Voraussetzung optional, wenn Indexnamen in der gesamten Datenbank eindeutig sind.
- TABLE table-name
- Gibt die Tabelle an, die reorganisiert werden soll. Die Tabelle kann sich in einer lokalen oder fernen Datenbank befinden. Der Name oder Aliasname im Format schema.tabellenname kann verwendet werden. Das schema ist der Benutzername, unter dem die Tabelle erstellt wurde. Wenn Sie den Schemanamen nicht angeben, wird das Standardschema angenommen.
Der Parameter RECLAIM EXTENTS ist der einzige Parameter, der für nach Spalten organisierte Tabellen unterstützt wird.
Bei typisierten Tabellen muss der angegebene Tabellenname der Name der Stammtabelle der Hierarchie sein.
Für die Reorganisation einer MDC-Tabelle (MDC – Multidimensional Clustering, mehrdimensionales Clustering) oder einer ITC-Tabelle (ITC – Insert Time Clustering, Clustering anhand der Einfügungszeit) können Sie keinen Index angeben. Für MDC- oder ITC-Tabellen kann keine Inplace-Reorganisation für Tabellen erfolgen.
Wird die Klausel ON DATA PARTITION für die Tabellenreorganisation einer Datenpartitionstabelle angegeben, wird nur die angegebene Datenpartition reorganisiert:- Wenn für die Tabelle keine nicht partitionierten Indizes (mit Ausnahme von systemgenerierten XML-Pfadindizes) definiert sind, gilt der Zugriffsmodus nur für die angegebene Partition. Benutzer dürfen die anderen Partitionen der Tabelle lesen und in diese Partitionen schreiben.
- Wenn es nicht partitionierte Indizes gibt, die für die Tabelle definiert sind (ohne vom System generierte XML-Pfadindizes), ist der Modus ALLOW NO ACCESS der Standardmodus und der einzig unterstützte Zugriffsmodus. In diesem Fall wird die Tabelle in den Modus ALLOW NO ACCESS versetzt. Bei der Angabe von ALLOW READ ACCESS wird SQL1548N zurückgegeben (SQLSTATE 5U047).
Tabelle 1. Unterstützter Zugriffsmodus für eine klassische Tabellenreorganisation für nicht partitionierte und partitionierte Tabellen Befehl Tabellentypen Tabellenpartitionierungsklausel Unterstützter Zugriffsmodus REORG TABLE Nicht partitionierte Tabelle Nicht zutreffend ALLOW NO ACCESS,
ALLOW READ ACCESS1REORG TABLE Partitionierte Tabelle Nicht angegeben ALLOW NO ACCESS1REORG TABLE (Für die Tabelle sind keine Indizes oder ausschließlich partitionierte Indizes definiert.) Partitionierte Tabelle ON DATA PARTITION ALLOW NO ACCESS,
ALLOW READ ACCESS1REORG TABLE (In der Tabelle sind außer systemgenerierten XML-Pfadindizes keine nicht partitionierten Indizes definiert.) Partitionierte Tabelle ON DATA PARTITION ALLOW NO ACCESS1Hinweis:- Standardmodus, wenn keine Zugriffsklausel angegeben ist.
Bei einer Datenpartitionstabelle werden durch die Tabellenreorganisation die nicht partitionierten Indizes und die partitionierten Indizes in der Tabelle nach der Reorganisation der Tabelle erneut erstellt. Wird die Klausel ON DATA PARTITION zum Reorganisieren einer bestimmten Datenpartition einer Datenpartitionstabelle verwendet, werden bei einer Tabellenreorganisation die nicht partitionierten Indizes und die partitionierten Indizes nur für die angegebene Partition erneut erstellt.
Indexklausel
- ALLOW NO ACCESS
- Gibt für REORG INDEXES an, dass während der Reorganisation der Indizes keine anderen Benutzer auf die Tabelle zugreifen
können. Wird die Klausel ON DATA PARTITION für eine partitionierte Tabelle angegeben, wird nur die angegebene Partition auf den Zugriffsmodus begrenzt.
Gibt für REORG INDEXan, dass keine anderen Benutzer auf die Tabelle zugreifen können, während der Index reorganisiert wird.
- ALLOW READ ACCESS
- Gibt für REORG INDEXES an, dass andere Benutzer während der Reorganisation der Indizes nur Lesezugriff auf die Tabelle
haben können. Der Modus ALLOW READ ACCESS wird für REORG INDEXES einer partitionierten Tabelle nur unterstützt, wenn die Option CLEANUP oder RECLAIM EXTENTS oder die Klausel ON DATA
PARTITION angegeben wird. Wird die Klausel ON DATA PARTITION für eine partitionierte Tabelle angegeben, wird nur die angegebene Partition auf den Zugriffsmodus begrenzt.
Gibt für REORG INDEXan, dass Lesezugriff auf die Tabelle haben kann, während der Index reorganisiert wird.
- ALLOW WRITE ACCESS
- Gibt für REORG INDEXES an, dass andere Benutzer während der Reorganisation der Indizes die Tabelle lesen und in sie
schreiben können. Der Modus ALLOW WRITE ACCESS wird für eine partitionierte Tabelle nur unterstützt, wenn die Option CLEANUP oder RECLAIM
EXTENTS oder die Klausel ON DATA PARTITION angegeben ist. Wird die Klausel ON DATA PARTITION für eine partitionierte Tabelle angegeben, wird nur die angegebene Partition auf den Zugriffsmodus begrenzt.
Gibt für REORG INDEXan, dass aus der Tabelle lesen und in die Tabelle schreiben können, während der Index reorganisiert wird.
Der Modus ALLOW WRITE ACCESS wird für MDC-Tabellen (MDC – Multidimensional Clustering, mehrdimensionales Clustering), ITC-Tabellen (ITC – Insert Time Clustering, Clustering anhand der Einfügungszeit) oder erweiterte Indizes nur unterstützt, wenn die Option CLEANUP oder RECLAIM EXTENTS angegeben ist.
Der Parameter ALLOW WRITE ACCESS wird für nach Spalten organisierte Tabellen nicht unterstützt, wenn Sie den Parameter REBUILD angeben.
- Nur die angegebene Datenpartition ist auf die Ebene des Zugriffsmodus begrenzt. Benutzer dürfen die anderen Partitionen der Tabelle lesen und
in sie schreiben, während die partitionierten Indizes der angegebenen Partition reorganisiert werden.In der folgenden Tabelle sind die unterstützten Zugriffsmodi und der gleichzeitige Zugriff aufgelistet, der auf andere Partitionen der Tabelle zulässig ist, wenn die Klausel ON DATA PARTITION angegeben ist:
Tabelle 2. Unterstützte Zugriffsmodi und zulässiger gleichzeitiger Zugriff, wenn zusammen mit REORG INDEXES ALL die Klausel ON DATA PARTITION angegeben wird Zugriffsmodus Gleichzeitiger Zugriff, der auf die angegebene Partition zulässig ist Gleichzeitiger Zugriff, der auf andere Partitionen zulässig ist ALLOW NO ACCESS Kein Zugriff Lese- und Schreibzugriff ALLOW READ ACCESS Lesezugriff auf die Partition, bis der Index aktualisiert ist Lese- und Schreibzugriff ALLOW WRITE ACCESS Lese- und Schreibzugriff auf die Partition, bis der Index aktualisiert ist Lese- und Schreibzugriff - Es werden nur die partitionierten Indizes für die angegebene Partition reorganisiert. Die nicht partitionierten Indizes für die
partitionierte Tabelle werden nicht reorganisiert.
Sind in der Tabelle nicht partitionierte Indizes mit 'invalid' (ungültig) oder 'for rebuild' (für erneutes Erstellen) markiert, werden diese Indizes vor der Reorganisation erneut erstellt. Falls nicht, werden bei Markierung des Indexobjekts mit 'invalid' oder 'for rebuild' nur die partitionierten Indizes in der angegebenen Partition reorganisiert oder erneut erstellt.
- Wenn auch die Option CLEANUP oder RECLAIM EXTENTS angegeben ist, werden nur partitionierte Indizes für die angegebene Partition bereinigt.
| Befehl | Tabellentypen | Tabellenpartitionierungsklausel | Zusätzliche Parameter, die für die Indexklausel angegeben werden | Unterstützter Zugriffsmodus |
|---|---|---|---|---|
| REORG INDEXES | Nicht partitionierte Tabelle | Nicht zutreffend | Beliebig | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS2 |
| REORG INDEX | Nicht partitionierte Tabelle | Nicht zutreffend | CLEANUP ALL | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS |
| REORG INDEX | Partitionierte Tabelle | Nicht zutreffend | Beliebig | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS |
| REORG INDEX | Partitionierte Tabelle | Mit oder ohne Klausel ON DATA PARTITION | CLEANUP ALL | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS |
| REORG INDEXES | Partitionierte Tabelle | Keine | REBUILD (dies ist der Standardwert, wenn kein anderer Wert angegeben wird) | ALLOW NO ACCESS 1
|
| REORG INDEXES | Partitionierte Tabelle | ON DATA PARTITION | REBUILD (dies ist der Standardwert, wenn kein anderer Wert angegeben wird) | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS |
| REORG INDEXES | Partitionierte Tabelle | Mit oder ohne Klausel ON DATA PARTITION | CLEANUP oder RECLAIM EXTENTS angegeben | ALLOW NO ACCESS,
ALLOW READ ACCESS1, ALLOW WRITE ACCESS |
- Standardmodus, wenn keine Zugriffsklausel angegeben ist.
- ALLOW WRITE ACCESS wird für nach Spalten organisierte Tabellen nicht unterstützt, wenn Sie den Parameter REBUILD angeben.
Verwenden Sie die Option ALLOW READ ACCESS oder ALLOW WRITE ACCESS , um anderen Transaktionen Lese-oder Schreibzugriff auf die Tabelle zu ermöglichen, während die Indizes reorganisiert werden. Der Zugriff auf die Tabelle ist nicht zulässig, wenn Sie einen Index in dem Zeitraum erneut erstellen, in dem die reorganisierten Kopien der Indizes verfügbar gemacht werden.
- REBUILD
- Die Option REBUILD ist die Standardeinstellung und stellt die gleiche Funktionalität dar, die durch die Indexreorganisation in früheren Releases bereitgestellt wurde, wenn die Klauseln CLEANUP und CONVERT nicht angegeben wurden. Mit der Option REBUILD der Indexreorganisation werden die Indexdaten in physisch zusammenhängenden Seiten erneut erstellt. Der Standardzugriffsmodus hängt vom Tabellentyp ab.
Optionen für Freigabe von Speicherbereich
- CLEANUP
- Bei Anforderung von CLEANUP wird statt REBUILD eine Bereinigung ausgeführt. Die Indizes werden nicht erneut erstellt und freigegebene Seiten können von Indizes, die nur für diese Tabelle definiert sind, wiederverwendet werden.
- ALL
- Gibt an, dass Indizes bereinigt werden müssen, indem festgeschriebene pseudogelöschte Schlüssel und festgeschriebene
pseudoleere Seiten entfernt werden.
Die Option CLEANUP ALL gibt festgeschriebene pseudoleere Seiten frei und entfernt festgeschriebene pseudogelöschte Schlüssel aus Seiten, die nicht pseudoleer sind. Diese Option versucht außerdem, benachbarte Blattseiten zusammenzufügen, wenn dies zu einer zusammengefügten Blattseite führt, die mindestens den durch PCTFREE angegebenen freien Speicherbereich enthält. Mit PCTFREE wird der freie Speicherbereich in Prozent angegeben, der zum Zeitpunkt der Indexerstellung für den Index definiert wurde. Der Standardwert für PCTFREE lautet 10 Prozent. Wenn zwei Seiten zusammengefügt werden können, wird eine der Seiten freigegeben. Die Anzahl der pseudogelöschten Schlüssel in einem Index (mit Ausnahme der Schlüssel auf pseudoleeren Seiten) kann durch die Ausführung von RUNSTATS und die anschließende Auswahl der NUMRIDS DELETED-Elemente in SYSCAT.INDEXES ermittelt werden. Die Option ALL bereinigt die NUMRIDS DELETED und NUM EMPTY LEAFS, wenn festgestellt wird, dass sie festgeschrieben werden.
- PAGES
- Gibt an, dass festgeschriebene pseudoleere Seiten aus der Indexbaumstruktur entfernt werden müssen. Mit diesem Schritt werden keine
pseudogelöschten Schlüssel in Seiten bereinigt, die nicht pseudoleer sind. Da nur die pseudoleeren Blattseiten überprüft werden, ist dies
in den meisten Fällen wesentlich schneller als die Verwendung der Option ALL.
Die Option CLEANUP PAGES sucht nach festgeschriebenen pseudoleeren Seiten und gibt sie frei. Bei einer festgeschriebenen pseudoleeren Seite handelt es sich um eine Seite, auf der alle Schlüssel für die Seite als gelöscht markiert sind und diese Löschungen mit Commit festgeschrieben wurden. Die Anzahl der pseudoleeren Seiten in einem Index kann ermittelt werden, indem RUNSTATS ausgeführt wird und die Spalte NUM EMPTY LEAFS in SYSCAT.INDEXES. Die Option PAGES bereinigt die NUM EMPTY LEAFS, wenn festgestellt wird, dass sie festgeschrieben werden sollen.
- RECLAIM EXTENTS
- Gibt den Index an, der reorganisiert werden soll und in dem nicht verwendete Speicherbereiche freigegeben werden sollen. Durch diese Aktion werden Indexseiten innerhalb des Indexobjekts verschoben, um leere Speicherbereiche zu erstellen. Durch diesen Schritt werden diese leeren Speicherbereiche anschließend von der exklusiven Nutzung durch das Indexobjekt freigegeben und zur Verwendung durch andere Datenbankobjekte innerhalb des Tabellenbereichs verfügbar. Speicherbereiche aus dem Indexobjekt werden wieder für den Tabellenbereich freigegeben. ALLOW READ ACCESS ist der Standardwert, es werden jedoch alle Zugriffsmodi unterstützt.
Tabellenklausel
- CLASSIC
- Reorganisiert die Tabelle durch Erstellen einer neuen Kopie der Tabelle und durch anschließendes Ersetzen der ursprünglichen Tabelle durch die reorganisierte Kopie. Alle Indizes für die Tabelle werden nach dem Ersetzen erneut erstellt. Die ursprüngliche Tabelle ist je nach verwendeter Zugriffsklausel (wird als nächstes beschrieben) für Abfragen verfügbar, bis die Ersetzungsoperation startet.
- INPLACE
- Lässt während der Reorganisation der Tabelle Benutzerzugriff zu.
Die Inplace-Tabellenreorganisation ist nur zulässig für nicht partitionierte Tabellen, die keine MDC- oder ITC-Tabellen sind, und die keine erweiterten Indizes und keine Indizes aufweisen, die zu XML-Spalten in der Tabelle definiert sind. Darüber hinaus ist die Inplace-Tabellenreorganisation für eine partitionierte Tabelle nur zulässig, wenn in der Tabelle keine nicht partitionierten Indizes (mit Ausnahme von systemgenerierten XML-Pfadindizes) definiert sind und wenn ON DATA PARTITION angegeben ist. Es kann zum selben Zeitpunkt jeweils nur eine einzige Datenpartition reorganisiert werden. Die Inplace-Tabellenreorganisation kann nur für Tabellen ausgeführt werden, die einen Umfang von mindestens drei Seiten haben.
Bevor START zur Inplace-Reorganisation einer Tabelle abgesetzt werden kann, müssen alle angehaltenen oder zurzeit ausgeführten Inplace-Reorganisationen für diese Tabelle abgeschlossen oder gestoppt werden. Wenn bei einer partitionierten Tabelle für eine der Partitionen eine angehaltene oder zurzeit ausgeführte Inplace-Reorganisation vorhanden ist, muss vor dem Absetzen von START zur Inplace-Reorganisation einer anderen Partition die angehaltene Reorganisation für diese Tabelle abgeschlossen oder gestoppt werden.
Die Inplace-Reorganisation findet asynchron statt und wird möglicherweise nicht sofort wirksam.
- STOP
- Stoppt die Inplace-Verarbeitung von REORG am aktuellen Punkt.
- PAUSE
- Setzt die Inplace-Verarbeitung von REORG am aktuellen Punkt aus oder hält die Verarbeitung an.
- RECLAIM EXTENTS
- Gibt die Tabelle an, die reorganisiert werden soll und in der nicht verwendete Speicherbereiche freigegeben werden sollen. Mit der Variable tabellenname muss eine MDC-Tabelle, eine ITC-Tabelle oder eine nach Spalten organisierte Tabelle angegeben werden. Der Name oder Aliasname im Format schema.tabellenname kann verwendet werden. Das schema ist der Benutzername, unter dem die Tabelle erstellt wurde. Wenn Sie den Schemanamen nicht angeben, wird das Standardschema angenommen.
Optionen für CLASSIC
- ALLOW NO ACCESS
- Gibt an, dass keine anderen Benutzer auf die Tabelle zugreifen können, während die Tabelle reorganisiert wird.
Der Modus ALLOW NO ACCESS ist der Standardmodus und wird nur unterstützt, wenn Sie eine partitionierte Tabelle ohne die Klausel ON DATA PARTITION reorganisieren.
Wird die Klausel ON DATA PARTITION für eine Datenpartitionstabelle angegeben, wird nur die angegebene Datenpartition reorganisiert:- Wenn in der Tabelle keine nicht partitionierten Indizes definiert sind (außer systemgenerierte XML-Pfadindizes), ist nur die angegebene Partition auf den Modus ALLOW NO ACCESS beschränkt. Benutzer dürfen die anderen Partitionen der Tabelle lesen und in diese Partitionen schreiben.
- Wenn es nicht partitionierte Indizes gibt, die für die Tabelle definiert sind (ohne vom System generierte XML-Pfadindizes), ist der Modus ALLOW NO ACCESS der Standardmodus und der einzig unterstützte Zugriffsmodus. In diesem Fall wird die Tabelle in den Modus ALLOW NO ACCESS versetzt.
- ALLOW READ ACCESS
- Während der Reorganisation ist nur Lesezugriff auf die Tabelle zulässig.
Der Modus ALLOW READ ACCESS ist der Standardmodus für eine nicht partitionierte Tabelle.
Wird die Klausel ON DATA PARTITION für eine Datenpartitionstabelle angegeben, wird nur die angegebene Datenpartition reorganisiert:- Wenn es keine nicht partitionierten Indizes gibt, die für die Tabelle definiert sind (außer systemgenerierten XML-Pfadindizes), ist der Modus ALLOW READ ACCESS der Standardmodus. Nur die angegebene Partition ist auf die Zugriffsmodusebene begrenzt. Benutzer dürfen die anderen Partitionen der Tabelle lesen und in diese Partitionen schreiben.
- Wenn es nicht partitionierte Indizes gibt, die für die Tabelle definiert sind (außer systemgenerierten XML-Pfadindizes), wird der Modus ALLOW READ ACCESS nicht unterstützt. Wenn ALLOW READ ACCESS in diesem Fall angegeben wird, dann wird SQL1548N zurückgegeben (SQLSTATE 5U047).
- USE tbspace-name
- Gibt den Namen eines Tabellenbereichs für temporäre Systemtabellen an, in dem eine temporäre Kopie der zu reorganisierenden Tabelle
gespeichert wird. Wenn Sie keinen Tabellenbereichsnamen angeben, speichert der Datenbankmanager eine Arbeitskopie der Tabelle in den Tabellenbereichen, die die reorganisierte Tabelle enthalten.
Wenn bei einem Tabellenobjekt mit 8 KB, 16 KB oder 32 KB die Seitengröße des von Ihnen angegebenen Tabellenbereichs für temporäre Systemtabellen nicht mit der Seitengröße der Tabellenbereiche übereinstimmt, in denen sich die Tabellendaten befinden, versucht das Db2 -Datenbankprodukt, einen Tabellenbereich für temporäre Tabellen mit der korrekten Größe der LONG/LOB-Objekte zu finden. Ein solcher Tabellenbereich muss vorhanden sein, damit die Reorganisation gelingen kann.
Bei Tabellen wird der Tabellenbereich für temporäre Tabellen als temporärer Speicher für die Reorganisation von Datenpartitionen in der Tabelle verwendet. Bei der Reorganisation der gesamten partitionierten Tabelle werden die einzelnen Datenpartitionen nacheinander reorganisiert. Der Tabellenbereich für temporäre Tabellen muss in der Lage sein, die größte Datenpartition der Tabelle zu speichern, nicht die gesamte Tabelle. Wenn die Klausel ON DATA PARTITION angegeben ist, muss der Tabellenbereich für temporäre Tabellen die angegebene Partition speichern können.
Wenn Sie bei einer partitionierten Tabelle keinen Tabellenbereichsnamen angeben, wird als temporärer Speicherbereich einer Datenpartition der Tabellenbereich verwendet, in dem sich diese Datenpartition befindet. In den einzelnen Tabellenbereichen der Datenpartitionen muss ausreichend freier Speicherplatz vorhanden sein, um eine Kopie der betreffenden Datenpartition zu speichern.
- INDEX index-name
- Gibt den beim Reorganisieren der Tabelle zu verwendenden Index an. Wenn Sie nicht den vollständig qualifizierten Namen im Format schema.indexname angeben, wird das Standardschema angenommen. Das schema ist der Benutzername, unter dem der Index erstellt wurde. Der Datenbankmanager verwendet den Index, um die Datensätze in der Tabelle, die er reorganisiert, physisch neu zu ordnen.
Ist bei einer Inplace-Tabellenreorganisation ein Clusterindex für die Tabelle definiert und wird ein Index angegeben, muss dies der Clusterindex sein. Wird die Inplace-Option nicht angegeben, wird ein beliebiger Index verwendet, der angegeben wurde. Wenn Sie keinen Indexnamen angeben, werden die Datensätze ohne Berücksichtigung der Reihenfolge reorganisiert. Ist für die Tabelle jedoch ein Clusterindex definiert und wird kein Index angegeben, wird der Clusterindex für die Tabellenclusterbildung verwendet. Die Angabe eines Index ist nicht möglich, wenn eine MDC- oder ITC-Tabelle reorganisiert wird.
Wenn für eine Tabellenreorganisation sowohl die Klausel INDEX als auch die Klausel ON DATA PARTITION angegeben wird, wird nur die angegebene Partition reorganisiert, wobei der Index indexname verwendet wird.
- INDEXSCAN
- Bei einer Verarbeitung von REORG mit Clustering wird zum Reorganisieren von Tabellendatensätzen eine Indexsuche verwendet. Reorganisieren Sie Tabellenzeilen, indem Sie über einen Index auf die Tabelle zugreifen. Die Standardmethode besteht darin, die Tabelle
zu durchsuchen und das Ergebnis zu sortieren, um die Tabelle mit Tabellenbereichen für temporäre Tabellen zu reorganisieren, die Sie nach Bedarf
verwenden. Auch wenn die Indexschlüssel in der Sortierreihenfolge liegen, ist das Durchsuchen und Sortieren in der Regel schneller als das
Abrufen von Zeilen, für das zuerst die Zeilen-ID aus einem Index gelesen wird.
Bei Tabellen mit erweiterter Zeilenlänge wird die Standardmethode, d. h. das Reorganisieren der Tabelle anhand von Durchsuchen und anschließendem Sortieren des Ergebnisses, nicht unterstützt.
Bei ausdrucksbasierten Indizes wird die Standardmethode, d. h. das Reorganisieren der Tabelle anhand von Durchsuchen und anschließendem Sortieren des Ergebnisses, nicht unterstützt.
- LONGLOBDATA
- Es sind Langfeld- und LOB-Daten zu reorganisieren.
Die Standardmethode besteht darin, das Reorganisieren dieser Objekte zu vermeiden, da es zeitaufwändig ist und das Clustering nicht verbessert. Wenn "compact" nicht in den Spalten "long" oder "lob" angegeben ist, verringert LONGLOBDATA möglicherweise nicht die Größe des LOB-Objekts. Wenn Sie jedoch eine Reorganisation mit der Option LONGLOBDATA für Tabellen mit XML-Spalten ausführen, wird nicht verwendeter Speicherbereich freigegeben und die Größe des XML-Speicherobjekts verringert.
Dieser Parameter ist erforderlich, wenn Sie vorhandene LOB-Daten in inline gespeicherte LOB-Daten konvertieren.
Bei Tabellen mit erweiterter Zeilenlänge wird durch die erste Offline-Ausführung von REORG, die nach der Änderung einer Tabelle stattfindet, LONGLOBDATA erzwungen.
- USE longtbspace-name
- Dieser Parameter ist optional und kann verwendet werden, um den Namen eines Tabellenbereichs für temporäre Tabellen anzugeben, der für die
erneute Erstellung von Daten des Typs LONG verwendet werden soll. Wenn weder für das Tabellenobjekt noch für die Objekte des Typs LONG ein Tabellenbereich für temporäre Tabellen angegeben ist, werden die
Objekte in dem Tabellenbereich erstellt, in dem sie aktuell gespeichert sind. Wenn für die Tabelle ein Tabellenbereich für temporäre Tabellen angegeben wird und dieser Parameter nicht angegeben ist, wird der Tabellenbereich verwendet, der für Reorganisationsbasisdaten verwendet wird. Wenn sich die Seitengrößen jedoch unterscheiden, versucht das Db2 -Datenbanksystem, einen temporären Container mit der entsprechenden Seitengröße auszuwählen, um die langen Objekte in zu erstellen.
Wenn USE name_des_tabellenbereichs_für_lange_objektdaten angegeben wird, muss auch USE tabellenbereichsname angegeben werden. Ist dies nicht der Fall, wird das Argument name_des_tabellenbereichs_für_lange_objektdaten ignoriert.
- KEEPDICTIONARY
- Wenn das Attribut
COMPRESSfür die TabelleYESlautet und die Tabelle ein Komprimierungswörterverzeichnis aufweist, wird kein neues Wörterverzeichnis erstellt. Alle während der Reorganisation verarbeiteten Zeilen unterliegen der Komprimierung unter Verwendung des vorhandenen Wörterverzeichnisses. Wenn für das AttributCOMPRESSdie EinstellungYESlautet und für die Tabelle kein Komprimierungswörterverzeichnis vorhanden ist, wird in diesem Szenario nur ein Wörterverzeichnis erstellt (und die Tabelle komprimiert), wenn die Tabelle eine bestimmte Größe (ungefähr 1-2 MB) hat und in dieser Tabelle ausreichend Daten vorhanden sind. Wenn Sie stattdessen explizit REORG RESETDICTIONARY festlegen, wird ein Wörterverzeichnis erstellt, wenn mindestens eine Zeile in der Tabelle vorhanden ist. Wenn das AttributCOMPRESSfür die Tabelle die EinstellungNOhat und die Tabelle ein Komprimierungswörterverzeichnis aufweist, wird bei der Verarbeitung von REORG das Wörterverzeichnis beibehalten. Alle Zeilen in der neu reorganisierten Tabelle haben das nicht komprimierte Format. Einige Daten, z. B. LOB-Daten, die nicht in der Basistabellenzeile gespeichert sind, können nicht komprimiert werden.Ist die Option LONGLOBDATA nicht angegeben, werden nur die Tabellenzeilendaten reorganisiert. In der folgenden Tabelle wird das Verhalten der Syntax von KEEPDICTIONARY im Befehl REORG beschrieben, wenn die Option LONGLOBDATA nicht angegeben ist.
Tabelle 4. REORG KEEPDICTIONARY Komprimieren Wörterverzeichnis ist vorhanden Resultat; Ergebnis Y Y Wörterverzeichnis beibehalten; Zeilen komprimiert. Y N Wörterverzeichnis erstellen; Zeilen komprimiert. N Y Wörterverzeichnis beibehalten; alle Zeilen dekomprimiert. N N Keine Wirkung; alle Zeilen dekomprimiert. In der folgenden Tabelle wird das Verhalten der Syntax von KEEPDICTIONARY im Befehl REORG beschrieben, wenn die Option LONGLOBDATA angegeben ist.
Tabelle 5. REORG KEEPDICTIONARY mit angegebener Option LONGLOBDATA Komprimieren Datenwörterverzeichnis für Tabellenzeilen ist vorhanden Wörterverzeichnis für XML-Speicherobjekte ist vorhanden1 Komprimierungswörterverzeichnis Datenkomprimierung Y Y Y Wörterverzeichnisse beibehalten. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y Y N Wörterverzeichnis für Tabellenzeilen beibehalten und ein Wörterverzeichnis für XML-Speicherobjekte erstellen. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y N Y Wörterverzeichnis für Tabellenzeilen erstellen und das XML-Wörterverzeichnis beibehalten. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y N N Datenwörterverzeichnisse für Tabellenzeilen und XML-Wörterverzeichnisse erstellen. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. N Y Y Datenwörterverzeichnisse für Tabellenzeilen und XML-Wörterverzeichnisse beibehalten. Tabellendaten sind dekomprimiert. Neue Daten werden nicht komprimiert. N Y N Wörterverzeichnis für Tabellenzeilen beibehalten. Tabellendaten sind dekomprimiert. Neue Daten werden nicht komprimiert. N N Y XML-Wörterverzeichnis beibehalten. Tabellendaten sind dekomprimiert. Neue Daten werden nicht komprimiert. N N N Ohne Auswirkung. Tabellendaten sind dekomprimiert. Neue Daten werden nicht komprimiert. Hinweis:- Ein Komprimierungswörterverzeichnis kann für das XML-Speicherobjekt einer Tabelle nur erstellt werden, wenn die XML-Spalten der Tabelle in Db2 9.7 oder höher hinzugefügt werden oder wenn die Tabelle mit der gespeicherten Prozedur ADMIN_MOVE_TABLE migriert wird.
Wenn bei einer Reinitialisierung oder dem Abschneiden einer Tabelle (wie bei einer Ersetzungsoperation) die Einstellung für das Komprimierungsattribut für die Tabelle NO lautet, wird das Wörterverzeichnis gelöscht, falls vorhanden. Umgekehrt gilt: Wenn ein Wörterverzeichnis vorhanden ist und die Einstellung für das Komprimierungsattribut für die Tabelle YES lautet, wird durch ein Abschneiden das Wörterverzeichnis gespeichert und nicht gelöscht. Das Wörterverzeichnis wird in seiner Gesamtheit für Wiederherstellungszwecke und für die zukünftige Unterstützung bei Datenerfassungsänderungen (d. h. Replikation) protokolliert.
- RESETDICTIONARY
- Wenn das Attribut
COMPRESSfür die Tabelle die EinstellungYEShat, wird ein neues Wörterbuch für die Zeilenkomprimierung erstellt. Alle während der Reorganisation verarbeiteten Zeilen unterliegen der Komprimierung unter Verwendung dieses neuen Wörterverzeichnisses. Dieses Wörterverzeichnis ersetzt alle vorherigen Wörterverzeichnisse. Wenn das AttributCOMPRESSfür die Tabelle die EinstellungNOhat und die Tabelle ein vorhandenes Komprimierungsverzeichnis aufweist, wird durch die Verarbeitung der Reorganisation das Wörterverzeichnis entfernt und alle Zeilen in der neu reorganisierten Tabelle sind im nicht komprimierten Format. Einige Daten, z. B. LOB-Daten, die nicht in der Basistabellenzeile gespeichert sind, können nicht komprimiert werden.Wenn die Option LONGLOBDATA nicht angegeben ist, werden nur die Tabellenzeilendaten reorganisiert. In der folgenden Tabelle wird das Verhalten der Syntax von RESETDICTIONARY im Befehl REORG beschrieben, wenn die Option LONGLOBDATA nicht angegeben ist.
Tabelle 6: REORG RESETDICTIONARY Komprimieren Wörterverzeichnis ist vorhanden Resultat; Ergebnis Y Y Neues Wörterverzeichnis erstellen*; Zeilen komprimiert. Wird die Option DATA CAPTURE CHANGES in der Anweisung CREATE TABLE oder ALTER TABLE angegeben, wird das aktuelle Wörterverzeichnis beibehalten (und als früheres Komprimierungswörterverzeichnis bezeichnet). Y N Neues Wörterverzeichnis erstellen; Zeilen komprimiert. N Y Wörterverzeichnis entfernen; alle Zeilen dekomprimiert. Wird die Option DATA CAPTURE NONE in der Anweisung CREATE TABLE oder ALTER TABLE angegeben, wird das frühere Komprimierungswörterverzeichnis für die angegebene Tabelle auch entfernt. N N Keine Wirkung; alle Zeilen dekomprimiert. * Wenn ein Wörterverzeichnis vorhanden ist und das Komprimierungsattribut aktiviert ist, aktuell aber keine Daten in der Tabelle vorhanden sind, behält die Operation RESETDICTIONARY das vorhandene Wörterverzeichnis bei. Zeilen, die kürzer als die interne minimale Satzlänge sind, und Zeilen, die bei dem Versuch der Komprimierung keine Einsparung bei der Satzlänge erkennen lassen, werden in diesem Fall als 'nicht ausreichend' (insufficient) betrachtet.
In der folgenden Tabelle wird das Verhalten der Syntax von RESETDICTIONARY im Befehl REORG beschrieben, wenn die Option LONGLOBDATA angegeben ist.
Tabelle 7: REORG RESETDICTIONARY mit angegebener Option LONGLOBDATA Komprimieren Datenwörterverzeichnis für Tabellenzeilen ist vorhanden Wörterverzeichnis für XML-Speicherobjekte ist vorhanden1 Datenverzeichnis Datenkomprimierung Y Y Y Wörterverzeichnisse erstellen2 3. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y Y N Neues Wörterverzeichnis für Tabellenzeilen erstellen und neues XML-Wörterverzeichnis erstellen3. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y N Y Datenwörterverzeichnis für Tabellenzeilen erstellen und neues XML-Wörterverzeichnis erstellen. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. Y N N Wörterverzeichnisse erstellen. Vorhandene Daten werden komprimiert. Neue Daten werden komprimiert. N Y Y Wörterverzeichnisse entfernen. Vorhandene und neue Daten werden nicht komprimiert. Vorhandene Tabellendaten werden dekomprimiert. Neue Daten werden nicht komprimiert. N Y N Wörterverzeichnis für Tabellenzeilen entfernen. Alle Daten werden dekomprimiert.
Vorhandene Tabellendaten werden dekomprimiert. Neue Daten werden nicht komprimiert. N N Y Verzeichnis für XML-Speicherobjekt entfernen. Vorhandene Tabellendaten werden dekomprimiert. Neue Daten werden nicht komprimiert. N N N Ohne Auswirkung. Vorhandene Tabellendaten werden dekomprimiert. Neue Daten werden nicht komprimiert. Hinweis:- Ein Komprimierungswörterverzeichnis kann für das XML-Speicherobjekt einer Tabelle nur erstellt werden, wenn die XML-Spalten der Tabelle in Db2 9.7 oder höher hinzugefügt werden oder wenn die Tabelle mithilfe einer Onlinetabellenverschiebung migriert wird.
- Wenn ein Wörterverzeichnis vorhanden ist und das Komprimierungsattribut aktiviert ist, aktuell aber keine Daten in der Tabelle vorhanden sind, behält die Operation RESETDICTIONARY das vorhandene Wörterverzeichnis bei. Zeilen, die kürzer als die interne minimale Satzlänge sind, und Zeilen, die bei dem Versuch der Komprimierung keine Einsparung bei der Satzlänge erkennen lassen, werden in diesem Fall als nicht 'ausreichend' (insufficient) betrachtet.
- Wird die Option DATA CAPTURE CHANGES in der Anweisung CREATE TABLE oder ALTER TABLE angegeben, wird das aktuelle Datenwörterverzeichnis beibehalten (und als früheres Komprimierungswörterverzeichnis bezeichnet).
Inplace-Optionen
- ALLOW READ ACCESS
- Während der Reorganisation ist nur Lesezugriff auf die Tabelle zulässig.
- ALLOW WRITE ACCESS
- Während der Reorganisation ist Schreibzugriff auf die Tabelle zulässig. Dies ist das Standardverhalten.
- FULL
- Die Tabelle wird reorganisiert, um unter Berücksichtigung von PCTFREE für die Tabelle Seiten zu füllen. Wenn die Klausel INDEX angegeben ist, werden optional Zeilendaten innerhalb der Tabelle versetzt, um für die Daten ein erneutes Clustering auszuführen. Im Rahmen dieses Prozesses werden auch Überlaufsätze in normale Datensätze konvertiert. Dies ist das Standardverhalten.
- INDEX index-name
- Gibt den beim Reorganisieren der Tabelle zu verwendenden Index an. Wenn Sie nicht den vollständig qualifizierten Namen im Format schema.indexname angeben, wird das Standardschema angenommen. Das schema ist der Benutzername, unter dem der Index erstellt wurde. Der Datenbankmanager verwendet den Index, um die Datensätze in der Tabelle, die er reorganisiert, physisch neu zu ordnen.
Ist bei einer Inplace-Tabellenreorganisation ein Clusterindex für die Tabelle definiert und wird ein Index angegeben, muss dies der Clusterindex sein. Wird die Inplace-Option nicht angegeben, wird ein beliebiger Index verwendet, der angegeben wurde. Wenn Sie keinen Indexnamen angeben, werden die Datensätze ohne Berücksichtigung der Reihenfolge reorganisiert. Ist für die Tabelle jedoch ein Clusterindex definiert und wird kein Index angegeben, wird der Clusterindex für die Tabellenclusterbildung verwendet. Die Angabe eines Index ist nicht möglich, wenn eine MDC- oder ITC-Tabelle reorganisiert wird.
Wenn für eine Tabellenreorganisation sowohl die Klausel INDEX als auch die Klausel ON DATA PARTITION angegeben wird, wird nur die angegebene Partition reorganisiert, wobei der Index indexname verwendet wird.
- TRUNCATE TABLE
- Gibt alle Speicherbereiche frei, die am Ende der Tabelle leer sind, und gibt sie an den Tabellenbereich zurück. Die Speicherfreigabe wird am Ende der Inplace-Reorganisation ausgeführt. Während der Abschneidung wird die Tabelle mit einer S-Sperre versehen, um Aktualisierungen in der Tabelle zu verhindern. Aktualisierungen sind nicht möglich, auch wenn ALLOW WRITE ACCESS angegeben ist. Dies ist das Standardverhalten.
- NOTRUNCATE TABLE
- Diese Operation ermöglicht bei Angabe von ALLOW WRITE ACCESS Schreibzugriff während der gesamten Reorganisation. Es wird nicht versucht, Speicherbereich freizugeben, der von der Tabelle verwendet wird. Schneiden Sie die Tabelle nach der Inplace-Reorganisation nicht ab. Während der Abschneidung hat die Tabelle eine S-Sperre.
- START
- Startet die Inplace-Verarbeitung von REORG. Da es sich bei dieser Option um die Standardeinstellung handelt, ist dieses Schlüsselwort optional.
- RESUME
- Fährt mit einer zuvor angehaltenen Inplace-Tabellenreorganisation fort oder nimmt sie wieder auf. Wenn eine Onlinereorganisation wiederaufgenommen wird und Sie dafür dieselben Optionen verwenden möchten, die zum Zeitpunkt des Anhaltens der Reorganisation gültig waren, müssen Sie diese Optionen bei der Wiederaufnahme erneut angeben.
- CLEANUP OVERFLOWS
- Bei einer Inplace-Reorganisation mit CLEANUP OVERFLOWS wird die Tabelle durchlaufen und es wird nach Zeiger- oder Überlaufsätzen gesucht. Alle gefundenen Datensätze werden von der Operation in einen normalen Datensatz konvertiert. Durch diese Operation wird die Leistung von Tabellen verbessert, die über eine beträchtliche Anzahl von Zeiger- oder Überlaufdatensätzen verfügen. Durch die Operation wird die Größe der Tabelle nicht verringert.
Tabellenpartitionierungsklausel
- ON DATA PARTITION partition-name
- Gibt bei partitionierten Tabellen die Datenpartition für die Reorganisation an.
Für Db2 9.7 Fixpack 1 und höhere Releases kann die Klausel mit dem Befehl REORG INDEXES ALL verwendet werden, um die partitionierten Indizes für eine bestimmte Partition zu reorganisieren, und mit dem Befehl REORG TABLE , um Daten einer bestimmten Partition zu reorganisieren.
Wenn Sie die Klausel zusammen mit dem Befehl REORG TABLE oder REORG INDEXES ALL in einer partitionierten Tabelle verwenden, schlägt die Reorganisation fehl und gibt SQL2222N mit dem Ursachencode 1 zurück, wenn die Partition partitionsname für die angegebene Tabelle nicht vorhanden ist. Die Reorganisation schlägt fehl und gibt SQL2222N mit Ursachencode 3 zurück, wenn die Partition partitionsname zugeordnet (Attached) oder abgehängt (Detached) ist.
Wenn der Befehl REORG INDEX mit der Klausel ON DATA PARTITION für einen nicht partitionierten Index ausgeführt wird, schlägt die Reorganisation fehl und gibt SQL2222N mit Ursachencode 2 zurück. Wenn der Befehl REORG INDEX für einen nicht partitionierten Index ohne die Klausel CLEANUP ALL ausgeführt wird oder wenn zusätzlich die Klausel RECLAIM angegeben wird, schlägt die Reorganisation fehl und gibt SQL0270N mit Ursachencode 89 zurück.
Der Befehl REORG TABLE schlägt fehl und gibt SQL1549N (SQLSTATE 5U047) zurück, wenn die partitionierte Tabelle den Status 'Reorganisation anstehend' aufweist und für die Tabelle nicht partitionierte Indizes definiert sind.
Datenbankpartition
- ON DBPARTITIONNUM | ON DBPARTITIONNUMS
- Führt eine Operation für eine Gruppe von Datenbankpartitionen aus.
- ALL DBPARTITIONNUMS
- Gibt an, dass die Operation für alle Datenbankpartitionen auszuführen ist, die in der Datei db2nodes.cfg angegeben sind. Diese Option ist der Standardwert, wenn keine Datenbankpartitionsklausel angegeben ist.
- EXCEPT
- Gibt an, dass die Operation für alle Datenbankpartitionen auszuführen ist, die in der Datei db2nodes.cfg angegeben sind, ausschließlich der Partitionen, die in der Datenbankpartitionsliste angegeben sind.
Partitionsauswahlklausel
- db-partition-number1
- Gibt eine Datenbankpartitionsnummer in der Datenbankpartitionsliste an.
- db-partition-number2
- Gibt die zweite Datenbankpartitionsnummer an, sodass alle Datenbankpartitionen ab db-partitionsnummer1 bis einschließlich db-partitionsnummer2 in die Datenbankpartitionsliste eingeschlossen werden.
Beispiel
CALL SYSPROC.ADMIN_CMD ('REORG TABLE employee
INDEX empid ON DBPARTITIONNUM (1,3,4)')Hinweise zur Verwendung
- Der Ausführungsstatus des Befehls wird in dem SQL-Kommunikationsbereich (SQLCA = SQL Communication Area) zurückgegeben, der mit der Anweisung CALL erstellt wird.
- Das Dienstprogramm REORG setzt am Anfang der Operation die Anweisung COMMIT ab, die bei Typ-2-Verbindungen dazu führt, dass die Prozedur SQL30090N mit Ursachencode 2 zurückgibt.
- Das Dienstprogramm REORG unterstützt nicht die Verwendung von Kurznamen.
- Der Befehl REORG TABLE wird für deklarierte temporäre Tabellen oder erstellte temporäre Tabellen nicht unterstützt.
- Der Befehl REORG TABLE kann nicht für Sichten verwendet werden.
- Die Reorganisation einer Tabelle ist nicht mit Bereichsclustertabellen kompatibel, da bei diesen der Bereich der Tabelle stets in Gruppen zusammengefasst bleibt.
- REORG TABLE kann nicht für partitionierte Tabellen in einem DMS-Tabellenbereich verwendet werden, während für einen beliebigen der Tabellenbereiche, in dem die Tabelle vorhanden ist (einschließlich großer Objekte (LOBs) und Indizes) ein Online-Backup ausgeführt wird.
- REORG TABLE kann einen Index, der auf einer Indexerweiterung basiert, nicht verwenden.
- Wenn eine Tabelle den Status 'Reorganisation anstehend' aufweist, ist für die Tabelle keine Inplace-Reorganisation zulässig.
- Die gleichzeitig ablaufende Tabellenreorganisation, bei der temporäre DMS-Tabellenbereiche gemeinsam genutzt werden, wird nicht unterstützt.
- Hat eine Tabelle einen Index, für den ein ausdrucksbasierter Schlüssel definiert ist, wird eine Inplace-Reorganisation nicht unterstützt.
- Bevor Sie eine Reorganisationsoperation für eine Tabelle ausführen, in die von Ereignismonitoren geschrieben wird, müssen Sie die Ereignismonitoren für diese Tabelle inaktivieren.
- Für datenpartitionierte Tabellen:
- Für die Tabelle muss ACCESS_MODE in SYSCAT.TABLES auf den uneingeschränkten Zugriff gesetzt sein.
- Die Reorganisation überspringt Datenpartitionen, die wegen einer Operation zum Zuordnen bzw. Aufheben der Zuordnung den Status des eingeschränkten Betriebs haben. Ist die Klausel ON DATA PARTITION angegeben, muss der Zugriff auf die betreffende Partition uneingeschränkt sein.
- Wenn während der Tabellenreorganisation ein Fehler auftritt, sind anschließend einige Indizes oder Indexpartitionen möglicherweise ungültig. Die nicht partitionierten Indizes der Tabelle werden als ungültig markiert, wenn die Reorganisation die Ersetzungsphase (replace) für die erste Datenpartition erreicht oder durchlaufen hat. Die Indexpartitionen für alle Datenpartitionen, die die Ersetzungsphase bereits erreicht oder durchlaufen haben, werden als ungültig markiert. Die Indizes werden beim nächsten Zugriff auf die Tabelle oder Datenpartition erneut erstellt.
- Wenn während der Indexreorganisation bei Verwendung des Modus ALLOW NO ACCESS ein Fehler auftritt, sind einige Indizes für die Tabelle anschließend möglicherweise ungültig. Bei nicht partitionierten Satzkennungsindizes für die Tabelle ist anschließend nur der Index, der zum Zeitpunkt des Fehlers reorganisiert wurde, ungültig. Wenn ein Fehler auftritt, ist bei MDC-Tabellen mit nicht partitionierten Blockindizes anschließend mindestens ein Blockindex möglicherweise ungültig. Bei MDC- oder ITC-Tabellen mit partitionierten Indizes ist anschließend nur das Indexobjekt in der Datenpartition, die reorganisiert wird, ungültig. Alle als ungültig markierten Indizes werden beim nächsten Zugriff auf die Tabelle oder Datenpartition erneut erstellt.
- Wenn eine Datenpartitionstabelle mit ausschließlich in der Tabelle definierten, partitionierten Indizes den Status 'Reorganisation anstehend' aufweist, führt das Absetzen des Befehls REORG TABLE mit der Klausel ON DATA PARTITION dazu, dass nur die angegebene Datenpartition den Status 'Reorganisation anstehend' verlässt. Um die verbleibenden Partitionen der Tabelle aus dem Status 'Reorganisation anstehend' zu versetzen, geben Sie entweder den Befehl REORG TABLE für die gesamte Tabelle aus (ohne die Klausel ON DATA PARTITION ). Sie können auch einen REORG TABLE -Befehl mit der Klausel ON DATA PARTITION für alle verbleibenden Partitionen absetzen.
Informationen zum aktuellen Fortschritt der Tabellenreorganisation werden in die Protokolldatei für die Datenbankaktivität geschrieben. Die Protokolldatei enthält einen Datensatz für jedes Reorganisationsereignis. Führen Sie den Befehl LIST HISTORY für die Datenbank aus, die die zu reorganisierende Tabelle enthält, um diese Datei anzuzeigen.
Sie können den Fortschritt der Tabellenreorganisation auch mithilfe von Tabellenmomentaufnahmen überwachen. Die Überwachungsdaten zur Tabellenreorganisation werden unabhängig von der Einstellung des Datenbankmonitorschalters für Tabellen aufgezeichnet.
Wenn ein Fehler auftritt, wird ein SQLCA-Speicherauszug in die Protokolldatei geschrieben. Bei einer Inplace-Tabellenreorganisation wird der Status als PAUSED ('Angehalten') aufgezeichnet.
Für die Tabellenreorganisation INPLACE wird die REORG-Operation nicht ausgeführt, wenn die Tabelle maximal zwei Seiten umfasst. Es gibt auch keinen Eintrag in der Verlaufsdatei für die REORG-Operation und alle Momentaufnahmen-oder Überwachungsmessdaten zeigen keine REORG-Informationen an.
Wenn Sie eine Indextabelle zu häufig modifizieren, werden die Daten in den Indizes möglicherweise fragmentiert. Wenn die Tabelle unter Berücksichtigung eines Index in Gruppen zusammengefasst wird, kann es sein, dass die Tabelle und der Index die Clusterreihenfolge verlieren. Beide Faktoren können die Leistung von Scans beeinträchtigen, die den Index verwenden, und sie können sich auf die Effektivität des Vorablesezugriffs auf Indexseiten auswirken. REORG INDEX oder REORG INDEXES mit der Option REBUILD kann zum Reorganisieren eines Index oder aller Indizes in einer Tabelle verwendet werden. Bei der erneuten Erstellung der Indexreorganisation wird die Fragmentierung entfernt und das physische Clustering der Blattseiten wird wiederhergestellt. Der Befehl REORGCHK unterstützt Sie bei der Entscheidung, ob ein Index reorganisiert werden muss. Stellen Sie sicher, dass Sie alle Datenbankoperationen abgeschlossen und alle Sperren freigegeben haben, bevor Sie die Indexreorganisation aufrufen. Dieser Schritt kann ausgeführt werden, indem Sie eine Anweisung COMMIT absetzen, nachdem Sie alle Cursor geschlossen haben, die mit WITH HOLD geöffnet wurden, oder indem Sie eine Anweisung ROLLBACK absetzen.
Bei einer klassischen Tabellenreorganisation (Offline-Tabellenreorganisation) wird der Index während der letzten Phase der Reorganisation erneut erstellt. Ist mehr als ein Tabellenbereich für temporäre Tabellen vorhanden, kann es sein, dass zusätzlich zu dem im Befehl REORG TABLE angegebenen Tabellenbereich für temporäre Tabellen ein weiterer Tabellenbereich für zusätzliche Sortierungen verwendet werden kann, die mit der Verarbeitung der Tabellenreorganisation einhergehen. Durch die Inplace-Tabellenreorganisation (Onlinereorganisation) werden jedoch keine Indizes erneut erstellt. Es wird empfohlen, dass Sie nach Abschluss einer Inplace-Tabellenreorganisation den Befehl REORG INDEXES absetzen. Eine Inplace-Tabellenreorganisation ist asynchron. Daher muss sorgfältig sichergestellt werden, dass die Inplace-Tabellenreorganisation vor dem Absetzen des Befehls REORG INDEXES abgeschlossen ist. Das Absetzen des Befehls REORG INDEXES vor Abschluss der Inplace-Tabellenreorganisation kann dazu führen, dass die Reorganisation fehlschlägt (SQLCODE -2219).
Wenn mithilfe von REORG die Indizes für eine MDC-Tabelle erneut erstellt werden, sind die Full_Block-Hinweisbit nicht festgelegt. Da der Full_Block-Hinweis nicht festgelegt ist, stellen Sie möglicherweise eine verminderte Leistung beim Einfügen fest, wenn Sie Zeilen aus vorhandenen Dimensionswerten einfügen, nachdem die REORG-Operation abgeschlossen wurde und während die Registry-Variable DB2_TRUST_MDC_BLOCK_FULL_HINT aktiviert ist. Mit jedem Dimensionswert, der eingefügt wird, verbessert sich automatisch die Einfügeleistung von Dimensionswerten. Weitere Informationen finden Sie unter LeistungsvariableDB2_TRUST_MDC_BLOCK_FULL_HINT.
Tabellen, die so häufig modifiziert wurden, dass die Daten fragmentiert sind und die Zugriffszeit auffällig verlangsamt ist, sind Kandidaten für den Befehl REORG TABLE. Sie müssen dieses Dienstprogramm auch aufrufen, wenn Sie den INLINE LENGTH-Wert einer Spalte des strukturierten Typs geändert haben, um von dem geänderten INLINE LENGTH-Wert zu profitieren. Der Befehl REORGCHK unterstützt Sie bei der Entscheidung, ob eine Tabelle reorganisiert werden muss. Stellen Sie sicher, dass Sie alle Datenbankoperationen abgeschlossen und alle Sperren freigegeben haben, bevor Sie den Befehl REORG TABLE aufrufen. Dieser Schritt kann ausgeführt werden, indem Sie eine Anweisung COMMIT absetzen, nachdem Sie alle Cursor geschlossen haben, die mit WITH HOLD geöffnet wurden, oder indem Sie eine Anweisung ROLLBACK absetzen. Verwenden Sie nach der Reorganisation einer Tabelle den Befehl RUNSTATS zum Aktualisieren der Tabellenstatistikdaten und den Befehl REBIND zum erneuten Binden der Pakete, die diese Tabelle verwenden. Das Dienstprogramm für die Reorganisation schließt implizit alle Cursor.
- Jeder REORG -Befehl muss eine andere Partition mit der Klausel ON DATA PARTITION angeben.
- Jeder REORG -Befehl muss den Modus ALLOW NO ACCESS verwenden, um den Zugriff auf die Datenpartitionen einzuschränken.
- Die partitionierte Tabelle darf nur partitionierte Indizes haben, wenn Sie REORG TABLE -Befehle absetzen. Es dürfen keine nicht partitionierten Indizes (mit Ausnahme von systemgenerierten XML-Pfadindizes) für die Tabelle definiert sein.
REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P1
REORG TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P2
REORG INDEXES ALL FOR TABLE T1 ALLOW NO ACCESS ON DATA PARTITION P3
- Verwenden des Befehls REORG für die Tabelle ohne die Klausel ON DATA PARTITION.
- Verwenden der Anweisung ALTER TABLE für die Tabelle, um eine Datenpartition hinzuzufügen, zuzuordnen oder die Zuordnung für eine Datenpartition aufzuheben.
- Laden von Daten in die Tabelle.
- Ausführen eines Online-Backups, das die Tabelle einschließt.
Wenn in der Tabelle ein gemischtes Zeilenformat enthalten ist, weil die Tabellenwertkomprimierung aktiviert oder inaktiviert ist, kann eine Offlinetabellenreorganisation alle vorhandenen Zeilen in das Zeilenformat des Ziels konvertieren.
Wenn die Tabelle auf mehrere Datenbankpartitionen verteilt ist und die Tabelle- oder Indexreorganisation für eine der betroffenen Datenbankpartitionen fehlschlägt, wird die Tabellen- oder Indexreorganisation nur für die fehlgeschlagenen Datenbankpartitionen rückgängig gemacht.
Ist die Reorganisation nicht erfolgreich, müssen temporäre Dateien nicht gelöscht werden. Der Datenbankmanager verwendet diese Dateien, um die Datenbank wiederherzustellen.
Wenn der Name eines Index angegeben wird, reorganisiert der Datenbankmanager die Daten entsprechend der Reihenfolge im Index. Geben Sie zur Maximierung der Leistung einen Index an, der häufig in SQL-Abfragen verwendet wird. Wenn kein Indexname angegeben ist und ein Clusterindex vorhanden ist, werden die Daten entsprechend dem Clusterindex sortiert.
Mit dem Wert PCTFREE einer Tabelle wird die Menge des freien Speicherbereichs pro Seite festgelegt. Ist der Wert nicht festgelegt, füllt das Dienstprogramm auf jeder Seite so viel Speicherbereich wie möglich.
Um nach einer Tabellenreorganisation eine aktualisierende Recovery für einen Tabellenbereich auszuführen, müssen sowohl reguläre als auch große Tabellenbereiche für die aktualisierende Recovery aktiviert sein.
Wenn die Tabelle LOB-Spalten enthält, die nicht die Option COMPACT verwenden, kann das Speicherobjekt für LOB-Daten nach der Tabellenreorganisation bedeutend größer sein. Dieser Schritt kann das Ergebnis der Reihenfolge sein, in der die Zeilen reorganisiert wurden, und der verwendeten Tabellenbereiche (SMS oder DMS).
Indizes zu XML-Daten können mithilfe des Befehls REORG INDEXES/TABLE erneut erstellt werden. Weitere Informationen finden Sie unter Neuerstellung von Indizes zu XML-Daten.
Durch eine Inplace-Reorganisationsoperation mit REORG ist es möglicherweise nicht möglich, Speicherbereich in einer Tabelle vollständig freizugeben, da durch diese Operation interne Datensätze nicht verschoben werden können.
Ein Seitenzuordnungsindex wird intern verwendet, um Seiten in nach Spalten organisierten Tabellen zu verfolgen. Ein Änderungsstatusindex, der bei Indexsuchen verwendet wird, kann beim Erstellen von Indizes für nach Spalten organisierte Tabellen erstellt werden. Teil der Speicherbereichsverwaltung für nach Spalten organisierte Tabellen ist die Verwaltung des Speicherbereichs, der von Indizes verwendet wird, einschließlich der Seitenzuordnungs-und Änderungsstatusindizes. Durch die Reorganisation der Tabelle werden in den Indizes für die Seitenzuordnung pseudogelöschte Schlüssel generiert. Aktualisierungsoperationen führen zu pseudogelöschten Schlüsseln im Index für den Änderungsstatus. Aktualisierungs- und Löschoperationen führen zu pseudogelöschten Schlüsseln in regulären Indizes. Erwägen Sie zum Bereinigen der pseudogelöschten Schlüssel die Ausführung des Befehls REORG INDEXES, wobei Sie die Parameter CLEANUP und RECLAIM EXTENTS angeben, oder die Ausführung des Befehls REORG INDEXES mit dem Parameter CLEANUP. Wenn die automatische Tabellenverwaltung aktiviert ist, verwaltet sie den Bereinigungs- und Speicherfreigabeprozess für Indizes.
