Ich werde hier ausführlich beschreiben wie man eine SAP Oracle Datenbank mit Hilfe der SAP brtools online reorganisieren kann. Die kleinen Helfer sind schon etwas älter, sollten aber noch funktionieren. Ggf. verfügen die brtools mittlerweile über neue oder erweiterte Funktionen. Das SAP System in diesem Beispiel heißt SAP P01 und ist historisch gewachsen. Das Vorgehen wird anhand des PSAPERP Tablespaces beschrieben.
Vorarbeiten
Backup Backup Backup! Auch wenn die Änderungen transparent vorgenommen werden, so sollte vor Beginn der Arbeiten immer zuvor ein Fullbackup (ob online mit Archivelogs oder offline) erstellt werden. Für den Reorg benötigt man je nach Datenbankgröße einiges an Plattenplatz. Der brarchive Prozess wird sehr viele Archivelogs sichern – ggf. sollte also hier das Backupupsystem auf etwas mehr als das übliche Sicherungsvolumen vorbereitet sein oder schlichtweg mehr Sessions zur Verfügung gestellt werden. Zudem sollten die brtools in der neusten verfügbaren Version installiert sein. Dies ist besonders wichtig weil hier nicht nur ständig Fehler behoben werden, sondern auch immer mal Funktionserweiterungen eingepflegt werden.
Informationen zum Reorg mit den brtools findet man hier: 646681 – Reorganisation von Tabellen mit BRSPACE
ERWEITERUNG PLATTENPLATZ
Die bestehenden Filesysteme werden um jeweils 1,5 TB erweitert – für den Reorg wird mind. der doppelte Speicherplatz +x des zu reorganisierenden Tablespaces sowie temporärer Platz im psaptemp benötigt.
/oracle/P01/sapdata1 + 1,5 TB /oracle/P01/sapdata2 + 1,5 TB /oracle/P01/sapdata3 + 1,5 TB /oracle/P01/sapdata4 + 1,5 TB Nach der Erweiterung verfügbarer Platz: /dev/lvoraarch 1152.00 1130.04 2% 17 1% /oracle/P01/oraarch /dev/lvsapdata1 3518.00 1926.59 46% 9282 1% /oracle/P01/sapdata1 /dev/lvsapdata2 3058.00 2020.96 34% 118 1% /oracle/P01/sapdata2 /dev/lvsapdata3 2760.00 1839.65 34% 98 1% /oracle/P01/sapdata3 /dev/lvsapdata4 3509.00 1670.05 53% 19557 1% /oracle/P01/sapdata4
Prüfung des Parameters db_files
Um den neuen Tablespace anlegen zu können muss es der Datenbank möglich sein, genügend neue Datenfiles zu erstellen. Ist der Parameter db_files zu klein gesetzt (Default 256) kann es passieren, dass der neue Tablespace aufgrund der Parameterbeschränkungen nicht angelegt werden kann, da die Menge der benötigten DB Files zu hoch ist. Der Parameter kann nur durch einen Oracle Neustart verändert werden.
SQL> show parameter db_files; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_files integer 1024 SQL> 256 * 32 GB -> max 8,1 TB 1024 * 32 GB -> max 32,7 TB
Prüfung auf das Vorhandensein von Long-Feldern
Long Felder innerhalb von Tabellen können nicht per brspace-Tabellenreorg reorgansisiert werden. Daher muss vor dem Reorg geprüft werden, dass es keine Felder vom Typ Long im online zu reorganisierenden Tablespace gibt.
SQL> select TABLE_NAME, COLUMN_NAME from dba_tab_columns where owner='SAPERP' and data_type = 'LONG'; TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ PLAN_TABLE OTHER
Die Plan_Table kann gedropt werden, siehe Oracle Hinweis: https://docs.oracle.com/cd/B28359_01/server.111/b28320/statviews_5127.htm#REFRN29510
Vorbereitung neuer Tablespace
Die Größe des aktuellen Tablespaces beträgt (netto) ca. 4.942.385 MB
Für die Berechung der Menge der benötigten Datenfiles wurde dieser Wert mit einem Buffer versehen:
Aktuell TS Größe PSAPERP: 4.968.207 MB / 32767 -> 152 Files
Da man nicht abschätzen kann, ob die Größe sich verringert, gleich bleibt oder ggf. wächst werden 4 Dateien a 32 GB als Puffer eingeplant. Sollte der Platz nicht reichen, so kann der Tablespace entsprechend erweitert werden.
Hieraus ergeben sich also 156 Files a 32 GB für den neuen Tablespace. Da dieser möglichst gleichmäßig auf die bestehenden 4 sapdata Verzeichnisse verteilt werden soll wird die Anzahl der Files durch 4 geteilt. Entsprechend 156 / 4 -> 39 Datafiles pro sapdata Filesystem.
Anlegen des neuen Tablespaces
Per brspace-Befehl (empfohlen)
brspace -u / -f tscreate -t PSAPERP2 -d both -l all
Per SQL im sqlplus
Bitte beachten, dass die Zielordner zuvor manuell angelegt werden müssen, da Oracle hier nicht selbst tätig wird (im Gegensatz zu den brtools)! Ansonsten schlägt das Anlegen der Files mit einer entsprechenden Fehlermeldung fehl.
!mkdir –p /oracle/P01/sapdata1/erp2_1/ create tablespace PSAPERP2 extent management local autoallocate segment space management auto datafile '/oracle/P01/sapdata1/erp2_1/erp2.data1' size 1000M autoextend on next 500M maxsize 32767M';
Anlegen der Datenfiles für den neuen Tablespace
Syntax: !mkdir –p /oracle/P01/sapdata1/erp2_2 alter tablespace PSAPERP2 add datafile '/oracle/P01/sapdata1/erp2_2/erp2.data2' size 1000M autoextend on next 500M maxsize 32767M
Über die Pseudoschleife innerhalb der While Bedinung des folgenden Scriptes werden die Datenfiles über die SAPDATAs verteilt. So erreicht man ggf. eine bessere Lastverteilung auf den Platten, sofern das Oracle die Files gleichmäßig wachsen lässt und das Storage-Subsystem hier keinen Strich durch die Rechnung macht. Die SID, Pfade sowie Größen und Extends der Files können natürlich nach belieben angepasst werden.
#!/usr/bin/ksh #Script zum Anlegen neuer Datenfiles innerhalb eines TBS #wsp DB_SID=P01 COUNTER=2 COUNTMAX=156 SQL=create_tbs_datafiles.sql TBSFULL=PSAPERP2 TBS=erp2 SAPDNR=1 SAPDATA=/oracle/${DB_SID}/sapdata${SAPDNR}/${TBS}_ [ -f $SQL ] && rm $SQL touch $SQL echo -e "connect / " >> $SQL while [[ $COUNTER -le $COUNTMAX ]] do SAPDATA=/oracle/${DB_SID}/sapdata${SAPDNR}/${TBS}_ echo -e "!mkdir -p ${SAPDATA}${COUNTER}" |tee -a $SQL echo -e "alter tablespace ${TBSFULL} add datafile '${SAPDATA}${COUNTER}/${TBS}.data${COUNTER}' size 100M autoextend on next 100M maxsize 32767M;" |tee -a $SQL let COUNTER=COUNTER+1 let SAPDNR=SAPDNR+1 [[ $SAPDNR -eq 5 ]] && let SAPDNR=1 done echo -e "exit;" >> $SQL vi $SQL sqlplus /NOLOG @$SQL exit 0
PSAPTEMP anpassen
Der Tablespace PSAPTEMP muss entsprechend erweitert werden und sollte hierbei je nach gewünschter Parallelität des Reorgs die Größe der beiden (-p2) drei (-p3)… etc. Tabellen halten können + genügend Reserven für den regulären Betrieb des Systems haben. Sprich er muss das Grundrauschen des Systems sowie die zusätzliche Last durch den Reorg bedienen können.
Für das SAP System P01 sind in diesem Falle ca. 200-300 GB anzusetzen. Das Entspricht 10 Temp-Files:
1100/32 -> 10 zusätzliche Tempfiles für PSAPTEMP
per SQL im sqlplus
!mkdir –p /oracle/P01/sapdata2/temp_2 alter tablespace PSAPTEMP add tempfile '/oracle/P01/sapdata2/temp_2/temp.data2' size 1000M autoextend on next 20M maxsize 32767M; oder per Script:
#!/usr/bin/ksh #Script zum Anlegen neuer Datenfiles im PSAPTEMP #WSP DB_SID=P01 COUNTER=4 COUNTMAX=35 SQL=create_tbs_temp_datafiles.sql [ -f $SQL ] && rm $SQL touch $SQL echo -e "connect / " >> $SQL while [[ $COUNTER -le $COUNTMAX ]] do echo -e "!mkdir -p /oracle/${DB_SID}/sapdata2/temp_${COUNTER}" |tee -a $SQL echo -e "alter tablespace PSAPTEMP add tempfile '/oracle/${DB_SID}/sapdata2/temp_${COUNTER}/temp.data${COUNTER}' size 1000M autoextend on next 500M maxsize 32767M;" |tee -a $SQL let COUNTER=COUNTER+1 done echo "exit;" >> $SQL sqlplus /NOLOG @$SQL exit 0
Brarchive
Aufgrund des sehr hohen Archivelog-Aufkommens während des Online-Rorgs sollte permanent ein brarchive Prozess mitlaufen bzw. sichergestellt sein, dass das FS oraarch auf seinen Füllgrad hin überwacht wird und frühzeitig mit der Sicherung begonnen wird um sich aufbauende Bugwellen bei der Sicherung zu vermeiden und ggf. schwankender TSM Performance vorzubeugen.
Der brrachive wird per nohup in den Hintergrund gelegt und mit –f5 angewiesen, ab 5 Archivelogs im Verzeichnis zu sichern und anschließend auf die nächsten Archivefiles zu warten.
nohup brarchive -sd -c -u / -f 5 &
Tablespace Reorg starten
Aufgrund eines Pufferüberlaufs innerhalb älterer brtools bei (zu) langen DDL Statements sollte vor dem Start entsprechend das Environment geändert werden:
setenv BR_DBL 41943040 setenv BR_MSL 10485760
Da das System produktiv ist darf die Last durch den Reorg nicht zu hoch werden. Auch ein potentes Plattensubsystem wird bei zu viel I/O irgendwann anfangen, die Antwortzeiten zu stark ansteigen zu lassen und das merkt man dann ggf. in kritischen Applikationsbereichen. Daher wird brspace nur mit zwei Prozessen (max. 2 gleichzeitige Tabellen, PSAPTEMP Größe beachten!) gestartet (-p2). Auf eine weitere Beschleunigung per –e 4 wird in der Produktion verzichtet, um die Last nicht zu sehr zu erhöhen. Mit -e 4 wird oracleintern mit 4 Prozessen an der gleichen Tabelle gearbeitet, dies kann die Bearbeitungszeit pro Tabelle enorm verkürzen. Steigert jedoch den notwendigen I/O sehr stark.
brspace -u / -c force -f tbreorg -s PSAPERP -o SAPERP -t allsel -n PSAPERP2 -p 2
Nachdem der Reorglauf abgeschlossen ist sieht man, dass der Tablespace PSAPRERP fast komplett entleert ist:
SQL> select * from dba_tablespace_usage_metrics; TABLESPACE_NAME USED_SPACE TABLESPACE_SIZE USED_PERCENT ------------------------------ ---------- --------------- ------------ PSAPERP 32504 708519040 .004587597 PSAPERP2 464039576 624851083 74.2640268 PSAPERP740X 12296752 20480000 60.0427344 PSAPERPUSR 691984 2560000 27.030625 PSAPTEMP 76032 42376704 .179419334 PSAPUNDO 4695664 36407680 12.8974546 SYSAUX 516656 2560000 20.181875 SYSTEM 242496 2560000 9.4725 8 rows selected. SQL>
Alten Tablespace shrinken
Bevor der alte Tablespace gelöscht wird sollte er zunächst geschrinkt werden.
alter tablespace PSAPERP COALESCE;
per Script:
#!/usr/bin/ksh #Script zum ermitteln der zu shrinkenden Datafiles eines Tablespaces #WSP SQLGETID=get_shrink_tbs_datafiles.sql SQLSHRINKID=shrink_tbs_datafiles.sql DBAID=datafile_ids.txt TBS=PSAPERP SIZE=10 [ -f $SQLGETID ] && rm $SQLGETID touch $SQLGETID echo -e "connect / " >> $SQLGETID echo -e "spool ${DBAID}" >> $SQLGETID echo -e "select FILE_ID from dba_data_files where TABLESPACE_NAME = '${TBS}';" >> $SQLGETID echo -e "spool off" >> $SQLGETID echo -e "exit" >> $SQLGETID sqlplus /NOLOG @$SQLGETID sleep 5 [ -f $DBAID.tmp ] && rm $DBAID.tmp touch $DBAID.tmp grep -v -e FILE_ID -e "-" -e "rows selected" $DBAID >> $DBAID.tmp mv $DBAID.tmp $DBAID [ -f $SQLSHRINKID ] && rm $SQLSHRINKID touch $SQLSHRINKID echo -e "connect / " >> $SQLSHRINKID for i in $(cat $DBAID) do echo -e "alter database datafile ${i} resize ${SIZE}M;" |tee -a $SQLSHRINKID done echo -e "exit" >> $SQLSHRINKID vi $SQLSHRINKID sqlplus /NOLOG @$SQLSHRINKID exit 0
Oracle Steuertabellen im SAP prüfen
Transaktion TX SE16 öffnen und folgende Tabellen auf korrekte Einträge zu PSAPERP2(!) prüfen: TSAORA, IAORA, TAORA
SQL> set pages 200 lines 200 SQL> select * from saperp.iaora; TABART TABSPACE PCTINC OFREELIST OPCTFR --------------- ------------------------------------------------------------------------------------------ ------------ --------- ------ USER4 PSAPERPUSR 0000 001 10 USER5 PSAPERPUSR 0000 001 10 APPL0 PSAPERP2 0000 1 10 APPL1 PSAPERP2 0000 1 10 APPL2 PSAPERP2 0000 1 10 CLUST PSAPERP2 0000 1 10 DDIM PSAPERP2 0000 001 10 DFACT PSAPERP2 0000 004 10 DODS PSAPERP2 0000 004 10 POOL PSAPERP2 0000 1 10 SDIC PSAPERP2 0 1 10 SDOCU PSAPERP2 0000 1 10 SLDEF PSAPERP740X 0000 1 10 SLEXC PSAPERP740X 0000 1 10 SLOAD PSAPERP2 0000 1 10 SPROT PSAPERP2 0000 1 10 SSDEF PSAPERP740X 0000 1 10 SSEXC PSAPERP740X 0000 1 10 SSRC PSAPERP2 0000 1 10 TEMP PSAPERP2 0000 1 10 USER PSAPERPUSR 0000 1 10 USER1 PSAPERPUSR 0000 1 10 22 rows selected. SQL> select * from saperp.taora; TABART TABSPACE PCTINC OFREELIST OFREEG OPCTFR OPCTUS --------------- ------------------------------------------------------------------------------------------ ------------ --------- ------ ------ ------ USER4 PSAPERPUSR 0000 001 01 10 40 USER5 PSAPERPUSR 0000 001 01 10 40 APPL0 PSAPERP2 0000 001 01 10 40 APPL1 PSAPERP2 0000 1 1 10 40 APPL2 PSAPERP2 0000 1 1 10 40 CLUST PSAPERP2 0000 1 1 10 40 DDIM PSAPERP2 0000 001 01 00 60 DFACT PSAPERP2 0000 004 01 10 60 DODS PSAPERP2 0000 004 01 00 60 POOL PSAPERP2 0000 1 1 10 40 SDIC PSAPERP2 0 1 1 10 40 SDOCU PSAPERP2 0000 1 1 10 40 SLDEF PSAPERP740X 0000 1 1 10 40 SLEXC PSAPERP740X 0000 1 1 10 40 SLOAD PSAPERP2 0000 1 1 10 40 SPROT PSAPERP2 0000 1 1 10 40 SSDEF PSAPERP740X 0000 1 1 10 40 SSEXC PSAPERP740X 0000 1 1 10 40 SSRC PSAPERP2 0000 1 1 10 40 TEMP PSAPERP2 0000 1 1 10 40 USER PSAPERPUSR 0000 1 1 10 40 USER1 PSAPERPUSR 0000 1 1 10 40 22 rows selected. SQL> select * from saperp.tsora; TABSPACE INDSPACE ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ PSAPERPUSR PSAPERPUSR PSAPERP PSAPERP PSAPERP740X PSAPERP740X PSAPERP2 PSAPERP2 SQL>
Alten Tablespaceinhalt prüfen
SQL> select TABLE_NAME,TABLESPACE_NAME,PARTITIONED,TABLE_TYPE,DEPENDENCIES from dba_all_tables where TABLESPACE_NAME ='PSAPERP'; no rows selected SQL> select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME ='PSAPERP'; no rows selected SQL> Select SEGMENT_NAME,SEGMENT_TYPE,PARTITION_NAME,TABLESPACE_NAME from dba_segments where TABLESPACE_NAME = 'PSAPERP'; no rows selected SQL>
Sollten hier in Überprüfung noch Objekte angezeigt werden, so müssen diese vor dem Droppen des Tablespaces natürlich in den neuen Tablespace reorganisiert werden! Das BI z.B. legt neue Tabellen/Indizes auch zur Laufzeit an.
Entsprechend explizit über die brtools vor dem Löschen:
- Tabellenreorg
- Indexreorg
- Index-Partition Regorg
Temp Table shrinken und files droppen:
Das folgende Script erlaubt es die generierte SQL Datei vor der eigentlichen Verarbeitung zu bearbeiten. Somit können Tempfiles vom Shrinken/Droppen ausgenommen werden. Hierbei beachten, dass die alte Tablespacegröße für PSAPTEMP wieder hergestellt werden sollte. Sprich die ersten x Files aus dem Script entfernen, damit diese nicht verkleinert und gelöscht werden. Die Temp-Files, die extra für den Reorg angelegt wurden können natürlich gelöscht werden.
per Script: #!/usr/bin/ksh #Script zum ermitteln der zu shrinkenden und droppenden Temp-Datafiles eines Tablespaces #WSP SQLGETID=get_shrink_temp_datafiles.sql SQLSHRINKID=shrink_temp_datafiles.sql DBAID=temp_datafile_ids.txt TBSFULL=PSAPTEMP SIZE=100 [ -f $SQLGETID ] && rm $SQLGETID touch $SQLGETID echo -e "connect / " >> $SQLGETID echo -e "spool ${DBAID}" >> $SQLGETID echo -e "select FILE_ID from dba_temp_files where TABLESPACE_NAME = '${TBSFULL}';" >> $SQLGETID echo -e "spool off" >> $SQLGETID echo -e "exit" >> $SQLGETID sqlplus /NOLOG @$SQLGETID sleep 5 [ -f $DBAID.tmp ] && rm $DBAID.tmp touch $DBAID.tmp grep -v -e FILE_ID -e "-" -e "rows selected" $DBAID >> $DBAID.tmp mv $DBAID.tmp $DBAID [ -f $SQLSHRINKID ] && rm $SQLSHRINKID touch $SQLSHRINKID echo -e "connect / " >> $SQLSHRINKID for i in $(cat $DBAID) do echo -e "alter database tempfile ${i} resize ${SIZE}M;" |tee -a $SQLSHRINKID echo -e "alter database tempfile ${i} drop including datafiles; " |tee -a $SQLSHRINKID done echo -e "exit" >> $SQLSHRINKID echo "\n#####\nAchtung, vi wird jetzt gestartet. Bitte die ersten Tempfiles aus der Liste löschen und speichern!\n#####" sleep 1 echo "." sleep 1 echo ".." sleep 1 echo "..." sleep 3 vi $SQLSHRINKID sleep 5 echo -e "Weiter mit SQLPLUS:" sqlplus /NOLOG @$SQLSHRINKID exit 0
TEMP Tablespace prüfen
SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME, STATUS from dba_temp_files; FILE_NAME -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- FILE_ID TABLESPACE_NAME STATUS ---------- ------------------------------ ------- /oracle/P01/sapdata2/temp_1/temp.data1 1 PSAPTEMP ONLINE /oracle/P01/sapdata2/temp_2/temp.data2 2 PSAPTEMP ONLINE /oracle/P01/sapdata1/temp_3/temp.data3 3 PSAPTEMP ONLINE /oracle/P01/sapdata3/temp_4/temp.data4 4 PSAPTEMP ONLINE /oracle/P01/sapdata4/temp_5/temp.data5 5 PSAPTEMP ONLINE /oracle/P01/sapdata1/temp_6/temp.data6 6 PSAPTEMP ONLINE /oracle/P01/sapdata2/temp_7/temp.data7 7 PSAPTEMP ONLINE /oracle/P01/sapdata3/temp_8/temp.data8 8 PSAPTEMP ONLINE /oracle/P01/sapdata4/temp_9/temp.data9 9 PSAPTEMP ONLINE 9 rows selected. SQL>
Tablespace umbenennen
Zunächst sollte das ABAP System gestoppt werden, damit keine Zugriffe erfolgen und keine weiteren Objekte im alten Tablespace mehr angelegt werden (auch wenn natürlich zu zuvor die Oracle Steuertabellen geprüft wurden kann dies immer vorkommen!). Der Rename der Tablespaces bedingt, dass der Tablespace offline genommen wird!
Den SAP Application Server stoppen – die DB bleibt online.
stopsap R3
Tablespace PSAPERP umbenennen:
brspace -u / -f tsalter -a rename -t PSAPERP -n PSAPERPOLD
oder per SQL:
alter tablespace PSAPERP rename to PSAPERPOLD;
Wichtig hierbei ist, dass die Funktion Table data class (tabart) handling ausgeführt wird. Anschließend wird der neu angelegte PSAPERP2 Tablespace in PSAPERP umbenannt. Somit sieht das TBS Layout des Systems wieder aus wie vor dem Reorg.
brspace -u / -f tsalter -a rename -t PSAPERP2 -n PSAPERP oder per SQL:
alter tablespace PSAPERP2 rename to PSAPERP;
Abschließender Reorg und Tabellencheck
Achtung, nur notwendig, wenn in der Zwischenzeit noch Änderungen am Tablespace stattgefunden haben. Schaden tut dieser Schritt natürlich nicht. Sind genügend Ressourcen vorhanden, so kann man diesen letzten Diff-Reorg natürlich auch mit deutlich mehr benutzen Ressourcen ausführen. Hier werden 16 parallele Prozesse gestartet (16 Tabellen gleichzeitig aus dem zu löschenden Tablespace in den Zieltablespace reorganisiert und oracleintern pro Tabelle 8 worker gestartet, die parallel die Tabelle bearbeiten.
brspace -u / -c force -f tbreorg -s PSAPERPOLD -o SAPERP -t allsel -n PSAPERP -p 16 -e 8
Zusätzlich sollten die Indezes/Index-Partitionen ebenfalls beachtet werden:
brspace -u / -c force -f idrebuild -a rebuild -s PSAPERPOLD -n PSAPERP -p 16
Jetzt werden die Objekte innerhalb des zu löschenden Tablespaces geprüft. Da das SAP gestoppt ist unterstellen wir mal, es greift kein anderes System mehr auf die Datenbank zu und es werden keine Änderungen mehr innerhalb der Datenbank vorgenommen. Somit dürfen in dem zu löschenden Tablespace keine Tabellen, Indizes oder sonstigen Objekte mehr vorhanden sein:
SQL> select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME ='PSAPERPOLD'; no rows selected SQL> select INDEX_NAME, INDEX_TYPE, TABLESPACE_NAME from dba_indexes where TABLESPACE_NAME = 'PSAPERPOLD'; no rows selected
Der Tablespace PSAPERPOLD ist leer und kann gedropped werden. Auch hier ist es wichtig, dass das Table data class (tabart) handling der brtools ausgeführt wird.
brspace -u / -f tsdrop -t PSAPERPOLD
Plan-Table neu anlegen
SQL> select INDEX_NAME, INDEX_TYPE, TABLESPACE_NAME from dba_indexes where TABLESPACE_NAME = 'PSAPERP'; INDEX_NAME INDEX_TYPE TABLESPACE_NAME ------------------------------ --------------------------- ------------------------------ SYS_IL0000604437C00036$$ LOB PSAPERP SQL> Select SEGMENT_NAME,SEGMENT_TYPE,PARTITION_NAME,TABLESPACE_NAME from dba_segments where TABLESPACE_NAME = 'PSAPERP'; SEGMENT_NAME SEGMENT_TYPE PARTITION_NAME TABLESPACE_NAME --------------------------------------------------------------------------------- ------------------ ------------------------------ ------------------------------ PLAN_TABLE TABLE PSAPERP SYS_IL0000604437C00036$$ LOBINDEX PSAPERP SYS_LOB0000604437C00036$$ LOBSEGMENT PSAPERP SQL> drop table PLAN_TABLE; Table dropped. SQL> commit; Commit complete. SQL> select INDEX_NAME, INDEX_TYPE, TABLESPACE_NAME from dba_indexes where TABLESPACE_NAME = 'PSAPERP'; no rows selected SQL> @/oracle/P01/11203/rdbms/admin/utlxplan.sql Table created. SQL> commit; Commit complete. SQL> Select SEGMENT_NAME,SEGMENT_TYPE,PARTITION_NAME,TABLESPACE_NAME from dba_segments where TABLESPACE_NAME = 'PSAPERP'; no rows selected SQL>
SAP starten und die DB Statistiken aktualisieren
Das SAP System kann jetzt wieder gestartet werden.
startsap
Anschließend sollten die Statistiken für den neuen Tablespace erstellt werden. Da in diesem Beispiel auf Ressourcen keine Rücksicht genommen werden muss mit 32 parallelen Prozessen:
nohup brconnect -u / -c -f stats -t PSAPERP -f collect -p 32 &
Oracle Steuertabellen prüfen
Die Transaktion TX SE16 öffnen und folgende Tabellen auf korrekte Einträge zu PSAPERP und PSAPERP2 (!) überprüfen. Da der alte PSAPERP Tablespace zwischenzeitig umbenannt und gelöscht wurde und der neue Tablespace PSAPERP2 ebenfalls umbenannt wurde, dürfen entsprechend dem aktuellen Systemzustand nur Tablespace-Einträge für PSAPERP vorhanden sein. PSAPERP2 oder PSAPERPOLD dürfen nicht mehr vorhanden sein und müssen, sofern dies doch der Fall sein sollte, entsprechend in PSAPERP umgeschrieben werden.
SQL> select * from saperp.iaora; TABART TABSPACE PCTINC OFREELIST OPCTFR --------------- ------------------------------------------------------------------------------------------ ------------ --------- ------ USER4 PSAPERPUSR 0000 001 10 USER5 PSAPERPUSR 0000 001 10 APPL0 PSAPERP 0000 1 10 APPL1 PSAPERP 0000 1 10 APPL2 PSAPERP 0000 1 10 CLUST PSAPERP 0000 1 10 DDIM PSAPERP 0000 001 10 DFACT PSAPERP 0000 004 10 DODS PSAPERP 0000 004 10 POOL PSAPERP 0000 1 10 SDIC PSAPERP 0 1 10 SDOCU PSAPERP 0000 1 10 SLDEF PSAPERP740X 0000 1 10 SLEXC PSAPERP740X 0000 1 10 SLOAD PSAPERP 0000 1 10 SPROT PSAPERP 0000 1 10 SSDEF PSAPERP740X 0000 1 10 SSEXC PSAPERP740X 0000 1 10 SSRC PSAPERP 0000 1 10 TEMP PSAPERP 0000 1 10 USER PSAPERPUSR 0000 1 10 USER1 PSAPERPUSR 0000 1 10 22 rows selected. SQL> select * from saperp.taora; TABART TABSPACE PCTINC OFREELIST OFREEG OPCTFR OPCTUS --------------- ------------------------------------------------------------------------------------------ ------------ --------- ------ ------ ------ USER4 PSAPERPUSR 0000 001 01 10 40 USER5 PSAPERPUSR 0000 001 01 10 40 APPL0 PSAPERP 0000 001 01 10 40 APPL1 PSAPERP 0000 1 1 10 40 APPL2 PSAPERP 0000 1 1 10 40 CLUST PSAPERP 0000 1 1 10 40 DDIM PSAPERP 0000 001 01 00 60 DFACT PSAPERP 0000 004 01 10 60 DODS PSAPERP 0000 004 01 00 60 POOL PSAPERP 0000 1 1 10 40 SDIC PSAPERP 0 1 1 10 40 SDOCU PSAPERP 0000 1 1 10 40 SLDEF PSAPERP740X 0000 1 1 10 40 SLEXC PSAPERP740X 0000 1 1 10 40 SLOAD PSAPERP 0000 1 1 10 40 SPROT PSAPERP 0000 1 1 10 40 SSDEF PSAPERP740X 0000 1 1 10 40 SSEXC PSAPERP740X 0000 1 1 10 40 SSRC PSAPERP 0000 1 1 10 40 TEMP PSAPERP 0000 1 1 10 40 USER PSAPERPUSR 0000 1 1 10 40 USER1 PSAPERPUSR 0000 1 1 10 40 22 rows selected. SQL> select * from saperp.tsora; TABSPACE INDSPACE ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ PSAPERPUSR PSAPERPUSR PSAPERP740X PSAPERP740X PSAPERP PSAPERP SQL>
- Die Tabellen TAORA (Tabellen) bzw. IAORA (Indizes) enthalten die Zuordnung TABART -> Tablespace.
- Die Tabellen TGORA (Tabellen) bzw. IGORA (Indizes) enthalten die Zuordnung TABKAT -> Speicherparameter.
- Die Tabelle TSORA enthält die Zuordnung Tabellen-Tablespace -> Index-Tablespace.
- Die Tabelle DD09L enthält TABKAT und TABART für alle Objekte mit technischen Einstellungen.
- Die Tabellen DDART und DARTT enthalten Informationen über die verfügbaren TABARTen.