Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie ändere ich die Größe des Tablespace für meinen Amazon RDS für die Oracle-DB-Instance?
Ich möchte wissen, wie ich den Tablespace für meinen Amazon Relational Database Service (Amazon RDS) für die Oracle-DB-Instance verwalten oder seine Größe ändern kann.
Kurzbeschreibung
Der Standardtyp des Tablespace bei DB-Instances von Amazon RDS für Oracle ist bigfile. Es ist keine bewährte Methode, smallfile-Tablespaces für deine RDS für Oracle-DB-Instances zu verwenden.
Eine RDS für Oracle-DB-Instance, die einen smallfile-Tablespace verwendet, hat die folgenden Einschränkungen:
- Du kannst den Befehl ALTER DATABASE nicht ausführen, um die Größe der Datendatei zu ändern oder die Datendateikonfigurationen zu ändern. Weitere Informationen findest du unter Einschränkungen für DBA-Rechte in RDS für Oracle.
- Du musst den Parameter db_files manuell verwalten, um die maximale Anzahl von Datendateien in der Datenbank zu definieren. Wenn die Anzahl der Datendateien sich dem Kontingent genähert hat, musst du den Parameter db_files ändern.
Wenn du Tablespaces erstellst und keine Datendateigröße angibst, aktiviert Amazon RDS standardmäßig AUTOEXTEND ON. Die maximale Größe von bigfile-Tablespaces beträgt 16 TiB. Wenn du Daten in den Tablespace einfügst, vergrößert sich der Tablespace auf das maximale Kontingent, das du konfigurierst, oder auf das maximale Kontingent für zugewiesenen Speicher.
Wenn der zugewiesene Speicher für die Oracle-DB-Instance im RDS voll ist, wechselt die Instance in den Status STORAGE_FULL und Tablespaces können nicht erweitert werden. Um dieses Problem zu beheben, musst du der Instance Speicherplatz hinzufügen. Weitere Informationen findest du unter Wie löse ich Probleme, die auftreten, wenn den Amazon-RDS-DB-Instances der Speicherplatz ausgeht?
Wenn du Daten aus einem Tablespace löschst, verringert sich die Größe des Tablespace nicht. Wenn du neue Daten einfügst, kannst du die freien Blöcke wiederverwenden. Du musst die Größe des Tablespace manuell ändern, um den ungenutzten Speicherplatz zurückzugewinnen.
Lösung
Hinweis: Ersetze in den folgenden Befehlen TABLESPACE_NAME oder example-tablespace durch den Namen deines Tablespace.
Die Konfiguration des Tablespace überprüfen
Führe die folgende Abfrage aus, um den Tablespace-Typzu identifizieren:
SELECT TABLESPACE_NAME, CONTENTS, BIGFILE FROM DBA_TABLESPACES;
Der vorherige Befehl gibt möglicherweise die folgende Ausgabe zurück:
- Die Spalte BIGFILE kann den Wert JA für BIGFILE oder NEIN für SMALL FILE haben.
- Die Spalte CONTENTS kann permanent, undo (für Rollbacks) oder temporary (temporär) sein.
Führe eine der folgenden Abfragen aus, um die Größe der Datendatei und das von dir konfigurierte maximale Kontingent zu überprüfen, sowie um zu prüfen, ob die Funktion autoextend (automatische Erweiterung) aktiviert ist.
Führe für permanente Tablespaces und Undo-Tablespaces die folgende Abfrage aus:
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
Führe für temporäre Tablespaces die folgende Abfrage aus:
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
Die vorherigen Befehle geben möglicherweise die folgenden Ausgaben zurück:
- Wenn die Funktion autoextend (automatische Erweiterung) nicht aktiviert ist, ist der MAX_GB-Wert gleich 0.
- Wenn der Tablespace-Typ smallfile ist, hängt der MAX_GB-Wert von der Blockgröße ab, die du zum Erstellen des Tablespace verwendet hast. Wenn die Blockgröße beispielsweise 8 K beträgt, beträgt der MAX_GB-Wert 32 GB. Weitere Informationen findest du unter Nonstandard Block Sizes (Nicht standardmäßige Blockgrößen) auf der Oracle-Website.
- Wenn der Tablespace-Typ bigfile ist, wird der Wert von MAX_GB als 32 TB angezeigt. Die maximale Größe einer einzelnen Datei auf RDS für Oracle-DB-Instances beträgt 16 TiB.
Führe die folgenden Befehle aus, um die erforderlichen Informationen über den Tablespace aus der Datenbeschreibungssprache (DDL) abzurufen:
SET LINESIZE 400;
SET LONG 99999;
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','example-tablespace') FROM DUAL;
Den Tablespace vergrößern
Wenn du die Funktion autoextend (automatische Erweiterung) aktivierst, musst du den Tablespace nicht vergrößern.
Wenn du jedoch die autoextend (automatische Erweiterung) aktivierst und dann die Größe des Tablespace änderst, musst du beim Ändern der Größe die folgenden Maßnahmen ergreifen:
-
Führe für bigfile-Tablespaces den folgenden Befehl aus, um die Größe des Tablespace zu ändern:
ALTER TABLESPACE example-tablespace RESIZE 50G;Hinweis: Gib die Größe in Kilobyte, Megabyte, Gigabyte oder Terabyte an. Der bigfile-Tablespace hat eine einzige Datendatei, und der Befehl ALTER TABLESPACE ändert die Größe der Datendatei, die zum Tablespace gehört. Weitere Informationen findest du unter ALTER TABLESPACE auf der Oracle-Website.
-
Führe bei smallfile-Tablespaces den folgenden Befehl aus, um Datendateien hinzuzufügen und den Tablespace zu vergrößern:
ALTER TABLESPACE example-tablespace ADD DATAFILE SIZE 1G AUTOEXTEND ON; -
Führe bei smallfile-Tablespaces den folgenden Befehl aus, um die Prozedur rdsadmin_util.resize_datafile zu verwenden, sodass du die Größe einer ursprünglichen Datendatei ändern kannst:
select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST';Hinweis: Ersetze TEST durch den Namen des Tablespace.
Beispiel für eine Ausgabe der Prozedur:
FILE_ID FILE_NAME GB ======================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 1 SQL> exec rdsadmin.rdsadmin_util.resize_datafile(6,'2G') PL/SQL procedure successfully completed. SQL> select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST'; FILE_ID FILE_NAME GB ========================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 2
Die Größe eines smallfile-Tablespace reduzieren
Gehe wie folgt vor, um die Größe eines smallfile-Tablespace zu reduzieren:
- Verwende die Prozedur rdsadmin_util.resize_datafile.
Hinweis: Du kannst die Größe einer Datendatei nicht auf einen Wert reduzieren, der unter dem Höchstwert der Datendatei liegt. - Erstelle einen neuen Tablespace und konfiguriere dann den Bereich für deine Anforderungen.
- Verschiebe manuell alle deine Daten in den neuen Tablespace.
Die Größe eines bigfile-Tablespace reduzieren
Wenn du einen bigfile-Tablespace verwendest, wähle eine der folgenden Methoden, um die Größe des Tablespace zu reduzieren.
Permanente Tablespaces
Wenn du versuchst, die Größe des permanenten Tablespace auf einen Wert zu reduzieren, der unter dem Höchstwert des Tablespace liegt, schlägt deine Größenänderung fehl. Dann erhältst du die folgende Fehlermeldung:
„ORA-03297: file contains used data beyond requested RESIZE value.“
Wenn die Größe des Tablespace größer als der Grenzwert ist, kannst du die Größe des permanenten Tablespace auf den Grenzwert reduzieren.
Wenn der Höchstwert beispielsweise 40 GB beträgt und die Größe des Tablespace 50 GB beträgt, reduziere den Tablespace auf 40 GB.
Beispielbefehl zum Ändern der Größe des Tablespace:
ALTER TABLESPACE example-tablespace RESIZE 40G;
Wenn du die Größe des Tablespace nicht auf einen Wert reduzieren kannst, der dem Höchstwert entspricht, gehe wie folgt vor:
- Reorganisiere die Objekte im Tablespace.
- Erstelle einen neuen Tablespace und verschiebe alle Objekte in den neuen Tablespace. Lösche dann den alten Tablespace.
Temporärer Tablespace
Führe den folgenden Befehl aus, um einen temporären Tablespace zu reduzieren:
ALTER TABLESPACE example-tablespace SHRINK SPACE KEEP 100M;
Um die Größe des temporären Tablespace in einem Lesereplikat zu ändern, nimm rdsadmin.rdsadmin_util.resize_temp_tablespace in den folgenden Befehl auf:
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('example-tablespace','100M');
Oder erstelle einen weiteren temporären Tablespace und lege den neuen Tablespace als Standard fest.
Führe die folgenden Schritte aus:
-
Führe die folgende Abfrage aus, um den aktuellen temporären Standard-Tablespace anzuzeigen:
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';Hinweis: Weitere Informationen findest du unter Viewing information about tablespaces (Informationen zu Tablespaces anzeigen) auf der Oracle-Website.
-
Führe den folgenden Befehl aus, um einen weiteren temporären Tablespace zu erstellen und die erforderliche Größe zu konfigurieren:
CREATE TEMPORARY TABLESPACE example-tablespace TEMPFILE SIZE 100M; -
Führe den folgenden Befehl aus, um den neuen temporären Tablespace als temporären Standard-Tablespace festzulegen:
EXEC RDSADMIN.RDSADMIN_UTIL.ALTER_DEFAULT_TEMP_TABLESPACE(TABLESPACE_NAME => 'example-tablespace');
Gehe wie folgt vor, um einen temporären Tablespace für eine(n) bestimmte(n) Benutzer:in zu ändern:
-
Führe die folgende Abfrage aus, um den aktuellen temporären Standard-Tablespace für den/die Benutzer:in anzuzeigen:
SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS where USERNAME='example_username'; -
Führe den folgenden Befehl aus, um den temporären Standard-Tablespace zu ändern:
ALTER USER example_username TEMPORARY TABLESPACE example-tablespace;
Undo-Tablespaces
Führe die folgenden Schritte aus:
-
Führe die folgende Abfrage aus, um den Undo-Tablespace zu identifizieren, der derzeit verwendet wird:
SHOW PARAMETER UNDO_TABLESPACE; -
Führe den folgenden Befehl aus, um die Größe des Undo-Tablespace zu reduzieren:
`ALTER TABLESPACE example-tablespace RESIZE 40G;`
Wenn die Abfrage nicht ausgeführt wird, führe die folgenden Schritte aus:
-
Führe den folgenden Befehl aus, um einen neuen Undo-Tablespace zu erstellen:
CREATE UNDO TABLESPACE example-new-tablespace DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 100G;**Hinweis:**Ersetze example-new-tablespace durch den Namen des neuen Undo-Tablespace.
-
Führe den folgenden Befehl aus, um den Undo-Tablespace als Standard-Tablespace in den Parametergruppen festzulegen:
UNDO_TABLESPACE = example-new-tablespaceHinweis: Da UNDO_TABLESPACE ein dynamischer Parameter ist, treten keine Ausfallzeiten auf, wenn du ihn änderst. Es empfiehlt sich jedoch, die DB-Instance neu zu starten, nachdem du einen Parameter geändert hast. Weitere Informationen findest du unter Managing Undo (Undo verwalten) auf der Oracle-Website.
-
Führe die folgende Abfrage aus, um zu überprüfen, ob der neue Undo-Tablespace-Parameter der Standard-Tablespace ist:
SHOW PARAMETER UNDO_TABLESPACE; -
Führe den folgenden Befehl aus, um den alten Undo-Tablespace zu löschen:
DROP TABLESPACE example-tablespace INCLUDING CONTENTS AND DATAFILES;
Ähnliche Informationen
Automatische Kapazitätsverwaltung mit der automatischen Speicherskalierung von Amazon RDS
Warum verwendet meine DB-Instance von Amazon RDS für Oracle mehr Speicher als ich erwartet habe?
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 8 Monaten
AWS OFFICIALAktualisiert vor 7 Monaten