Ansicht
Dokumentation

RSDU_PART_GENERIC_IDX_DIS_ORA - Add a partition to a partitioned table in a generic way

RSDU_PART_GENERIC_IDX_DIS_ORA - Add a partition to a partitioned table in a generic way

General Data in Customer Master   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Spezifikation des Bausteins RSDU_PART_GENERIC_ADD:

Dieser Baustein legt neue Partitionen zu einer existierenden partitionierten Tabelle an.

Es gibt bereits die Baustein RSDU_TABLE_ADD_PARTITIONund RSDU_TABLE_SPLIT_PARTLIST, die jedoch nur für Datenbanken einsetzbar sind, die analog zu Oracle partitionieren. Unter Verwendung von Oraclehat eine Liste von High Values eine andere Bedeutung als bei anderen Datenbanken. Ein High Value beschreibt bei Oracle genau eine einzige Partition (wobei aber noch der Low Value spezifiziert werden müßte, um den Wertebereich einer Partition genau zu kennen). Ein High Value beschreibt aber z.B. bei SQL Server zwei Partitionen, die durch diesen High Value geteilt werden. Bei anderen Datenbanken ist eine vollständige Angabe von Wertebereichen (Low und High Value) erforderlich. Des Weiteren wird bei den Bausteinen RSDU_TABLE_ADD_PARTITIONund RSDU_TABLE_SPLIT_PARTLISTimmer vorausgesetzt, dass der High Value eine Lower Than Bedingung beinhaltet. Auch diese Voraussetzung ist nicht bei allen Datenbanken gegeben.

Daher wurde ein generischer Baustein RSDU_PART_GENERIC_ADDentwickelt, der Beschreibungen zu löschender Partitionen über halboffene Intervalle mit Lowund High Value (RANGE Partitionierung) bzw. Festwerten (LIST Partitionierung) verwendet. Bei Range Partitionierung kann spezifiziert werden, ob ein Low oder High Value noch zur Wertemenge dazu gehört (inclusive) oder nicht (exclusive).

RANGE Partitionierung
Bei RANGE Partitionierung können neue Partitionen nur am 'oberen' Ende der Tabelle angehängt werden. Das Einfügen von Partitionen (Split) wird derzeit nicht unterstützt, da die Funktion bislang nicht auf allen DB Plattformen verfügbar ist. Neue Partitionen müssen immer stetig an die oberste existierende Partition anschließen.

LIST Partitionierung
Bei LIST Partitionierung können neue Partitionen angelegt werden, wenn es keine Überschneidungen mit den Wertebereichen existierender Partitionen gibt. Die erlaubten Werte (Werteliste) einer neuen Partition müssen immer mit dem Operator 'EQ' angegeben werden.

Multi Dimensional Clusterin (MDC)
Multidimensionales Clustering (MDC) wird derzeit nur von DB2/UDB unterstützt. Da neue Extents hier bei Bedarf dynamisch von der DB angelegt werden, muss der FB RSDU_PART_GENERIC_ADD nicht ausgeführt werden. Für MDC Tabellen wird deshalb immer die Ausnahme 'not implemented' zurückgeliefert.

Prüfung neu anzulegender Partitionen
Um zu überprüfen, ob neu anzulegende Partitionen der Spezifikation desFBs RSDU_PART_GENERIC_ADDgenügen, werden sie mit den Wertebereichen aller existierenden Partitionen verglichen. Die Wertebereiche (Feld condition) werden dazu in abstrakte Mengenobjekte umgewandelt und auf Schnittmenge, Gleichheit, Obermenge und Stetigkeit verprüft. Um die Verprüfung bei RANGE Partitionierung zu beschleunigen, wird eine neu anzulegende Partition nur gegen die oberste bereits existierende Partition verglichen (maximale Partitionsnummer).
Wertebereiche existierender Partitionen werden mit Hilfe des FBs RSDU_GENERIC_INFO_GET besorgt und nach dem erfolgreichen Anlegen einer neuen Partition nachgelesen.

Import:

Tabellename (i_tablnm)
Name der Tabelle, für die eine oder mehrere Partitionen neu angelegt werden sollen.

Neu anzulegende Partitionen (i_ts_add)
Tabelle mit generischer Beschreibung von Partitionen, die neu angelegt werden sollen. Die generische Beschreibung einer Partition beinhaltet den Partitionsnamen (partition_name), die Partitionsnummer (partition_number), eine openSQL Einschränkung (condition) und eine interne Tabelle (t_part_ranges). Die interne Tabelle t_part_ranges ist obligatorisch, alle anderen Tabellenfelder sind optional und werden vom Funktionsbaustein nach Bedarf gefüllt. Details zur generischen Beschreibung von Partitionen sind in der Dokumentation zum Funktionsbaustein RSDU_GENERIC_INFO_GET zu finden.
Wird i_ts_add versorgt, dann muss i_s_add initial sein.

Neu anzulegenden Partition(i_s_add)
Generische Beschreibung einer Partitionen, die neu angelegt werden soll. Details zur generischen Beschreibung einer Partition sind in der Dokumentation zum Funktionsbaustein RSDU_GENERIC_INFO_GET zu finden.
Wird i_s_add versorgt, dann muss i_ts_add initial sein.

Simulieren (i_simulate)
Das Anlegen von Partitionen wird nur simuliert. Das Protokoll, inklusive DDL Statement, wird aber auch hier gefüllt.

Export:

Protokoll (e_t_prot)
Protokolle über das Anlegen von Partitionen. Die Tabelle e_t_prot beinhaltet Partitionsnamen (partition_name), Wertebereich einer Partition (condition), DDL Statement (ddl_statement), Art der Aktion (action), SQL Fehlernummer (sql_errno) und SQL Fehlertext (sql_errtxt).

Ausnahmen:

TABLE_NOT_EXISTS,,
Die angegebene Tabelle existiert nicht

TABLE_NOT_PARTITIONED
Die angegebene Tabelle ist nicht partitioniert

PARTITION_ALREADY_EXISTS
Eine anzulegende Partition existiert bereits

ADD_PARTITION_FAILED
Das Anlegen einer Partition ist fehlgeschlagen. Üblicherweise ein SQL Fehler.

WRONG_IMPORT_PARAMETERS
Importparameter sind falsch oder doppeldeutig. Tritt z.B. auf, wenn
a) sowohl i_s_add als auch i_ts_add sind gefüllt
b) weder i_s_add noch i_ts_add sind gefüllt
c) 'EQ' Bedingungen bei RANGE Partitionierung verwendet werden
d) Excluding Bedingungen (SIGN = 'E') existieren
e) das Feld low in t_part_ranges initial ist
f) das Feld option in t_part_ranges andere Werte als LT, LE, EQ, GE, GT enthält

UNALLOWED_INTERSECTION
Definition einer Partition paßt nicht zum existierenden Partitionierungsschema

BREAK_IN_RANGES
Durch die neue Partition entsteht eine Lücke im Partitionierungsbereich

NOT_IMPLEMENTED
DB abhängiger Teil ist nicht implementiert

INHERITED_ERROR,,
inherited error

Beispiel

Hinweise

Weiterführende Informationen





Parameter

E_T_PROT
I_CONNECTION
I_SIMULATE
I_TABLNM
I_TS_PART

Ausnahmen

DISABLE_PART_INDEXES_FAILED
INHERITED_ERROR
NOT_IMPLEMENTED
PARTITION_NOT_EXISTS
TABLE_NOT_EXISTS
TABLE_NOT_PARTITIONED
WRONG_IMPORT_PARAMETERS

Funktionsgruppe

RSDU_PART_ORA

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8703 Date: 20240523 Time: 101758     sap01-206 ( 139 ms )