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.
Règles des paramètres de table et de collection et opérations
Utilisez les paramètres de table pour spécifier les paramètres que vous souhaitez appliquer à une table ou une vue sélectionnée pour une opération spécifiée. Les règles des paramètres de table sont facultatives, en fonction des exigences en matière de point de terminaison et de migration.
Plutôt que d’utiliser des tables et des vues, les bases de données MongoDB et Amazon DocumentDB stockent les enregistrements de données sous forme de documents regroupés dans des collections. Pour n’importe quel point de terminaison MongoDB ou Amazon DocumentDB, une base de données unique est un ensemble spécifique de collections identifiées par le nom de la base de données.
Lorsque vous migrez à partir d’une source MongoDB ou Amazon DocumentDB, vous utilisez les paramètres de chargement parallèle de manière légèrement différente. Dans ce cas, prenez en compte le type de segmentation par plage ou de segmentation automatique des paramètres de chargement parallèle pour les collections sélectionnées plutôt que les tables et les vues.
Rubriques
Pour les règles de mappage de tables qui utilisent le type de règle des paramètres de table (table-settings), vous pouvez appliquer les paramètres suivants.
Paramètre | Valeurs possibles | Description |
---|---|---|
rule-type |
table-settings
|
Valeur qui applique la règle à une table, une vue ou une collection spécifiée par la règle de sélection. |
rule-id |
Valeur numérique. | Valeur numérique unique pour identifier la règle. |
rule-name |
Valeur alphanumérique. | Nom unique pour identifier la règle. |
object-locator |
Objet avec les paramètres suivants :
|
Le nom d’un schéma et d’une table ou d’une vue spécifiques ou le nom d’une base de données et d’une collection spécifiques (pas de caractères génériques). |
parallel-load |
Objet avec les paramètres suivants :
|
Spécifie une opération de chargement parallèle (multithread) dans la table ou la vue identifiée par l'option
Pour plus d’informations sur le chargement parallèle, consultez Utilisation du chargement parallèle pour certaines tables, vues et collections. |
type |
L’une des options suivantes pour parallel-load :
|
Mécanisme permettant d’identifier les partitions, les sous-partitions ou les segments de table, de vue ou de collection à charger en parallèle. |
number-of-partitions |
(Facultatif) Lorsque type est défini sur partitions-auto pour les collections spécifiées d’un point de terminaison MongoDB ou Amazon DocumentDB, ce paramètre indique le nombre total de partitions (segments) utilisées pour la migration. La valeur par défaut est 16. |
Spécifie le nombre exact de partitions à charger en parallèle. |
collection-count-from-metadata |
(Facultatif) Lorsqu'il type s'agit partitions-auto de collections spécifiées d'un point de terminaison MongoDB ou Amazon DocumentDB et que ce paramètre est défini sur true AWS DMS , utilise un nombre de collections estimé pour déterminer le nombre de partitions. Si ce paramètre est défini surfalse , AWS DMS utilise le nombre réel de collectes. L’argument par défaut est true . |
Indique s’il convient d’utiliser une estimation du nombre de collections ou le nombre réel de collections pour calculer le nombre de partitions à charger en parallèle. |
max-records-skip-per-page |
(Facultatif) Lorsque type est défini sur partitions-auto pour les collections spécifiées d’un point de terminaison MongoDB ou Amazon DocumentDB, il s’agit du nombre d’enregistrements à ignorer simultanément lors de la détermination des limites pour chaque partition. AWS DMS
ignore un certain nombre d’enregistrements par page pour déterminer la limite minimale d’une partition. La valeur par défaut est 10 000. |
Spécifie le nombre d’enregistrements à ignorer simultanément lors de la détermination des limites de chaque partition. La définition d’une valeur relativement élevée à partir de la valeur par défaut peut entraîner des délais d’expiration du curseur et des échecs de tâche. La définition d’une valeur relativement faible à partir de la valeur par défaut entraîne un plus grand nombre d’opérations par page et ralentit le chargement complet. |
batch-size |
(Facultatif) Lorsque type est défini sur partitions-auto pour les collections spécifiées d’un point de terminaison MongoDB ou Amazon DocumentDB, cette valeur entière limite le nombre de documents renvoyés par lot aller-retour. Si la taille du lot est égale à zéro (0), le curseur utilise la taille de lot maximale définie par le serveur. La valeur par défaut est 0. |
Spécifie le nombre maximal de documents renvoyés par lot. Chaque lot nécessite un aller retour jusqu’au serveur. |
partitions |
Lorsque type est partitions-list , il s’agit d’un tableau de chaînes qui spécifient les noms des partitions à charger en parallèle. |
Noms des partitions à charger en parallèle. |
subpartitions |
(Points de terminaison Oracle uniquement) Lorsque type est partitions-list , il s’agit d’un tableau de chaînes qui spécifient les noms des sous-partitions à charger en parallèle. |
Noms des sous-partitions à charger en parallèle. |
columns |
Lorsque type est défini sur ranges , il s’agit d’un tableau de chaînes définies sur les noms des colonnes utilisées pour identifier les segments de table, de vue ou de collection basés sur une plage à charger en parallèle. |
Noms des colonnes utilisés pour identifier les segments de table, de vue ou de collection basés sur une plage à charger en parallèle. |
boundaries |
Lorsque type est ranges , tableau de tableaux de valeurs de colonne. Chaque tableau de valeurs de colonne contient des valeurs de colonne dans la quantité et l'ordre spécifiés par columns . Un tableau de valeurs de colonne spécifie la limite supérieure d’un segment de table, de vue ou de collection. Chaque tableau de valeurs de colonne supplémentaire ajoute la limite supérieure pour un segment de table, de vue ou de collection supplémentaire. Tous ces segments de table, de vue ou de collection basés sur une plage sont chargés en parallèle. |
Valeurs de colonne qui identifient les partitions de table, de vue ou de collection basées sur une plage à charger en parallèle. |
lob-settings |
Objet avec les paramètres suivants :
|
Valeur qui spécifie la gestion LOB pour la table ou la vue identifiée par l'option object-locator . La tâche de gestion LOB spécifiée remplace tous les paramètres de tâche LOB de cette table ou de cette vue uniquement. Pour plus d’informations sur l’utilisation des paramètres LOB, consultez Spécification des paramètres LOB pour une table ou une vue sélectionnée. |
mode |
Spécifie le traitement de migration des LOB dans la table ou la vue sélectionnée à l'aide des valeurs suivantes :
|
Spécifie le mécanisme utilisé pour migrer les LOB. |
bulk-max-size |
L'effet de cette valeur dépend du mode . |
Spécifie la taille maximale des LOB en kilo-octets par incréments. Spécifiez cette option uniquement si vous avez besoin de répliquer des LOB de petite taille ou si le point de terminaison cible ne prend pas en charge la taille de LOB illimitée. |
Les caractères génériques dans les paramètres de table sont limités
L’utilisation du caractère générique de pourcentage ("%"
) dans les règles "table-settings"
n’est pas prise en charge pour les bases de données sources, comme indiqué ci-dessous.
{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }
Si vous utilisez "%"
les "table-settings"
règles comme indiqué, AWS DMS renvoie alors l'exception suivante.
Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.
En outre, il vous AWS recommande de ne pas charger un grand nombre de collections volumineuses à l'aide d'une seule tâche avecparallel-load
. Notez que AWS DMS
limite la contention des ressources ainsi que le nombre de segments chargés en parallèle par la valeur du paramètre de tâche MaxFullLoadSubTasks
, avec une valeur maximale de 49.
Spécifiez plutôt toutes les collections de la base de données source pour les plus grandes collections en spécifiant individuellement chaque "schema-name"
et "table-name"
. Augmentez également votre migration de manière appropriée. Par exemple, exécutez plusieurs tâches sur un nombre suffisant d’instances de réplication pour gérer un grand nombre de collections volumineuses dans la base de données.
Utilisation du chargement parallèle pour certaines tables, vues et collections
Pour accélérer la migration et la rendre plus efficace, vous pouvez utiliser le chargement parallèle pour certaines tables, vues et collections relationnelles. En d’autres termes, vous pouvez migrer une seule table, vue ou collection segmentée en utilisant plusieurs threads en parallèle. Pour ce faire, AWS DMS divisez une tâche à chargement complet en fils, chaque segment de table étant affecté à son propre fil.
À l’aide de ce processus de chargement parallèle, plusieurs threads peuvent décharger plusieurs tables, vues et collections en parallèle à partir du point de terminaison source. Ensuite, plusieurs threads peuvent migrer et charger les mêmes tables, vues et collections en parallèle vers le point de terminaison cible. Pour certains moteurs de base de données, vous pouvez segmenter les tables et vues par partitions ou sous-partitions existantes. Pour les autres moteurs de base de données, vous pouvez segmenter AWS DMS automatiquement les collections en fonction de paramètres spécifiques (autosegmentation). Sinon, vous pouvez segmenter n’importe quelle table, vue ou collection par des plages de valeurs de colonne que vous spécifiez.
Le chargement parallèle est pris en charge pour les points de terminaison source suivants :
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2 LUW
-
SAP Adaptive Server Enterprise (ASE)
-
MongoDB (prend uniquement en charge les options de segmentation automatique et de segmentation par plage d’un chargement complet parallèle)
-
Amazon DocumentDB (prend uniquement en charge les options de segmentation automatique et de segmentation par plage d’un chargement complet parallèle)
Pour les points de terminaison MongoDB et Amazon DocumentDB AWS DMS , prend en charge les types de données suivants pour les colonnes qui sont des clés de partition pour l'option de segmentation de plage d'un chargement complet en parallèle.
-
Double
-
Chaîne
-
ObjectId
-
Entier 32 bits
-
Entier 64 bits
La charge parallèle à utiliser avec les règles de définition de table est prise en charge pour les points de terminaison cibles suivants :
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
Amazon S3
-
SAP Adaptive Server Enterprise (ASE)
-
Amazon Redshift
-
MongoDB (prend uniquement en charge les options de segmentation automatique et de segmentation par plage d’un chargement complet parallèle)
-
Amazon DocumentDB (prend uniquement en charge les options de segmentation automatique et de segmentation par plage d’un chargement complet parallèle)
-
Db2 LUW
Pour spécifier le nombre maximal de tables et de vues à charger en parallèle, utilisez le paramètre de tâche MaxFullLoadSubTasks
.
Pour spécifier le nombre maximal de threads par table ou vue pour les cibles prises en charge d’une tâche de chargement parallèle, définissez davantage de segments à l’aide de limites de valeurs de colonnes.
Important
MaxFullLoadSubTasks
contrôle le nombre de tables ou de segments de table à charger en parallèle. ParallelLoadThreads
contrôle le nombre de threads utilisés par une tâche de migration pour exécuter les chargements en parallèle. Ces paramètres sont multiplicatifs. Ainsi, le nombre total de threads utilisés lors d’une tâche de chargement complet correspond approximativement au résultat de la valeur de ParallelLoadThreads
multipliée par la valeur de MaxFullLoadSubTasks
(ParallelLoadThreads
* MaxFullLoadSubtasks)
).
Si vous créez des tâches avec un grand nombre de sous-tâches de chargement complet et un grand nombre de threads de chargement parallèle, votre tâche peut consommer trop de mémoire et échouer.
Pour spécifier le nombre maximal de threads par table pour les cibles Amazon DynamoDB, Amazon Kinesis Data Streams, Apache Kafka ou Amazon Elasticsearch Service, utilisez le paramètre de tâche de métadonnées cible ParallelLoadThreads
.
Pour spécifier la taille du tampon pour une tâche de chargement parallèle lorsque ParallelLoadThreads
est utilisé, utilisez le paramètre de tâche de métadonnées cible ParallelLoadBufferSize
.
La disponibilité et les paramètres de ParallelLoadThreads
et ParallelLoadBufferSize
dépendent du point de terminaison cible.
Pour plus d’informations sur les paramètres ParallelLoadThreads
et ParallelLoadBufferSize
, consultez Paramètres de métadonnées des tâches cibles. Pour plus d'informations sur le paramètre MaxFullLoadSubTasks
, consultez Paramètres de tâche de chargement complet. Pour obtenir des informations spécifiques sur les points de terminaison cible, consultez les rubriques connexes.
Pour utiliser le chargement parallèle, créez une règle de mappage de table de type table-settings
avec l'option parallel-load
. Dans la règle table-settings
, vous pouvez spécifier les critères de segmentation d’une table, d’une vue ou d’une collection unique que vous voulez charger en parallèle. Pour ce faire, définissez le paramètre type
de l'option parallel-load
sur l'une de plusieurs options.
Le choix effectué dépendra de la façon dont vous souhaitez segmenter la table, la vue ou la collection pour le chargement parallèle :
-
Par partitions (ou segments) : chargez toutes les partitions (ou segments) de table ou de vue existantes à l’aide du type
partitions-auto
. Sinon, chargez uniquement les partitions sélectionnées à l’aide du typepartitions-list
avec un tableau de partitions spécifié.Pour les points de terminaison MongoDB et Amazon DocumentDB uniquement, chargez toutes les collections ou les collections spécifiées par segments AWS DMS qui calculent automatiquement également en utilisant
partitions-auto
le type et des paramètres facultatifs supplémentaires.table-settings
-
(Points de terminaison Oracle uniquement) Par sous-partitions : chargez toutes les sous-partitions de table ou de vue existantes à l’aide du type
subpartitions-auto
. Ou chargez uniquement les sous-partitions sélectionnées en utilisant le typepartitions-list
avec un tableausubpartitions
spécifié. -
Par segments que vous définissez : chargez les segments de table, de vue ou de collection que vous définissez à l’aide des limites de valeur de colonne. Pour ce faire, utilisez le type
ranges
avec les tableauxcolumns
etboundaries
spécifiés.Note
Les points de terminaison PostgreSQL ne prennent en charge que ce type de chargement parallèle. MongoDB et Amazon DocumentDB en tant que points de terminaison sources prennent en charge à la fois ce type de segmentation par plage et le type de segmentation automatique d’un chargement complet parallèle (
partitions-auto
).
Pour identifier les tables, les vues ou les collections supplémentaires à charger en parallèle, spécifiez des objets table-settings
supplémentaires avec les options parallel-load
.
Les procédures suivantes décrivent comment coder le JSON pour chaque type de chargement parallèle, du plus simple au plus complexe.
Pour spécifier toutes les partitions de table, de vue ou de collection, ou toutes les sous-partitions de table ou de vue
-
Spécifiez
parallel-load
avec le typepartitions-auto
ou le typesubpartitions-auto
(mais pas les deux).Chaque partition (ou segment) ou sous-partition de table, de vue ou de collection est alors allouée automatiquement à son propre thread.
Pour certains points de terminaison, le chargement parallèle comporte des partitions ou sous-partitions uniquement si elles sont déjà définies pour la table ou la vue. Pour les points de terminaison sources MongoDB et Amazon DocumentDB, vous pouvez calculer automatiquement AWS DMS les partitions (ou les segments) en fonction de paramètres supplémentaires facultatifs. Cela inclut
number-of-partitions
,collection-count-from-metadata
,max-records-skip-per-page
etbatch-size
.
Pour spécifier des partitions ou des sous-partitions de table ou de vue sélectionnées, ou les deux
-
Spécifiez
parallel-load
avec le typepartitions-list
. -
(Facultatif) Incluez les partitions en spécifiant une liste de noms de partitions comme valeur de
partitions
.Chaque partition spécifiée est alors allouée à son propre thread.
Important
Pour les points de terminaison Oracle, assurez-vous que les partitions et les sous-partitions ne se chevauchent pas lorsque vous les choisissez pour le chargement parallèle. Si vous utilisez des partitions et des sous-partitions qui se chevauchent pour charger des données en parallèle, les entrées sont dupliquées ou le chargement échoue en raison d’une violation de clé primaire en double.
-
(Facultatif) Pour les points de terminaison Oracle uniquement, incluez les sous-partitions en définissant un tableau de noms de sous-partitions comme valeur de
subpartitions
.Chaque sous-partition spécifiée est alors allouée à son propre thread.
Note
Le chargement parallèle comporte des partitions ou sous-partitions uniquement si elles sont déjà définies pour la table ou la vue.
Vous pouvez spécifier des segments de table ou de vue en tant que plages de valeurs de colonne. Lorsque vous procédez ainsi, vous devez être conscient de ces caractéristiques de la colonne :
-
La spécification de colonnes indexées améliore considérablement les performances.
-
Vous pouvez spécifier jusqu'à 10 colonnes.
-
Vous ne pouvez pas utiliser de colonnes pour définir les limites des segments avec les types de AWS DMS données suivants : DOUBLE, FLOAT, BLOB, CLOB et NCLOB
-
Les enregistrements avec des valeurs null ne sont pas répliqués.
Pour spécifier des segments de table, de vue ou de collection en tant que plages de valeurs de colonne
-
Spécifiez
parallel-load
avec le typeranges
. -
Définissez une limite entre les segments de table ou de vue en spécifiant une liste de noms de colonne comme valeur de
columns
. Faites la même chose pour chaque colonne pour laquelle vous souhaitez définir une limite entre les segments de table ou de vue.Notez que l'ordre des colonnes est significatif. Ici, la première colonne est la plus significative et la dernière colonne est la moins significative pour la définition de chaque limite, comme décrit ci-après.
-
Pour définir les plages de données pour tous les segments de table ou de vue, spécifiez un tableau de limites comme valeur pour
boundaries
. Un tableau de limites est un tableau de tableaux de valeurs de colonne. Pour ce faire, effectuez les étapes suivantes :-
Spécifiez chaque élément d'un tableau de valeurs de colonne comme valeur qui correspond à chaque colonne. Un tableau de valeurs de colonne représente la limite supérieure de chaque segment de table ou de vue que vous souhaitez définir. Spécifiez chaque colonne dans le même ordre que celui où vous avez spécifié cette colonne dans le tableau
columns
.Entrez les valeurs des colonnes DATE au format pris en charge par la source.
-
Spécifiez chaque tableau de valeurs de colonne comme limite supérieure, dans l'ordre, de chaque segment depuis le bas jusqu'au next-to-top segment de la table ou de la vue. S'il existe des lignes au-dessus de la limite supérieure que vous spécifiez, ces lignes complètent le segment supérieur de la table ou de la vue. Par conséquent, le nombre de segments basés sur une plage est potentiellement supérieur au nombre de limites de segment dans le tableau de limites. Chaque segment basé sur une plage de ce type est alloué à son propre thread.
Toutes les données non null sont répliquées, même si vous ne définissez pas de plages de données pour toutes les colonnes de la table ou de la vue.
Par exemple, supposons que vous définissez trois tableaux de valeurs de colonne pour les colonnes COL1, COL2 et COL3, comme suit.
COL1 COL2 COL3 10 30 105 20 20 120 100 12 99 Vous avez défini trois limites de segment pour un total possible de quatre segments.
Pour identifier les plages de lignes à répliquer pour chaque segment, l'instance de réplication applique une recherche à ces trois colonnes pour chacun des quatre segments : La recherche est similaire à ce qui suit :
- Segment 1
-
Répliquez toutes les lignes où les conditions suivantes sont réunies : les valeurs des deux premières colonnes sont inférieures ou égales aux valeurs de limite supérieure de segment 1 correspondantes. En outre, les valeurs de la troisième colonne sont inférieures aux valeurs de limite supérieure de segment 1.
- Segment 2
-
Répliquez toutes les lignes (sauf les lignes segment 1) où les conditions suivantes sont réunies : les valeurs des deux premières colonnes sont inférieures ou égales aux valeurs de limite supérieure de segment 2 correspondantes. En outre, les valeurs de la troisième colonne sont inférieures aux valeurs de limite supérieure de segment 2.
- Segment 3
-
Répliquez toutes les lignes (sauf les lignes segment 2) où les conditions suivantes sont réunies : les valeurs des deux premières colonnes sont inférieures ou égales aux valeurs de limite supérieure de segment 3 correspondantes. En outre, les valeurs de la troisième colonne sont inférieures aux valeurs de limite supérieure de segment 3 .
- Segment 4
-
Répliquer toutes les lignes restantes (sauf les lignes de Segment 1, 2 et 3).
Dans ce cas, l'instance de réplication crée une clause
WHERE
pour charger chaque segment comme suit :- Segment 1
-
((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
- Segment 2
-
NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
- Segment 3
-
NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
- Segment 4
-
NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
-
Spécification des paramètres LOB pour une table ou une vue sélectionnée
Vous pouvez définir des paramètres LOB de tâche pour une ou plusieurs tables en créant une règle de mappage de table de type table-settings
avec l'option lob-settings
pour un ou plusieurs objets table-settings
.
La spécification des paramètres LOB pour les tables ou vues sélectionnées est prise en charge pour les points de terminaison source suivants :
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
IBM Db2, selon les paramètres
mode
etbulk-max-size
, décrits ci-après -
SAP Adaptive Server Enterprise (ASE), selon les paramètres
mode
etbulk-max-size
, comme décrit ci-après.
La spécification des paramètres LOB pour les tables ou vues sélectionnées est prise en charge pour les points de terminaison cible suivants :
-
Oracle
-
Microsoft SQL Server
-
MySQL
-
PostgreSQL
-
SAP ASE, selon les paramètres
mode
etbulk-max-size
, comme décrit ci-après.
Note
Vous ne pouvez utiliser les types de données LOB qu'avec les tables et les vues qui incluent une clé primaire.
Pour utiliser des paramètres LOB pour une table ou une vue sélectionnée, créez une règle de mappage de table de type table-settings
avec l'option lob-settings
. Cette option indique le traitement des LOB pour la table ou la vue identifiée par l'option object-locator
. Dans la règle table-settings
, vous pouvez spécifier un objet lob-settings
avec les paramètres suivants :
-
mode
: spécifie le mécanisme de traitement de la migration des objets LOB pour la table ou la vue sélectionnée, comme suit :-
limited
: le mode LOB limité par défaut est le plus rapide et le plus efficace. Utilisez ce mode uniquement si tous vos LOB sont petits (moins de 100 Mo) ou si le point de terminaison cible ne prend pas en charge une taille de LOB illimitée. De plus, si vous utilisezlimited
, tous les LOB doivent se trouver dans la limite de taille que vous avez définie pourbulk-max-size
.Dans ce mode, pour une tâche de chargement complet, l'instance de réplication migre tous les LOB en ligne avec les autres types de données de colonne dans le cadre d'un stockage de table ou de vue principal. Toutefois, l'instance tronque les LOB supérieurs à votre valeur
bulk-max-size
à la taille spécifiée. Pour un chargement de capture des données modifiées (CDC), l'instance migre tous les LOB à l'aide d'une recherche de table source, quelle que soit la taille des LOB, comme dans le mode LOB complet standard.Note
Vous ne pouvez migrer des vues que pour les tâches de chargement complet.
-
unlimited
: le mécanisme de migration pour le mode LOB complet dépend de la valeur que vous définissez pourbulk-max-size
, comme suit :-
Mode LOB complet standard : lorsque vous définissez
bulk-max-size
sur zéro, l’instance de réplication migre tous les objets LOB à l’aide du mode LOB complet standard. Ce mode nécessite une recherche dans la table ou la vue source afin de migrer tous les LOB, quelle que soit leur taille. Cela entraîne généralement une migration un peu plus lente que pour le mode LOB limité. Utilisez ce mode uniquement si la totalité ou la plupart de vos LOB sont volumineux (1 Go ou plus). -
Mode LOB complet avec combinaison : lorsque vous définissez
bulk-max-size
sur une valeur différente de zéro, ce mode LOB complet utilise une combinaison du mode LOB limité et du mode LOB complet standard. En d'autres termes, si une taille de LOB est incluse dans votre valeurbulk-max-size
, l'instance migre le LOB en ligne comme dans le mode LOB limité. Si la taille de LOB est supérieure à cette valeur, l’instance migre le LOB à l'aide d'une recherche dans la table ou la vue source comme dans le mode LOB complet standard. Pour un chargement de capture des données modifiées (CDC), l'instance migre tous les LOB à l'aide d'une recherche de table source, quelle que soit la taille des LOB, comme dans le mode LOB complet standard. Il procède ainsi quelle que soit la taille du LOB.Note
Vous ne pouvez migrer des vues que pour les tâches de chargement complet.
Ce mode entraîne une vitesse de migration constituant un compromis entre le mode LOB limité plus rapide et le mode LOB complet standard plus lent. Utilisez ce mode uniquement lorsque vous avez une combinaison de LOB de petites et grandes tailles et que la plupart des LOB sont petits.
Ce mode LOB complet avec combinaison n'est disponible que pour les points de terminaison suivants :
-
IBM Db2 en tant que source
-
SAP ASE comme source ou cible
-
Quelle que soit la façon dont vous spécifiez le mode
unlimited
, l'instance migre tous les LOB entièrement, sans troncature. -
-
none
: l’instance de réplication migre les objets LOB de la table ou la vue sélectionnée à l’aide de vos paramètres LOB de tâche. Vous pouvez utiliser cette option pour comparer les résultats de la migration avec et sans paramètres LOB pour la table ou la vue sélectionnée.
Si la table ou la vue spécifiée a des LOB inclus dans la réplication, vous ne pouvez définir le paramètre de tâche
BatchApplyEnabled
surtrue
qu'en cas d'utilisation du mode LOBlimited
.Dans certains cas, il se peut que vous définissiez
BatchApplyEnabled
surtrue
etBatchApplyPreserveTransaction
surfalse
. Dans ce cas, l'instance définitBatchApplyPreserveTransaction
surtrue
si la table ou la vue a des LOB et que les points de terminaison source et cible sont Oracle. -
-
bulk-max-size
: définissez cette valeur sur zéro ou sur une valeur différente de zéro en kilo-octets, selon lemode
, comme décrit dans les éléments précédents. En modelimited
, vous devez définir une valeur différente de zéro pour ce paramètre.L'instance convertit les LOB au format binaire. Par conséquent, pour spécifier le LOB de plus grande taille que vous devez répliquer, multipliez sa taille par trois. Par exemple, si la taille du LOB le plus grand est de 2 Mo, définissez
bulk-max-size
sur 6 000 (6 Mo).
Exemples de paramètres de table
Vous trouverez ci-dessous des exemples qui illustrent l'utilisation des paramètres de table.
Exemple Charger une table segmentée par partitions
L'exemple suivant charge une table SALES
de votre source plus efficacement en la chargeant en parallèle sur la base de toutes ses partitions.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }
Exemple Charger une table segmentée par sous-partitions
L'exemple suivant charge une table SALES
dans votre source Oracle plus efficacement en la chargeant en parallèle sur la base de toutes ses sous-partitions.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }
Exemple Charger une table segmentée par une liste de partitions
L'exemple suivant charge une table SALES
de votre source en la chargeant en parallèle sur la base d’une liste de partitions particulière. Ici, les partitions spécifiées sont nommées à partir de valeurs commençant par des parties de l'alphabet, par exemple, ABCD
, EFGH
, etc.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }
Exemple Charger une table Oracle segmentée par une liste sélectionnée de partitions et sous-partitions
L'exemple suivant charge une table SALES
de votre source Oracle en la chargeant en parallèle sur la base d’une liste sélectionnée de partitions et sous-partitions. Ici, les partitions spécifiées sont nommées à partir de valeurs commençant par des parties de l'alphabet, par exemple, ABCD
, EFGH
, etc. Les sous-partitions spécifiées sont nommés à partir de valeurs commençant par des chiffres, par exemple, 01234
et 56789
.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }
Exemple Charger une table segmentée par des plages de valeurs de colonne
L'exemple suivant charge une table SALES
de votre source en la chargeant en parallèle par les segments spécifiés par les plages de valeurs de colonne SALES_NO
et REGION
.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }
Ici, deux colonnes sont spécifiées pour les plages de segment avec les noms SALES_NO
et REGION
. Deux limites sont spécifiées avec deux ensembles de valeurs de colonne (["1000","NORTH"]
et ["3000","WEST"]
).
Ces deux limites identifient donc les trois segments de table suivants à charger en parallèle :
- Segment 1
-
Lignes avec des valeurs
SALES_NO
inférieures ou égales à 1 000 etREGION
inférieures à « NORTH ». En d'autres termes, les chiffres de vente jusqu'à 1 000 dans la région EAST. - Segment 2
-
Lignes autres que Segment 1 avec des valeurs
SALES_NO
inférieures ou égales à 3 000 etREGION
inférieures à « WEST ». En d'autres termes, les chiffres de vente compris entre 1 000 et 3 000 dans les régions NORTH et SOUTH. - Segment 3
-
Toutes les lignes restantes autres que Segment 1 et Segment 2. En d'autres termes, les chiffres de vente supérieurs à 3 000 dans la région WEST.
Exemple Charger deux tables : une segmentée par plages et une autre segmentée par partitions
L'exemple suivant charge une table SALES
en parallèle par les limites de segment que vous identifiez. Il charge également une table ORDERS
en parallèle par l'ensemble de ses partitions, comme avec les exemples précédents.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }
Exemple Charger une table avec des LOB à l’aide du mode LOB limité
L'exemple suivant charge une table ITEMS
incluant des LOB de votre source à l'aide du mode LOB limité (valeur par défaut) avec une taille maximale non tronquée de 100 Mo. Les LOB qui dépassent cette taille sont tronqués à 100 Mo. Tous les LOB sont chargés en ligne avec tous les autres types de données de colonne.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }
Exemple Charger une table avec des LOB à l’aide du mode LOB complet standard
L'exemple suivant charge une table ITEMS
de votre source, y compris tous ses LOB sans troncation à l’aide du mode LOB complet standard. Tous les LOB, quelle que soit leur taille, sont chargés séparément des autres types de données à l'aide d'une recherche de chaque LOB dans la table source.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "0" } } ] }
Exemple Charger une table avec des LOB à l’aide du mode LOB complet avec combinaison
L'exemple suivant charge une table ITEMS
de votre source, y compris tous ses LOB sans troncation à l’aide du mode LOB complet avec combinaison Tous les LOB dont la taille est inférieure à 100 Mo sont chargés en ligne avec les autres types de données, comme dans le mode LOB limité. Tous les LOB supérieurs à 100 Mo sont chargés séparément des autres types de données. Ce chargement distinct utilise une recherche pour chaque LOB dans la table source, comme dans le mode LOB complet standard.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "100000" } } ] }
Exemple Charger une table avec des LOB à l'aide des paramètres LOB de tâche
L'exemple suivant charge une table ITEMS
de votre source, y compris tous les LOB, à l'aide de ses paramètres LOB de tâche. Le paramètre bulk-max-size
avec la valeur 100 Mo est ignoré et conservé uniquement pour une réinitialisation rapide au mode limited
ou unlimited
.
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none", "bulk-max-size": "100000" } } ] }