Movimiento de datos entre volúmenes de almacenamiento en RDS para Oracle - Amazon Relational Database Service

Movimiento de datos entre volúmenes de almacenamiento en RDS para Oracle

Puede mover archivos de datos y objetos de base de datos entre los volúmenes de almacenamiento principal y los adicionales. Antes de mover los datos, se tienen en cuenta los siguientes puntos:

  • Los volúmenes de origen y destino deben tener suficiente espacio libre.

  • Las operaciones de movimiento de datos consumen E/S en ambos volúmenes.

  • Los grandes movimientos de datos pueden afectar al rendimiento de la base de datos.

  • Si restaura una instantánea, el movimiento de los datos entre los volúmenes de almacenamiento puede resultar lento si se ve afectado por la carga diferida de EBS.

Movimiento de archivos de datos entre volúmenes en RDS para Oracle

Para mover archivos de datos entre volúmenes de almacenamiento, utilice el procedimiento rdsadmin.rdsadmin_util.move_datafile de Amazon RDS. Tenga en cuenta los siguientes requisitos:

  • Debe utilizar Oracle Enterprise Edition para ejecutar el procedimiento move_datafile.

  • No puede mover el espacio de tablas SYSTEM y RDSADMIN.

El procedimiento move_datafile tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Obligatorio Descripción

p_data_file_id

número

El ID del archivo de datos que se va a mover.

p_location

varchar2

El volumen de almacenamiento al que desea mover el archivo de datos.

En el siguiente ejemplo, se mueve un espacio de tabla del volumen predeterminado rdsdbdata al volumen adicional 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

Movimiento de datos de tablas e índices entre volúmenes en RDS para Oracle

Puede optimizar el almacenamiento de la base de datos mediante la creación de espacios de tabla en volúmenes de almacenamiento adicionales. A continuación, puede mover objetos como tablas, índices y particiones a estos espacios de tabla mediante el SQL estándar de Oracle. Este enfoque es valioso para ajustar el rendimiento cuando la base de datos contiene datos con patrones de acceso diferentes. Por ejemplo, puede almacenar los datos operativos a los que se accede con frecuencia en volúmenes de almacenamiento de alto rendimiento y, al mismo tiempo, trasladar los datos históricos a los que se accede con menos frecuencia a volúmenes de almacenamiento de menor costo.

En el siguiente ejemplo, se crea un nuevo espacio de tablas en un volumen de alto rendimiento rdsdbdata2. A continuación, mueva una tabla al volumen de almacenamiento adicional mientras la tabla está en línea. También mueve el índice al mismo volumen. El movimiento de tablas y la reconstrucción de índices mientras se está en línea necesita 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;

En el siguiente ejemplo, se crea un espacio de tablas en un volumen de bajo costo. A continuación, mueva una partición de tabla al volumen de almacenamiento de bajo costo mediante una operación en línea.

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;

En el siguiente ejemplo, consulte las operaciones largas de sesiones activas.

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

Puede verificar el uso de los espacios de tabla con la siguiente consulta.

SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC;

Administración del almacenamiento de LOB mediante volúmenes adicionales

La base de datos puede contener tablas con objetos BLOB o CLOB que consumen una cantidad considerable de almacenamiento, pero a los que se accede con poca frecuencia. Para optimizar el almacenamiento, puede reubicar estos segmentos de LOB en un espacio de tablas en un volumen de almacenamiento adicional.

En el siguiente ejemplo, se crea un espacio de tabla para datos de LOB en un volumen de bajo costo destinado a datos de poco acceso. A continuación, cree una tabla que almacene los datos de este volumen.

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);