Utilisation d'une base de données Oracle comme cible pour AWS Database Migration Service - AWS Service de Migration de Base de Données

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.

Utilisation d'une base de données Oracle comme cible pour AWS Database Migration Service

Vous pouvez migrer les données vers les cibles de base de données Oracle à l'aide de AWS DMS, soit depuis une autre base de données Oracle, soit depuis l'une des autres bases de données prises en charge. Vous pouvez utiliser SSL (Secure Sockets Layer) pour chiffrer les connexions entre votre point de terminaison Oracle et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison Oracle, consultez Utilisation du protocole SSL avec AWS Database Migration Service. AWS DMS prend également en charge l'utilisation de Transparent Data Encryption (TDE) (chiffrement transparent des données) d’Oracle pour chiffrer les données au repos dans la base de données cible, car Oracle TDE n'a pas besoin d'une clé de chiffrement ou d'un mot de passe pour écrire dans la base de données.

Pour en savoir plus sur les versions d'Oracle qui sont prises en charge par AWS DMS en tant que cible, consultez Objectifs pour AWS DMS.

Quand vous utilisez Oracle comme cible, nous supposons que les données doivent être migrées vers le schéma ou l'utilisateur qui est utilisé pour la connexion cible. Si vous voulez migrer des données vers un autre schéma, utilisez une transformation de schéma pour cela. Par exemple, supposons que votre point de terminaison cible se connecte à l'utilisateur RDSMASTER et que vous souhaitez migrer de l'utilisateur PERFDATA1 vers PERFDATA2. Dans ce cas, créez une transformation comme suit.

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "PERFDATA1" }, "value": "PERFDATA2" }

Lorsque vous utilisez Oracle en tant que cible, AWS DMS migre toutes les tables et tous les index vers les espaces de table et d'index par défaut de la cible. Si vous souhaitez migrer des tables et des index vers des espaces de table et d'index différents, utilisez une transformation d'espace de table. Par exemple, supposons que vous avez dans le schéma INVENTORY un ensemble de tables affectées à certains espaces de table dans la source Oracle. Pour la migration, vous souhaitez affecter toutes ces tables à un espace de tables unique INVENTORYSPACE dans la cible. Dans ce cas, créez une transformation comme suit.

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYSPACE" }

Pour plus d'informations sur les transformations, consultez Spécification des règles de sélection de table et de transformation à l’aide de JSON.

Si Oracle est à la fois source et cible, vous pouvez conserver les affectations d'espace de table de table ou d'index existantes en définissant l'attribut de connexion supplémentaire source Oracle, enableHomogenousTablespace=true. Pour de plus amples informations, veuillez consulter Paramètres du point de terminaison lors de l'utilisation d'Oracle comme source pour AWS DMS.

Pour plus de détails sur l'utilisation des bases de données Oracle comme cible pour AWS DMS, consultez les sections suivantes :

Limitations sur Oracle comme cible pour AWS Database Migration Service

Les limitations lors de l'utilisation d'Oracle comme cible pour la migration de données sont les suivantes :

  • AWS DMS ne crée pas de schéma sur la base de données Oracle cible. Vous devez créer les schémas que vous voulez sur la base de données Oracle cible. Le nom du schéma doit déjà exister pour la cible Oracle. Les tables du schéma source sont importés dans l'utilisateur ou le schéma, que AWS DMS utilise pour se connecter à l'instance cible. Vous pouvez créer plusieurs tâches de réplication si vous avez plusieurs schémas à migrer. Vous pouvez également migrer des données vers différents schémas sur une cible. Pour ce faire, vous devez utiliser des règles de transformation de schéma sur les mappages de table AWS DMS.

  • AWS DMS ne prend pas en charge l'option Use direct path full load pour les tables avec INDEXTYPE CONTEXT. Pour contourner ce problème, vous pouvez utiliser le chargement de la grappe.

  • Avec l'option d’application optimisée par lots, le chargement dans la table de modifications nettes utilise un chemin d'accès direct, qui ne prend pas en charge le type XML. Pour contourner ce problème, vous pouvez utiliser le mode d'application transactionnel.

  • Les chaînes vides migrées à partir de bases de données sources peuvent être traitées différemment par la cible Oracle (converties en chaînes d'un espace, par exemple). Cela peut entraîner le signalement d'une non-concordance par la validation AWS DMS.

  • Vous pouvez exprimer le nombre total de colonnes par table prises en charge dans le mode d'application par lots optimisée, à l'aide de la formule suivante :

    2 * columns_in_original_table + columns_in_primary_key <= 999

    Par exemple, si la table d'origine comporte 25 colonnes et que sa clé primaire est composée de 5 colonnes, le nombre total de colonnes est de 55. Si une table dépasse le nombre de colonnes pris en charge, toutes les modifications sont appliquées une par une.

  • AWS DMS ne prend pas en charge la base de données autonome sur Oracle Cloud Infrastructure (OCI).

Privilèges de compte d'utilisateur requis pour utiliser Oracle comme cible

Pour utiliser une cible Oracle dans une tâche AWS Database Migration Service, accordez les privilèges suivants dans la base de données Oracle. Vous accordez ces privilèges au compte utilisateur spécifié dans les définitions de la base de données Oracle pour AWS DMS.

  • SELECT ANY TRANSACTION

  • SELECT on V$NLS_PARAMETERS

  • SELECT on V$TIMEZONE_NAMES

  • SELECT on ALL_INDEXES

  • SELECT on ALL_OBJECTS

  • SELECT on DBA_OBJECTS

  • SELECT on ALL_TABLES

  • SELECT on ALL_USERS

  • SELECT on ALL_CATALOG

  • SELECT on ALL_CONSTRAINTS

  • SELECT on ALL_CONS_COLUMNS

  • SELECT on ALL_TAB_COLS

  • SELECT on ALL_IND_COLUMNS

  • DROP ANY TABLE

  • SELECT ANY TABLE

  • INSERT ANY TABLE

  • UPDATE ANY TABLE

  • CREATE ANY VIEW

  • DROP ANY VIEW

  • CREATE ANY PROCEDURE

  • ALTER ANY PROCEDURE

  • DROP ANY PROCEDURE

  • CREATE ANY SEQUENCE

  • ALTER ANY SEQUENCE

  • DROP ANY SEQUENCE

  • DELETE ANY TABLE

Pour les exigences suivantes, accordez ces privilèges supplémentaires :

  • Pour utiliser une liste de tables spécifique, accordez l'autorisation SELECT sur n'importe quelle table répliquée et ALTER sur n'importe quelle table répliquée.

  • Pour permettre à un utilisateur de créer une table dans un espace de table par défaut, accordez-lui le privilège GRANT UNLIMITED TABLESPACE.

  • Pour l'ouverture de session, accordez le privilège CREATE SESSION.

  • Si vous utilisez un chemin direct (qui est le chemin par défaut pour le chargement complet), GRANT LOCK ANY TABLE to dms_user;.

  • Si le schéma est différent lors de l'utilisation du mode de préparation de table « DROP and CREATE », GRANT CREATE ANY INDEX to dms_user;.

  • Pour certains scénarios de chargement complet, vous pouvez choisir l'option « SUPPRIMER et CRÉER une table » ou « TRONQUER avant le chargement » où un schéma de table cible est différent de celui de l'utilisateur DMS. Dans ce cas, accordez SUPPRIMER N'IMPORTE QUELLE TABLE.

  • Pour stocker les modifications dans des tables de modification ou une table d'audit où le schéma de table cible est différent de celui de l'utilisateur DMS, accordez CRÉER N'IMPORTE QUELLE TABLE et CRÉER N'IMPORTE QUEL INDEX.

Privilèges de lecture requis pour AWS Database Migration Service sur la base de données cible

Le compte d'utilisateur AWS DMS doit disposer d'autorisations de lecture pour les tables d'administrateur de base de données suivantes :

  • SELECT on DBA_USERS

  • SELECT on DBA_TAB_PRIVS

  • SELECT on DBA_OBJECTS

  • SELECT on DBA_SYNONYMS

  • SELECT on DBA_SEQUENCES

  • SELECT on DBA_TYPES

  • SELECT on DBA_INDEXES

  • SELECT on DBA_TABLES

  • SELECT on DBA_TRIGGERS

  • SELECT on SYS.DBA_REGISTRY

Si certains des privilèges requis ne peuvent pas être accordés à V$ xxx, accordez-les à V_$ xxx.

Configuration d'une base de données Oracle comme cible pour AWS Database Migration Service

Avant d'utiliser une base de données Oracle comme cible de la migration des données, vous devez fournir un compte d'utilisateur Oracle à AWS DMS. Le compte d'utilisateur doit disposer de privilèges de lecture/écriture sur la base de données Oracle, comme indiqué au chapitre Privilèges de compte d'utilisateur requis pour utiliser Oracle comme cible.

Paramètres de point de terminaison lors de l'utilisation d'Oracle en tant que cible pour AWS DMS

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible Oracle comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la console AWS DMS ou à l'aide de la commande create-endpoint dans AWS CLI, avec la syntaxe JSON --oracle-settings '{"EndpointSetting": "value", ...}'.

Les paramètres de point de terminaison que vous pouvez utiliser avec Oracle en tant que cible sont indiqués dans le tableau suivant.

Name (Nom) Description

EscapeCharacter

Définissez cet attribut sur un caractère d'échappement. Ce caractère d'échappement vous permet de faire en sorte qu'un caractère générique unique se comporte comme un caractère normal dans les expressions de mappage de table. Pour de plus amples informations, veuillez consulter Caractères génériques dans le mappage de table.

Valeur par défaut : Null

Valeurs valides : tout caractère autre qu'un caractère générique

Exemple : --oracle-settings '{"EscapeCharacter": "#"}'

UseDirectPathFullLoad

Lorsqu'elle est définie sur Y, AWS DMS utilise une charge complète de chemin direct. Spécifiez cette valeur pour activer le protocole de chemin direct dans Oracle Call Interface (OCI). Ce protocole OCI permet le chargement en bloc des tables cibles Oracle pendant un chargement complet.

Valeur par défaut : true

Valeurs valides : true/false

Exemple : --oracle-settings '{"UseDirectPathFullLoad": false}'

DirectPathParallelLoad

Lorsqu'il est défini sur true, cet attribut spécifie une charge parallèle lorsque la valeur UseDirectPathFullLoad est définie sur Y. Cet attribut s'applique également uniquement lorsque vous utilisez la fonction de charge parallèle AWS DMS. Pour de plus amples informations, veuillez consulter l'opération parallel-load dans Règles des paramètres de table et de collection et opérations.

Une limitation de la spécification de ce paramètre de charge parallèle est que la table cible ne peut pas avoir de contraintes ou d'index. Pour de plus amples informations sur cette limitation, veuillez consulter Activation des contraintes après une charge de chemin directe parallèle. Si des contraintes ou des index sont activés, la définition de cet attribut sur true n'a aucun effet.

Valeur par défaut : false

Valeurs valides : true/false

Exemple : --oracle-settings '{"DirectPathParallelLoad": true}'

DirectPathNoLog

Lorsqu'il est défini sur true, cet attribut permet d'augmenter le taux de validation sur la base de données cible Oracle en écrivant directement dans les tables et en n'écrivant pas de trace dans les journaux de base de données. Pour de plus amples informations, veuillez consulter Direct-Load INSERT. Cet attribut s'applique également uniquement lorsque vous définissez UseDirectPathFullLoad sur Y.

Valeur par défaut : false

Valeurs valides : true/false

Exemple : --oracle-settings '{"DirectPathNoLog": true}'

CharLengthSemantics

Spécifie si la longueur d'une colonne de caractères est exprimée en octets ou en caractères. Pour indiquer que la longueur de la colonne de caractères est en caractères, définissez cet attribut sur CHAR. Sinon, la longueur de la colonne de caractères est exprimée en octets.

Valeur par défaut : Non définie sur CHAR

Valeurs valides : CHAR

Exemple : --oracle-settings '{"CharLengthSemantics": "CHAR"}'

AlwaysReplaceEmptyString

AWS DMS ajoute un espace supplémentaire pour répliquer une chaîne vide lors de la migration vers une cible Oracle. En général, Oracle n'a pas de notation pour une chaîne vide. Lorsque vous insérez une chaîne vide au format varchar2, vous chargez des chaînes vides au format NULL. Si vous souhaitez insérer les données au format NULL sur Oracle, définissez cet attribut sur FALSE.

Valeur par défaut : true

Valeurs valides : true/false

Exemple : --oracle-settings '{"AlwaysReplaceEmptyString": false}'

Types de données cibles pour Oracle

Une base de données Oracle cible utilisée avec AWS DMS prend en charge la plupart des types de données Oracle. Le tableau suivant présente les types de données cibles Oracle qui sont pris en charge lorsque vous utilisez AWS DMS et le mappage par défaut à partir des types de données AWS DMS. Pour en savoir plus sur la façon d'afficher le type de données qui est mappé à partir de la source, consultez la section correspondant à la source que vous utilisez.

Type de données AWS DMS

Type de données Oracle

BOOLEAN

NUMBER (1)

BYTES

RAW (length)

DATE

DATETIME

TIME

TIMESTAMP (0)

DATETIME

TIMESTAMP (scale)

INT1

NUMBER (3)

INT2

NUMBER (5)

INT4

NUMBER (10)

INT8

NUMBER (19)

NUMERIC

NUMBER (p,s)

REAL4

FLOAT

REAL8

FLOAT

CHAÎNE

Avec indication date : DATE

Avec indication time : TIMESTAMP

Avec indication timestamp : TIMESTAMP

Avec indication timestamp_with_timezone : TIMESTAMP WITH TIMEZONE

Avec indication timestamp_with_local_timezone : TIMESTAMP WITH LOCAL TIMEZONE Avec indication interval_year_to_month : INTERVAL YEAR TO MONTH

Avec indication interval_day_to_second : INTERVAL DAY TO SECOND

Si la longueur > 4 000 : CLOB

Dans tous les autres cas : VARCHAR2 (longueur)

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

Si la longueur > 2 000 : NCLOB

Dans tous les autres cas : NVARCHAR2 (longueur)

BLOB

BLOB

Pour pouvoir utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données BLOB pour une tâche spécifique. Les types de données BLOB sont pris en charge uniquement dans les tables qui contiennent une clé primaire

CLOB

CLOB

Pour pouvoir utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données CLOB pour une tâche spécifique. Au cours de la capture des données modifiées (CDC), les types de données CLOB sont pris en charge uniquement dans les tables qui comprennent une clé primaire.

CHAÎNE

Un type de données Oracle VARCHAR2 sur la source dont la taille déclarée est supérieure à 4 000 octets est mappé via l'objet CLOB AWS DMS à une STRING sur la cible Oracle.

NCLOB

NCLOB

Pour pouvoir utiliser ce type de données avec AWS DMS, vous devez activer l'utilisation des types de données NCLOB pour une tâche spécifique. Au cours de la capture des données modifiées (CDC), les types de données NCLOB sont pris en charge uniquement dans les tables qui contiennent une clé primaire.

WSTRING

Un type de données Oracle VARCHAR2 sur la source dont la taille déclarée est supérieure à 4 000 octets est mappé via l'objet NCLOB AWS DMS à une WSTRING sur la cible Oracle.

XMLTYPE

Le type de données cible XMLTYPE est pertinent uniquement dans les tâches de réplication d'Oracle à Oracle.

Lorsque la base de données source est Oracle, les types de donnée source sont répliqués en l'état dans la cible Oracle. Par exemple, un type de données XMLTYPE dans la source est créé en tant que type de données XMLTYPE dans la cible.