Déplacement de données entre volumes de stockage dans RDS pour Oracle - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déplacement de données entre volumes de stockage dans RDS pour Oracle

Vous pouvez déplacer des fichiers de données et des objets de base de données entre vos volumes de stockage principaux et supplémentaires. Avant de déplacer des données, tenez compte des points suivants :

  • Les volumes source et cible doivent disposer d'un espace libre suffisant.

  • Les opérations de déplacement de données consomment I/O sur les deux volumes.

  • Les mouvements de données importants peuvent avoir un impact sur les performances des bases de données.

  • Si vous restaurez un instantané, le déplacement des données entre les volumes de stockage peut être lent s'il est affecté par le chargement différé d'EBS.

Déplacement de fichiers de données entre volumes dans RDS pour Oracle

Pour déplacer des fichiers de données entre des volumes de stockage, utilisez la procédure rdsadmin.rdsadmin_util.move_datafile Amazon RDS. Notez les critères suivants :

  • Vous devez utiliser Oracle Enterprise Edition pour exécuter la move_datafile procédure.

  • Vous ne pouvez pas déplacer le tablespace SYSTEM et. RDSADMIN

La procédure move_datafile possède les paramètres suivants.

Nom du paramètre Type de données Obligatoire Description

p_data_file_id

nombre

Oui

ID du fichier de données à déplacer.

p_location

varchar2

Oui

Volume de stockage vers lequel vous souhaitez déplacer le fichier de données.

L'exemple suivant déplace un tablespace du volume par défaut rdsdbdata vers le volume supplémentaire. 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

Déplacement des données de table et des index entre les volumes dans RDS pour Oracle

Vous pouvez optimiser le stockage des bases de données en créant des tablespaces sur des volumes de stockage supplémentaires. Vous pouvez ensuite déplacer des objets tels que des tables, des index et des partitions vers ces tablespaces à l'aide d'Oracle SQL standard. Cette approche est utile pour optimiser les performances lorsque votre base de données contient des données présentant des modèles d'accès différents. Par exemple, vous pouvez stocker les données opérationnelles fréquemment consultées sur des volumes de stockage à hautes performances tout en transférant les données historiques rarement consultées vers des volumes de stockage moins coûteux.

Dans l'exemple suivant, vous créez un nouveau tablespace sur un volume à hautes performances. rdsdbdata2 Vous déplacez ensuite une table vers votre volume de stockage supplémentaire pendant que la table est en ligne. Vous déplacez également l'index vers le même volume. Le déplacement de tables et la reconstruction d'index en ligne nécessitent 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;

Dans l'exemple suivant, vous créez un tablespace sur un volume à faible coût. Vous déplacez ensuite une partition de table vers votre volume de stockage à faible coût à l'aide d'une opération en ligne.

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;

Dans l'exemple suivant, vous interrogez les opérations longues des sessions actives.

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

Vous pouvez vérifier l'utilisation de vos tablespaces à l'aide de la requête suivante.

SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC;

Gestion du stockage LOB à l'aide de volumes supplémentaires

Votre base de données peut contenir des tables contenant des objets BLOB ou CLOB qui consomment beaucoup d'espace de stockage mais sont rarement consultés. Pour optimiser le stockage, vous pouvez déplacer ces segments LOB vers un tablespace sur un volume de stockage supplémentaire.

Dans l'exemple suivant, vous créez un tablespace pour les données LOB sur un volume à faible coût destiné aux données à accès restreint. Vous créez ensuite une table qui stocke les données sur ce 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);