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).

Mit der Tabellenoption wird eine Tabelle durch Wiederherstellen der Zeilen (zum Beseitigen von fragmentierten Daten) und durch Komprimierung der Informationen reorganisiert. In einer partitionierten Tabelle können Sie eine einzelne Partition reorganisieren.
Einschränkung: Die Onlineindexreorganisation wird in Db2® pureScale® -Umgebungen nicht unterstützt und schlägt mit SQL1419Nfehl.

Bereich

Dieser Befehl wirkt sich auf alle Datenbankpartitionen in der Datenbankpartitionsgruppe aus.

Berechtigung

Eine der folgenden Berechtigungen:
  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • DBADM
  • SQLADM
  • Zugriffsrecht CONTROL für die Tabelle

Erforderliche Verbindung

Datenbank

Befehlssyntax

Read syntax diagramSkip visual syntax diagramREORGINDEXES ALL FOR TABLEtable-nameINDEXindex-nameFOR TABLEtable-nameIndex clauseTABLEtable-nameTable clauseTable partitioning clause Database partition clause
Index clause
Read syntax diagramSkip visual syntax diagramALLOW NO ACCESSALLOW WRITE ACCESSALLOW READ ACCESSREBUILDspace-reclaim-options
space-reclaim-options
Read syntax diagramSkip visual syntax diagramCLEANUPALLPAGESRECLAIM EXTENTS
Table clause
Read syntax diagramSkip visual syntax diagramCLASSICclassic-optionsINPLACEinplace-optionsSTOPPAUSERECLAIM EXTENTSALLOW WRITE ACCESSALLOW READ ACCESSALLOW NO ACCESS
classic-options
Read syntax diagramSkip visual syntax diagramALLOW NO ACCESSALLOW READ ACCESSUSEtbspace-nameINDEXindex-nameINDEXSCANLONGLOBDATAUSElongtbspace-nameKEEPDICTIONARYRESETDICTIONARY
inplace-options
Read syntax diagramSkip visual syntax diagram ALLOW WRITE ACCESSALLOW READ ACCESS FULLINDEXindex-nameTRUNCATE TABLENOTRUNCATE TABLECLEANUP OVERFLOWS STARTRESUME
Table partitioning clause
Read syntax diagramSkip visual syntax diagramON DATA PARTITIONpartition-name
Database partition clause
Read syntax diagramSkip visual syntax diagramONDBPARTITIONNUMDBPARTITIONNUMSPartition selection clauseALL DBPARTITIONNUMSEXCEPTDBPARTITIONNUMDBPARTITIONNUMSPartition selection clause)
Partition selection clause
Read syntax diagramSkip visual syntax diagram( ,db-partition-number1TOdb-partition-number2 )

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 wird
Die 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 ACCESS1
REORG TABLE Partitionierte Tabelle Nicht angegeben
ALLOW NO ACCESS1
REORG TABLE (Für die Tabelle sind keine Indizes oder ausschließlich partitionierte Indizes definiert.) Partitionierte Tabelle ON DATA PARTITION
ALLOW NO ACCESS,
ALLOW READ ACCESS1
REORG TABLE (In der Tabelle sind außer systemgenerierten XML-Pfadindizes keine nicht partitionierten Indizes definiert.) Partitionierte Tabelle ON DATA PARTITION
ALLOW NO ACCESS1
Hinweis:
  1. 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.

Die folgenden Elemente gelten für eine partitionierte Datentabelle, wenn die Klausel ON DATA PARTITION mit dem Befehl REORG INDEXES ALL angegeben wird:
  • 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.
In der folgenden Tabelle sind die unterstützten Zugriffsmodi für die Indexreorganisation partitionierter und nicht partitionierter Tabellen aufgeführt:
Tabelle 3. Unterstützte Zugriffsmodi für die Indexreorganisation in partitionierten und nicht partitionierten Tabellen
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
Hinweis:
  1. Standardmodus, wenn keine Zugriffsklausel angegeben ist.
  2. 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.

Für REORG TABLE RECLAIM EXTENTS gilt die Zugriffsklausel bei Angabe der Klausel ON DATA PARTITION nur für die benannte Partition. Benutzer können Lese- oder Schreibvorgänge für die restliche Tabelle ausführen, während die Speicherbereiche in der angegebenen Partition freigegeben werden. Diese Situation gilt auch für die Standardzugriffsebenen.

ALLOW NO ACCESS
Gibt für REORG TABLE RECLAIM EXTENTS an, dass kein anderer Benutzer auf die Tabelle zugreifen kann, während die Speicherbereiche freigegeben werden.
ALLOW READ ACCESS
Gibt für REORG TABLE RECLAIM EXTENTS an, dass andere Benutzer Lesezugriff auf die Tabelle haben können, während die Speicherbereiche freigegeben werden.
ALLOW WRITE ACCESS
Gibt für REORG TABLE RECLAIM EXTENTS an, dass andere Benutzer Lese- und Schreibvorgänge für die Tabelle ausführen können, während die Speicherbereiche freigegeben werden. Dieser Wert ist die Standardoption.

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 COMPRESS für die Tabelle YES lautet 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 Attribut COMPRESS die Einstellung YES lautet 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 Attribut COMPRESS für die Tabelle die Einstellung NO hat 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:
  1. 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 COMPRESS für die Tabelle die Einstellung YES hat, 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 Attribut COMPRESS für die Tabelle die Einstellung NO hat 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:
  1. 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.
  2. 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.
  3. 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

Es sind die Tabellen in einer Datenbankpartitionsgruppe zu reorganisieren, die aus den Datenbankpartitionen 1, 3 und 4 besteht.
CALL SYSPROC.ADMIN_CMD ('REORG TABLE employee 
   INDEX empid ON DBPARTITIONNUM (1,3,4)')

Hinweise zur Verwendung

Einschränkungen:
  • 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.

Mit Db2 9.7 Fixpack 1 und höher können REORG TABLE -Befehle, die die Option CLASSIC verwenden, und REORG INDEXES ALL -Befehle für eine partitionierte Datentabelle abgesetzt werden, um gleichzeitig verschiedene Datenpartitionen oder partitionierte Indizes auf einer Partition zu reorganisieren. Wenn Datenpartitionen oder die partitionierten Indizes für eine Partition gleichzeitig reorganisiert werden, können Benutzer auf die nicht betroffenen Partitionen zugreifen. Ein Zugriff auf die betroffenen Partitionen ist nicht möglich. Es müssen alle folgenden Kriterien erfüllt sein, um REORG-Befehle abzusetzen, die gleichzeitig für dieselbe Tabelle ausgeführt werden:
  • 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.
Für eine partitionierte Tabelle 'T1', die keine nicht partitionierten Indizes (außer systemgenerierten XML-Pfadindizes) hat und die Partitionen P1, P2, P3 und P4 aufweist, können folgende REORG-Befehle gleichzeitig ausgeführt werden:
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
Operationen wie die folgenden werden nicht unterstützt, wenn Sie gleichzeitig mehrere REORG-Befehle verwenden:
  • 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.