

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Spostamento di dati tra volumi di storage in RDS per Oracle
<a name="Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes"></a>

È possibile spostare file di dati e oggetti di database tra i volumi di storage primari e aggiuntivi. Prima di spostare i dati, considera i seguenti punti:
+ I volumi di origine e di destinazione devono disporre di spazio libero sufficiente.
+ Le operazioni di spostamento dei dati I/O occupano entrambi i volumi.
+ I movimenti di dati di grandi dimensioni possono influire sulle prestazioni del database.
+ Se ripristini un'istantanea, lo spostamento dei dati tra i volumi di storage potrebbe essere lento se è influenzato dal lazy loading di EBS.

**Topics**
+ [Spostamento di file di dati tra volumi in RDS per Oracle](#Appendix.Oracle.CommonDBATasks.MovingDatafiles)
+ [Spostamento dei dati e degli indici delle tabelle tra i volumi in RDS for Oracle](#Appendix.Oracle.CommonDBATasks.MovingTableData)
+ [Gestione dello storage LOB utilizzando volumi aggiuntivi](#Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage)

## Spostamento di file di dati tra volumi in RDS per Oracle
<a name="Appendix.Oracle.CommonDBATasks.MovingDatafiles"></a>

Per spostare file di dati tra volumi di storage, utilizza la procedura `rdsadmin.rdsadmin_util.move_datafile` Amazon RDS. Si notino i requisiti seguenti:
+ È necessario utilizzare Oracle Enterprise Edition per eseguire la `move_datafile` procedura.
+ Non è possibile spostare tablespace e`SYSTEM`. `RDSADMIN`

La procedura `move_datafile` include i seguenti parametri.


****  

| Nome del parametro | Tipo di dati | Richiesto | Descrizione | 
| --- | --- | --- | --- | 
|  `p_data_file_id`  |  numero  |  Sì  |  L'ID del file di dati da spostare.  | 
|  `p_location`  |  varchar2  |  Sì  |  Il volume di archiviazione in cui si desidera spostare il file di dati.  | 

L'esempio seguente sposta una tablespace dal volume predefinito `rdsdbdata` al volume aggiuntivo. `rdsdbdata2`

```
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
 WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf

EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2');

PL/SQL procedure successfully completed.

SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
  WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
```

## Spostamento dei dati e degli indici delle tabelle tra i volumi in RDS for Oracle
<a name="Appendix.Oracle.CommonDBATasks.MovingTableData"></a>

È possibile ottimizzare l'archiviazione del database creando tablespace su volumi di archiviazione aggiuntivi. È quindi possibile spostare oggetti come tabelle, indici e partizioni in questi tablespace utilizzando lo standard Oracle SQL. Questo approccio è utile per ottimizzare le prestazioni quando il database contiene dati con modelli di accesso diversi. Ad esempio, è possibile archiviare i dati operativi a cui si accede di frequente su volumi di storage ad alte prestazioni spostando al contempo i dati storici a cui si accede raramente in volumi di storage a basso costo.

Nell'esempio seguente, si crea una nuova tablespace su un volume ad alte prestazioni. `rdsdbdata2` Quindi sposti una tabella nel volume di archiviazione aggiuntivo mentre la tabella è online. Inoltre, sposti l'indice sullo stesso volume. Lo spostamento delle tabelle e la ricostruzione degli indici online richiedono Oracle Enterprise Edition.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G;

ALTER TABLE employees
  MOVE TABLESPACE perf_tbs ONLINE;

ALTER INDEX employees_idx
  REBUILD ONLINE TABLESPACE perf_tbs;
```

Nell'esempio seguente, si crea una tablespace su un volume a basso costo. Quindi si sposta una partizione di tabella nel volume di archiviazione a basso costo utilizzando un'operazione online.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G;

ALTER TABLE orders
  MOVE PARTITION orders_2022
  TABLESPACE hist_tbs ONLINE;
```

Nell'esempio seguente, si interrogano le sessioni attive su operazioni di lunga durata.

```
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds 
  FROM v$session_longops 
  WHERE time_remaining > 0;
```

È possibile verificare l'utilizzo dei tablespace con la seguente query.

```
SELECT tablespace_name, used_percent
  FROM dba_tablespace_usage_metrics
  ORDER BY used_percent DESC;
```

## Gestione dello storage LOB utilizzando volumi aggiuntivi
<a name="Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage"></a>

Il database potrebbe contenere tabelle con oggetti BLOB o CLOB che consumano una notevole quantità di spazio di archiviazione ma a cui si accede raramente. Per ottimizzare l'archiviazione, è possibile riposizionare questi segmenti LOB in un tablespace su un volume di archiviazione aggiuntivo.

Nell'esempio seguente, si crea una tablespace per i dati LOB su un volume a basso costo destinato a dati a basso accesso. Quindi si crea una tabella che memorizza i dati su questo volume.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G;

CREATE TABLE documents (
    doc_id NUMBER PRIMARY KEY,
    doc_date DATE,
    doc_content CLOB
) TABLESPACE user_data
LOB(doc_content) STORE AS (TABLESPACE lob_data);
```