===== Oracle 12c / 11g RAC - Backup und Recovery Überlegungen ===== Das Cluster an sich ist recht robust gegenüber dem Verlust von den wichtigsten Cluster Platten. Allerdings sollte die Umgebung zu vor so aufgebaut werden, das möglichst wenig passiert, wenn eine der Platten mit wichtigen Cluster Dateien verloren geht. Auf einer ganz anderen Seite steht der Verlust der gesamten Installation / Konfiguration eines Clusters Knoten, z.b. durch einen defekt der internen Platten. Hier führt das schnell zu einer Neuinstallation eines Clusters! demnächst mehr Zu Oracle ASM und Disk Handling siehe auch [[dba:asm_platten_verteilen|Oracle ASM 12c - Oracle Disk Groups über zwei Storages verteilen - Ein Oracle Cluster für zwei Brandabschnitte verteilen]] ---- ==== Härtung der Gesamtumgebung ==== Wichtige Grundregeln: * OCR mehrfach auf verschiedene ASM Diskgruppen spieglen # Hinzufügen $GRID_HOME/bin/ocrconfig -add +REDOA $GRID_HOME/bin/ocrconfig -add +REDOB # Testen $GRID_HOME/bin/ocrcheck * Auf die Verteilung der VOT Files achten, mit Failgroups auf der ASM Diskgroup arbeiten um hier die gewünschte Verteilung zu erzielen$GRID_HOME/bin/crsctl query css votedisk * Wo liegt die PWD Datei ASM Instance?asmcmd pwget --asm * Wo liegt der SPFILE der ASM Instance? asmcmd spget sql>show parameter spfile ---- ==== Sicherung der Gesamtumgebung ==== Die wichtigsten Dateien für das Cluster für die eine tägliche Sicherung sind: * Globale OCR Files - automatisch alle 4 h auf einem der Cluster Knoten (unter „$GRID_HOME/cdata//*.ocr“ ) * ASM PWD File * ASM SPFile * ASM Diskgroup Metadata Zusätzlich sind folgende Dateien für den Neuaufbau eines ganzen Cluster Knotens hilfreich: * /etc/oracle/* * /var/opt/oracle/* * GPNP Profile * GPNP Wallets * ORACLE LOCAL REGISTRY (OLR) * Welche Software mit welchen Patch war installiert (Spool on opatch lsinventory) * Wie sah das Disk Layout der Maschine aus (ASM Disk Namen zu SAN Konfiguration) ==OCR Files == Werden automatisch alle 4 h auf einem der Cluster Knoten unter „$GRID_HOME/cdata//*.ocr“ abgelegt Vorhandene Backups anzeigen: $GRID_HOME/bin/ocrconfig -showbackuploc The Oracle Cluster Registry backup location is [/opt/12.1.0.2/grid/cdata/] $GRID_HOME/bin/ocrconfig -showbackup .. $GRID_HOME/bin/ocrconfig -showbackup ... racdb01 2016/09/14 19:38:22 /opt/12.1.0.2/grid/cdata/racdbcluster/backup00.ocr 2960019305 racdb02 2016/09/06 06:22:00 /opt/12.1.0.2/grid/cdata/racdbcluster/backup01.ocr 2960019305 ... Backup manuell anlegen: $GRID_HOME/bin/ocrconfig -manualbackup Das kann zum Beispiel in die regelmäßige Backup Strategie mit aufgenommen werden. ==ASM PWD File== #get the ASM PWD NAME ASM_PWD_NAME=`${ORACLE_HOME}/bin/asmcmd pwget --asm` echo "-- Info : save PWD file from ASM => ${ASM_PWD_NAME}" ${ORACLE_HOME}/bin/asmcmd pwcopy --asm ${ASM_PWD_NAME} ${BACKUP_DEST}/${ORACLE_DBNAME}/orapw${ORACLE_DBNAME}_${DAY_OF_WEEK} ==ASM Spfile == Zum Beispiel mit einem Trace: .. # Run Script to generate Copy of pfile # ${ORACLE_HOME}/bin/sqlplus / as sysasm << EOScipt CREATE pfile='${BACKUP_DEST}/${ORACLE_DBNAME}/init_${ORACLE_DBNAME}_${DAY_OF_WEEK}.ora' FROM spfile; exit; EOScipt .. ==ASM Diskgroup Metadata== #Save Disk and Directroy Configuration # rm ${BACKUP_DEST}/${ORACLE_DBNAME}/asm_configuration${ORACLE_SID}_${DAY_OF_WEEK}.trc ${ORACLE_HOME}/bin/asmcmd md_backup -b ${BACKUP_DEST}/${ORACLE_DBNAME}/asm_configuration${ORACLE_SID}_${DAY_OF_WEEK}.trc == ASM San Konfiguration == # save the lun configuration of the node1 # echo "----=== Layout of ASM to physikal disks ===---" > ${BACKUP_DEST}/${ORACLE_DBNAME}/asmdisks_lun_config_${ORACLE_DBNAME}_${DAY_OF_WEEK}.log echo " " >> ${BACKUP_DEST}/${ORACLE_DBNAME}/asmdisks_lun_config_${ORACLE_DBNAME}_${DAY_OF_WEEK}.log ls -la /dev/oracleasm/disks/* >> ${BACKUP_DEST}/${ORACLE_DBNAME}/asmdisks_lun_config_${ORACLE_DBNAME}_${DAY_OF_WEEK}.log echo "---=== ASM to OS Disk Layout ===---" >> ${BACKUP_DEST}/${ORACLE_DBNAME}/asmdisks_lun_config_${ORACLE_DBNAME}_${DAY_OF_WEEK}.log # Get the Oracle ASM to os disk mapping for DISK in `ls -m1 /dev/oracleasm/disks/` do majorminor=`sudo /usr/sbin/oracleasm querydisk -d $DISK | awk '{print $10 $11}' | tr -d '[]' | tr ',' ' ' ` major=`echo $majorminor | awk '{print $1}'` minor=`echo $majorminor | awk '{print $2}'` device=`ls -l /dev | awk '{print $5 " " $6 "- " $10}' | grep "$major, $minor-" | awk '{print $3}'` echo "Oracle ASM Disk Device: $DISK => OS device: /dev/$device with id $majorminor" >> ${BACKUP_DEST}/${ORACLE_DBNAME}/asmdisks_lun_config_${ORACLE_DBNAME}_${DAY_OF_WEEK}.log done ==Script Library für den Backup des Clusters== Im ganzen finden Sie die obigen Skript Stücke in der Datei => [[https://orapowershell.codeplex.com/SourceControl/latest#bash/backup/backupASM.sh|backupASM.sh]] und [[https://orapowershell.codeplex.com/SourceControl/latest#bash/backup/backupGRID.sh|backupGRID.sh]]. * [[https://orapowershell.codeplex.com/|SQL / Bash und Powershell Scripts für die Oracle Datenbank - Backup und Administration ]] * NEU => Umzug auf gitHub => https://github.com/gpipperr/OraPowerShell (in Arbeit, noch leer) ---- ==== Szenario - Verlust aller VOT Files ==== Gehen alle VOT Files verloren, zum Beispiel weil alle VOT Files auf Platten nur in einem Storage liegen, müssen diese nur neu aufgebaut werden, ein Einspielen eines Backups ist nicht notwendig. Ablauf: * Cluster auf allen Knoten stoppen $GRID_HOME/bin/crsctl stop crs -f * Falls notwendig Plattenfehler beheben, ASM Disks im OS neu erzeugen und ASM Disks auf allen Knoten neu einlesen * Cluster auf Knoten 1 exklusiv starten - "$GRID_HOME/bin/crsctl start crs -excl" * ASM Diskgroupe auf dem die VOT Files liegen sollen neu oder wieder herstellen (Auf min 3 Fail Groups für Normal Redundancy, 5 Fail Groups für High Redundancy). * VOT Files neu anlegen mit "$GRID_HOME/bin/crsctl replace votedisk +VOT" * Cluster stoppen - "$GRID_HOME/bin/crsctl stop crs" * Cluster wieder auf allen Knoten starten -"$GRID_HOME/bin/crsctl start crs" ==TestCase== * RAC verfügt über zwei Storage Systeme (siehe [[dba:asm_platten_verteilen|Oracle ASM 12c - Oracle Disk Groups über zwei Storages verteilen - Ein Oracle Cluster für zwei Brandabschnitte verteilen]] * Alle VOT Platten liegen nun nur im Storage 2 create diskgroup VOTSPARE_S2 failgroup storage21 disk '/dev/oracleasm/disks/VOT4_02' name S2VOT4 SIZE 6143M failgroup storage22 disk '/dev/oracleasm/disks/VOT2_02' name S2VOT2 SIZE 6143M failgroup storage23 disk '/dev/oracleasm/disks/VOT3_02' name S2VOT3 SIZE 6143M; # Attribute setzen ALTER DISKGROUP VOTSPARE_S2 SET ATTRIBUTE 'compatible.asm'='11.2.0.0.0'; ALTER DISKGROUP VOTSPARE_S2 SET ATTRIBUTE 'compatible.rdbms'='11.2.0.0.0'; #Auch auf zweiten Knoten mounten SYS@+ASM2-racdb02>alter diskgroup VOTSPARE mount; # VOT auf diesen Bereich umgezogen # export GRID_HOME=/opt/12.1.0.2/grid # Vot Files prüfen: $GRID_HOME/bin/crsctl query css votedisk # VOT Files umziehen $GRID_HOME/bin/crsctl replace votedisk +VOTSPARE_S2 $GRID_HOME/bin/crsctl query css votedisk * Storage 2 wird "eingeforen" Was passiert nun? Auszug aus dem CRS Log: 2016-09-14 21:02:49.154 [OCSSD(3302)]CRS-1606: The number of voting files available, 0, is less than the minimum number of voting files required, 2, resulting in CSSD termination to ensure data integrity; details at (:CSSNM00018:) in /opt/oracle/diag/crs/racdb01/crs/trace/ocssd.trc Cluster reparieren als user **root**: export GRID_HOME=/opt/12.1.0.2/grid # Auf beiden Knoten den Cluster Stack sauber stoppen # Knoten 2 stoppen => $GRID_HOME/bin/crsctl stop crs -f # Nacheinander stoppen! Beim gleichzeitigen stoppen blockiert sich das nur gegenseitig und dauert länger! # Knoten 1 stoppen => $GRID_HOME/bin/crsctl stop crs -f # # Das Stoppen des Clusters kann recht lange dauern ..... # > 10min! # prüfen ob auch alles gestoppt ist: ps uafx | grep grid # Nur Knoten 1 exclusive und ohne geöffnete VOT Files öffnen: # $GRID_HOME/bin/crsctl start crs -excl # Vot Files prüfen: $GRID_HOME/bin/crsctl query css votedisk Located 0 voting disk(s). # Nun eine neue Diskgroup erstellen oder eine zuvor erzeugte Ersatzgruppe verwenden # In unseren Fall nun unsere Storage wieder aktivieren! # Nach der Reparatur diese wieder neu Initialisieren $GRID_HOME/bin/crsctl replace votedisk +VOT Successful addition of voting disk 9f63300a40f44fd2bfe26ff318c4191b. Successful addition of voting disk 7305b25c1dbc4fadbfff9946032f512d. Successful addition of voting disk dec881078ce14f34bfcb1f595f27d54d. Successfully replaced voting disk group with +VOT. # Vot Files prüfen: $GRID_HOME/bin/crsctl query css votedisk # --------------- # Cluster auf Knoten 1 wieder stoppen $GRID_HOME/bin/crsctl stop crs # Etwas warten, damit sich auch wirklich alles beendet hat ps uafx | grep grid # Cluster wieder starten $GRID_HOME/bin/crsctl start crs # Etwas Geduld haben # Prüfen ob auch alles wieder oben ist, $GRID_HOME/bin/crsctl stat res -t -init $GRID_HOME/bin/crsctl check cluster # Bei Bedarf zur Not dann manuell neu starten $GRID_HOME/bin/crsctl start res ora.crsd -init # Zweiten knoten nun auch wieder starten $GRID_HOME/bin/crsctl start crs $GRID_HOME/bin/crs_stat -t -v # Nun alle Platten sorgfältig prüfen und bei Bedarf alles wieder online setzen Aus diesem Test Folgt: Die eigentlichen VOT Files werden nicht gesichert, sondern können bei Bedarf neu erstellt werden ---- ==== Szenario - Verlust aller OCR Files==== Eigentlich sollte es nicht vorkommen das alle OCR Files "verloren" gehen, es lassen sich bis zu 5 unterschiedliche ASM Gruppen dafür definieren. Sollte es aber doch vorkommen, muss ein Backup der Datei existieren, zum Glück wird die OCR Datei automatisch von Cluster Stack nach alle 4 h auf einen der beteiligten Knoten unter **"$GRID_HOME/cdata//*.ocr"** historisiert gesichert. Hier die neuste Datei auf allen Knoten suchen und verwenden. Der Restore wird mit "$GRID_HOME/bin/ocrconfig -restore backup00.ocr" nach der Reperatur der orginal Location durchgeführt. Ablauf: * Cluster auf allen Knoten stoppen - "$GRID_HOME/bin/crsctl stop crs -f" * Plattenfehler beheben, ASM Disks im OS neu erzeugen und ASM Disks auf allen Knoten neu einlesen * Cluster auf Knoten 1 exklusiv starten - "$GRID_HOME/bin/crsctl start crs -excl" * ASM Diskgroupe auf dem die OCR Files lagen wieder herstellen * OCR wieder einspielen "$GRID_HOME/bin/ocrconfig -restore backup00.ocr" * Cluster stoppen - "$GRID_HOME/bin/crsctl stop crs" * Cluster wieder auf allen Knoten starten -"$GRID_HOME/bin/crsctl start crs" === Test Case === Vorhandene Backups anzeigen: $GRID_HOME/bin/ocrconfig -showbackuploc The Oracle Cluster Registry backup location is [/opt/12.1.0.2/grid/cdata/] $GRID_HOME/bin/ocrconfig -showbackup .. $GRID_HOME/bin/ocrconfig -showbackup ... racdb01 2016/09/14 19:38:22 /opt/12.1.0.2/grid/cdata/racdbcluster/backup00.ocr 2960019305 racdb02 2016/09/06 06:22:00 /opt/12.1.0.2/grid/cdata/racdbcluster/backup01.ocr 2960019305 ... Backup manuell anlegen: $GRID_HOME/bin/ocrconfig -manualbackup Das kann zum Beispiel in die regelmäßige Backup Strategie mit aufgenommen werden. ---- ---- ==== Label einer Platte geht verloren ==== Nach einer Störung im Storage verschwindet plötzlich eine Platte und ist nicht mehr in Oracle ASM sichbar. Suchen: #als root oracleasm scandisks oracleasm listdisks Disk ist nicht mehr in der Liste enthalten Über Device ID etc, prüfen das die Platte auch richtig da ist. Prüfen: oracleasm querydisk /dev/sdc1 Device "/dev/sdc1" defines a device with no label Kopf mit od uslesen: -- Kopf auslesen od -c -N 120 /dev/sdc1 0000000 001 202 001 002 \0 \0 \0 \0 001 \0 \0 200 ] 304 345 251 0000020 W 362 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000040 O R C L D I S K \0 \0 \0 \0 \0 \0 \0 \0 0000060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000100 \0 \0 020 \f 001 \0 002 003 A C F S _ 0 0 0 0000120 1 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000140 \0 \0 \0 \0 \0 \0 \0 \0 A C F S \0 \0 \0 \0 0000160 \0 \0 \0 \0 \0 \0 \0 \0 0000170 * => Schlecht: 0000040 O R C L D I S K \0 \0 \0 \0 \0 \0 \0 \0 * => Gut: 0000040 O R C L D I S K A C F S 0 1 \0 \0 Mit kfed den Plattenkopf auslesen lassen: $GRID_HOME/bin/kfed read /dev/sdc1 | grep name kfdhdb.dskname: ACFS_0001 ; 0x028: length=9 kfdhdb.grpname: ACFS ; 0x048: length=4 kfdhdb.fgname: STORAGE2 ; 0x068: length=8 kfdhdb.capname: ; 0x088: length=0 => das ist die Platte die wir vermissen Pürfen ob die Platte eine logischen Fehler hat: $GRID_HOME/bin/kfed read /dev/sdc1 # Ausgabe auf Fehler wie # Pürfen KFED-00322: Invalid content encountered during block traversal: KFED-00322: file not found; arguments: .. # Reperatur falls notwendig $GRID_HOME/bin/kfed repair /dev/sdc1 Auch nach der Reperatur düfte das Label nicht wieder lesbar sein: oracleasm querydisk /dev/sdc1 Device "/dev/sdc1" defines a device with no label Gefährlich für die Datenintegrität, genau prüfen das alles auch passt ! Neu setzen oracleasm renamedisk -f /dev/sdc1 ACFS01_02 Writing disk header: done Instantiating disk "ACFS01_02": done oracleasm querydisk /dev/sdc1 Device "/dev/sdc1" is marked an ASM disk with the label "ACFS01_02" od -c -N 120 /dev/sdc1 .. 0000040 O R C L D I S K A C F S 0 1 _ 0 .. oracleasm listdisks #auf zweiten Knoten erkennen lassen oracleasm scandisks Platte wieder einbinden: alter diskgroup ACFS online disks in failgroup STORAGE2; prüfen ob der Diskgroup name jetzt auch wirklich noch vorhanden ist: od -c -N 120 /dev/sdc1 .. 0000040 O R C L D I S K A C F S 0 1 _ 0 .. === Problem DISK_REPAIR_TIME Attribute Expired === als sys as syasm SYS@+ASM2-tng1db02>alter diskgroup RECO01 online disks in failgroup STORAGE2; alter diskgroup RECO01 online disks in failgroup STORAGE2 * ERROR at line 1: ORA-15032: not all alterations performed ORA-15281: not all specified disks were brought ONLINE ORA-15284: ASM terminated ALTER DISKGROUP ONLINE Im Alert file der ASM Instance: SQL> alter diskgroup RECO01 online disks in failgroup STORAGE2 NOTE: cache closing disk 9 of grp 3: (not open) _DROPPED_0009_RECO01 NOTE: cache closing disk 16 of grp 3: (not open) _DROPPED_0016_RECO01 NOTE: cache closing disk 17 of grp 3: (not open) _DROPPED_0017_RECO01 NOTE: cache closing disk 18 of grp 3: (not open) _DROPPED_0018_RECO01 NOTE: cache closing disk 19 of grp 3: (not open) _DROPPED_0019_RECO01 NOTE: cache closing disk 20 of grp 3: (not open) _DROPPED_0020_RECO01 NOTE: cache closing disk 21 of grp 3: (not open) _DROPPED_0021_RECO01 NOTE: GroupBlock outside rolling migration privileged region NOTE: initiating resync of disk group 3 disks _DROPPED_0009_RECO01 (9) _DROPPED_0016_RECO01 (16) _DROPPED_0017_RECO01 (17) _DROPPED_0018_RECO01 (18) _DROPPED_0019_RECO01 (19) _DROPPED_0020_RECO01 (20) _DROPPED_0021_RECO01 (21) WARNING: Disk 9 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 16 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 17 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 18 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 19 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 20 in group 3: state 0x6 mode 0x1 cannot be onlined WARNING: Disk 21 in group 3: state 0x6 mode 0x1 cannot be onlined NOTE: failed resync of disk group 3 disks NOTE: all disks already online or none could be onlined in disk group 3 disks ORA-15032: not all alterations performed ORA-15281: not all specified disks were brought ONLINE ORA-15284: ASM terminated ALTER DISKGROUP ONLINE ERROR: alter diskgroup RECO01 online disks in failgroup STORAGE2 **Lösung**: Platten neu mit dem Force Flag hinzufügen: ALTER diskgroup REDO01 ADD failgroup STORAGE2 disk '/dev/oracleasm/disks/REDO0_S2' name REDO0S2 force; siehe auch: * How To Add Back An ASM Disk or Failgroup (Normal or High Redundancy) After A Transient Failure Occurred Or When The DISK_REPAIR_TIME Attribute Expired (10.1 to 12.1)? (Doc ID 946213.1) * How to change the DISK_REPAIR_TIME timer after disk goes offline from failgroup (Doc ID 1404123.1) * ASM 11g New Features - How ASM Disk Resync Works. (Doc ID 466326.1) ---- ==== ASM SPFile geht verloren ==== Geht das SPFIle verloren, startet zwar die ASM Instance aber es fehlen wichtige Informationen und es werden keine Platten mehr gemounted. Damit sind auch alle OCR Disks nicht verfügbar, das Cluster startet nicht. Es ist sehr hilfreich nun ein Backup des SPfile zur Hand zu haben, fehlt auch dies hilft ein Blick in den ASM Alert.log in der Hoffnung das dort noch die Informationen vom letzten Start Vorgang zu finden sind. Using parameter settings in server-side spfile +VOT/racdbcluster/ASMPARAMETERFILE/registry.253.875025183 System parameters with non-default values: large_pool_size = 12M remote_login_passwordfile= "EXCLUSIVE" asm_diskstring = "/dev/oracleasm/disks/*" asm_diskstring = "/opt/oracle/VOTNFSDISK/vote_nfs_disk01" asm_diskgroups = "DATA" asm_diskgroups = "FRA" asm_diskgroups = "REDOA" asm_diskgroups = "REDOB" asm_diskgroups = "ACFS" asm_diskgroups = "VOT" asm_diskgroups = "VOTSPARE" asm_diskgroups = "VOTSPARE_S2" asm_power_limit = 1 * Cluster wieder stopen mit $GRID_HOME/bin/crsctl stop crs -f * Plattenfehler im Storage reparieren und Platten einbinden/prüfen das die Platten auch erkannt werden! * Cluster in exclusive mode starten $GRID_HOME/bin/crsctl start crs -excl * ASM Instance asm_diskstring und asm_diskgroups parameter mit den obigen Daten setzen alter system set asm_diskstring='/dev/oracleasm/disks/*','/opt/oracle/VOTNFSDISK/vote_nfs_disk01' scope=memory sid='*'; alter system set asm_diskgroups='DATA','FRA','REDOA','REDOB','ACFS','VOT','VOTSPARE','VOTSPARE_S2' scope=memory sid='*'; * Alle Diskgroup mit "alter diskgroup all mount" wieder anhängen, alle Plattenfehler heben * Spfile neu erzeugen create spfile='+VOT' from memory; * Cluster wieder stoppen $GRID_HOME/bin/crsctl stop crs * Cluster wieder starten $GRID_HOME/bin/crsctl start crs ---- ==== Quellen ==== Netz: * https://dbamarco.wordpress.com/2015/05/04/did-you-ever-lost-your-grid-infrastructure-diskgroup/ Support Portal * DOC ID 1053147.1 - 11gR2 Clusterware and Grid Home - What You Need to Know * DOC ID 1050908.1 - Troubleshoot Grid Infrastructure Startup Issues * DOC ID 1077094.1 - How to fix the "DiscoveryString" in profile.xml or "asm_diskstring" in ASM if set wrongly * DOC ID 1062983.1 - How to restore ASM based OCR after complete loss of the CRS diskgroup on Linux/Unix systems * DOC ID 1193643.1 - How to backup or restore OLR in 11.2/12c Grid Infrastructure * DOC ID 1482803.1 - How to backup a Grid Infrastructure installation * DOC ID 1644005.1 - How to Restore ASM Password File if Lost ( ORA-01017 ORA-15077 ) * DOC ID 1589394.1 - How to Move/Recreate GI Management Repository to Different Shared Storage (Diskgroup, CFS or NFS etc) * DOC ID 1485597.1 - ASM tools used by Support : KFOD, KFED, AMDU * DOC ID 1332725.1 - ORA-29780 / CRS-2316 / CRS-2317:Fatal error: cannot get local GPnP security keys (wallet) * DOC ID 2113995.1 - "oracleasm listdisk" Does not Show ASM Labeled Disks () DOAG: * http://www.doag.org/formes/servlet/DocNavi?action=getFile&did=7951981&key= siehe auch Quellen unter => [[dba:asm_platten_verteilen|Oracle ASM 12c - Oracle Disk Groups über zwei Storages verteilen - Ein Oracle Cluster für zwei Brandabschnitte verteilen]]