Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso ridimensionare il tablespace per la mia istanza database Amazon RDS per Oracle?
Voglio sapere come gestire o ridimensionare il tablespace per la mia istanza database Amazon Relational Database Service (Amazon RDS) per Oracle.
Breve descrizione
Il tipo di tablespace predefinito per le istanze database di Amazon RDS per Oracle è bigfile. Non è consigliabile utilizzare tablespace smallfile per le istanze RDS per Oracle.
Un'istanza RDS per Oracle che utilizza un tablespace smallfile presenta le seguenti limitazioni:
- Poiché il comando ALTER DATABASE non è supportato in RDS for Oracle, non è possibile eseguire la query ALTER DATABASE per ridimensionare o modificare le configurazioni del file di dati. Per ulteriori informazioni, consulta Limitations for Oracle DBA privileges.
- È necessario gestire manualmente il parametro db_files per definire il numero massimo di file di dati nel database. Quando il numero di file di dati è vicino a questo limite, modifica il parametro db_files.
Se non si specifica una dimensione del file di dati, AUTOEXTEND ON è attivato per impostazione predefinita quando si creano tablespace. La dimensione massima dei tablespace bigfile è 16 TiB (tebibyte). Quando si inseriscono dati nel tablespace, il tablespace aumenta fino al limite massimo configurato richiesto dal tablespace. Oppure, il tablespace aumenta fino al limite massimo di storage allocato per l'istanza RDS.
Se lo spazio di archiviazione allocato per l'istanza RDS è pieno, l'istanza passa allo stato STORAGE_FULL e i tablespace non possono essere estesi. Per risolvere questo problema, devi aggiungere spazio di archiviazione alla tua istanza. Per maggiori informazioni, consulta How do I resolve problems that occur when Amazon RDS DB instances run out of storage?
Quando i dati vengono eliminati da un tablespace, la dimensione del tablespace non si riduce. I blocchi liberi possono essere riutilizzati quando vengono inseriti nuovi dati. È necessario ridimensionare manualmente il tablespace per recuperare lo spazio inutilizzato.
Risoluzione
Per ridimensionare il tablespace per l'istanza RDS per Oracle, completa i passaggi seguenti.
Verifica la configurazione del tablespace
Completa i passaggi seguenti:
- Per identificare i tipi di tablespace, esegui una query simile all'esempio seguente:
Nota che i tipi di tablespace possono essere permanent, undo, temporary, smallfile o bigfile.SQL> SELECT TABLESPACE_NAME, CONTENTS, BIGFILE FROM DBA_TABLESPACES;
- Per verificare la dimensione del file di dati, il limite massimo configurato, e verificare se la funzionalità autoextend è attiva, esegui le seguenti query. Per i tablespace permanent e undo, esegui la seguente query:
Per i tablespace temporary, esegui la seguente query:SQL> 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;
SQL> 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;
Potresti visualizzare i seguenti dettagli nell'output di queste query:
- Se la funzionalità autoextend non è attivata, il valore di MAX_GB è uguale a 0.
- Se il tipo di tablespace è smallfile, il valore di MAX_GB dipende dalla dimensione del blocco utilizzata per creare il tablespace. Ad esempio, se la dimensione del blocco utilizzata è 8 K, il valore di MAX_GB è 32 GB. Per ulteriori informazioni, consulta Nonstandard Block Sizes sul sito web di Oracle.
- Se il tipo di tablespace è bigfile, il valore di MAX_GB appare come 32 TB. La dimensione massima di un singolo file su RDS per le istanze database Oracle è di 16 TiB.
Per recuperare il linguaggio di descrizione dei dati (DDL) per il tablespace, esegui le seguenti query:
SQL> SET LINESIZE 400
SQL> SET LONG 99999
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','example-tablespace') FROM DUAL;
È possibile recuperare le informazioni richieste sul tablespace dal DDL restituito.
Aumenta le dimensioni del tablespace
Se si attiva la funzionalità autoextend, non è necessario aumentare le dimensioni del tablespace.
Tuttavia, quando si attiva la funzionalità autoextend e quindi si ridimensiona il tablespace, è necessario soddisfare i seguenti requisiti.
Per i tablespace bigfile, per ridimensionare il tablespace, esegui il comando ALTER TABLESPACE:
SQL> ALTER TABLESPACE example-tablespace RESIZE 50G;
Per ulteriori informazioni, consulta ALTER TABLESPACE sul sito web di Oracle. Specifica la dimensione in kilobyte (K), megabyte (M), gigabyte (G) o terabyte (T). Il tablespace bigfile ha un singolo file di dati e il comando ALTER TABLESPACE ridimensiona il file di dati che appartiene al tablespace.
Per i tablespace smallfile, aggiungi file di dati per aumentare le dimensioni del tablespace:
SQL> ALTER TABLESPACE example-tablespace ADD DATAFILE SIZE 1G AUTOEXTEND ON;
Per ridimensionare un file di dati originale in un tablespace smallfile, esegui rdsadmin_util.resize_datafile:
SQL> select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST';
Il tuo risultato è simile a questo:
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
Riduci le dimensioni del tablespace
Per ridurre le dimensioni di un tablespace smallfile, completa i seguenti passaggi:
- Per ridurre le dimensioni di un tablespace smallfile, esegui rdsadmin_util.resize_datafile.
Nota: non è possibile ridurre le dimensioni di un file di dati a un valore inferiore alla filigrana massima del file di dati. - Crea un nuovo tablespace e configura lo spazio in base alle esigenze. Quindi, sposta manualmente tutti i tuoi dati nel nuovo tablespace.
Se il tuo tablespace è bigfile, per ridurne le dimensioni in base al tipo di tablespace, scegli uno dei seguenti metodi.
Per i tablespace permanent, non è possibile ridurne le dimensioni a un valore inferiore alla filigrana massima del tablespace. Quando si tenta di ridimensionare un tablespace permanent, l'operazione di ridimensionamento non riesce. Quindi, viene visualizzato il seguente errore:
ORA-03297: file contains used data beyond requested RESIZE value
Tuttavia, per ridurre le dimensioni del tablespace a 40 GB quando il tablespace ha una dimensione di 50 GB e una filigrana massima di 40 GB, esegui la seguente query:
SQL> ALTER TABLESPACE example-tablespace RESIZE 40G;
Se non riesci a ridurre le dimensioni del tablespace a un valore inferiore alla filigrana massima, considera le seguenti opzioni:
- Riorganizza gli oggetti nel tablespace.
- Crea un nuovo tablespace e sposta tutti gli oggetti nel nuovo tablespace.
- Elimina il vecchio tablespace.
Per i tablespace temporary, per ridurne le dimensioni, esegui il comando SHRINK:
SQL> ALTER TABLESPACE example-tablespace SHRINK SPACE KEEP 100M;
Per ridimensionare i tablespace temporanei in una replica di lettura, esegui rdsadmin.rdsadmin_util.resize_temp_tablespace:
SQL> EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('example-tablespace','100M');
-oppure-
Crea un altro tablespace temporary e configura le dimensioni richieste. Quindi, imposta il nuovo tablespace temporary come tablespace temporary predefinito.
-
Per visualizzare il tablespace temporary predefinito corrente, esegui la seguente query:
SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';
Per ulteriori informazioni, consulta Viewing Information About Tablespaces sul sito web di Oracle.
-
Per creare un nuovo tablespace temporary, esegui la seguente query:
SQL> CREATE TEMPORARY TABLESPACE example-tablespace TEMPFILE SIZE 100M;
-
Per impostare il nuovo tablespace temporary come tablespace temporary predefinito, esegui la seguente query:
SQL> EXEC RDSADMIN.RDSADMIN_UTIL.ALTER_DEFAULT_TEMP_TABLESPACE(TABLESPACE_NAME => 'example-tablespace');
Per modificare il tablespace temporary per un utente specifico, completa questi passaggi:
-
Per visualizzare il tablespace temporary predefinito corrente per l'utente, esegui la seguente query:
SQL> SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS where USERNAME='example_username';
-
Per modificare il tablespace temporary predefinito per l'utente, esegui la seguente query:
SQL> ALTER USER example_username TEMPORARY TABLESPACE example-tablespace;
Per i tablespace undo, utilizza il comando ALTER TABLESPACE per ridurre le dimensioni del tablespace undo.
Per identificare il tablespace undo attualmente in uso, esegui la seguente query:
SQL> SHOW PARAMETER UNDO_TABLESPACE;
Per ridurre le dimensioni del tablespace undo, esegui una query simile alla seguente query di esempio:
Se la query non viene eseguita correttamente, completa i seguenti passaggi:
-
Crea un nuovo tablespace undo:
SQL> CREATE UNDO TABLESPACE example-new-tablespace DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 100G;
-
Imposta il tablespace appena creato come tablespace undo predefinito:
UNDO_TABLESPACE = example-new-tablespace
Imposta il parametro di inizializzazione UNDO_TABLESPACE nel gruppo di parametri in modo che punti al tablespace appena creato.
Per ulteriori informazioni, consulta Working with parameter groups.
Il parametro di inizializzazione UNDO_TABLESPACE è un parametro dinamico e non comporta tempi di inattività quando si applica la modifica. Tuttavia, è consigliabile riavviare l'istanza database dopo aver apportato una modifica. Per ulteriori informazioni, consulta Managing Undo sul sito web di Oracle.
Per verificare che il nuovo tablespace undo sia il tablespace predefinito, esegui la seguente query:SQL> SHOW PARAMETER UNDO_TABLESPACE;
-
Per eliminare il vecchio tablespace undo, esegui una query drop tablespace:
SQL> DROP TABLESPACE example-tablespace INCLUDING CONTENTS AND DATAFILES;
Informazioni correlate
Managing capacity automatically with Amazon RDS storage autoscaling
Perché la mia istanza database Amazon RDS per Oracle utilizza più storage del previsto?
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata 5 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa