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.
Migrez CLOB les valeurs Oracle vers des lignes individuelles dans Postgre SQL sur AWS
Créé par Sai Krishna Namburu (AWS) et Sindhusha Paturu () AWS
Environnement : PoC ou pilote | Source : base de données Oracle | Cible : Aurora Postgre SQL -Compatible ou Amazon RDS pour Postgre SQL |
Type R : Replateforme | Charge de travail : Oracle ; logiciel libre | Technologies : migration ; stockage et sauvegarde ; bases de données |
AWSservices : Amazon Aurora AWS DMS ; Amazon S3 ; Amazon RDS |
Récapitulatif
Ce modèle décrit comment diviser les valeurs Oracle Character Large Object (CLOB) en lignes individuelles dans Amazon Aurora Postgre SQL -Compatible Edition et Amazon Relational Database Service (AmazonRDS) pour Postgre. SQL Postgre SQL ne prend pas en charge ce type de CLOB données.
Les tables comportant des partitions par intervalles sont identifiées dans la base de données Oracle source, et le nom de la table, le type de partition, l'intervalle de la partition et les autres métadonnées sont capturés et chargés dans la base de données cible. Vous pouvez charger CLOB des données d'une taille inférieure à 1 Go dans les tables cibles sous forme de texte à l'aide de AWS Database Migration Service (AWSDMS), ou vous pouvez exporter les données CSV au format, les charger dans un bucket Amazon Simple Storage Service (Amazon S3) et les migrer vers votre base de données Postgre cibleSQL.
Après la migration, vous pouvez utiliser le SQL code Postgre personnalisé fourni avec ce modèle pour diviser les CLOB données en lignes individuelles en fonction du nouvel identifiant de caractère de ligne (CHR(10)
) et remplir la table cible.
Conditions préalables et limitations
Prérequis
Table de base de données Oracle comportant des partitions d'intervalles et des enregistrements contenant un type de CLOB données.
Une SQL base de données SQL compatible avec Aurora Postgre ou Amazon RDS pour Postgre dotée d'une structure de table similaire à celle de la table source (mêmes colonnes et types de données).
Limites
La CLOB valeur ne peut pas dépasser 1 Go.
Chaque ligne de la table cible doit avoir un nouvel identifiant de caractère de ligne.
Versions du produit
Oracle 12c
Aurora Postgres 11.6
Architecture
Le schéma suivant montre une table Oracle source contenant CLOB des données et la table Postgre équivalente dans la version SQL 11.6 d'Aurora Postgre SQL -Compatible.
Outils
AWSservices
Amazon Aurora Postgre SQL -Compatible Edition est un moteur de base de données relationnelle entièrement géré ACID et conforme qui vous aide à configurer, exploiter et dimensionner les déploiements Postgre. SQL
Amazon Relational Database Service (RDSAmazon) pour SQL Postgre vous aide à configurer, exploiter et dimensionner une base de données relationnelle SQL Postgre dans le cloud. AWS
AWSDatabase Migration Service (AWSDMS) vous aide à migrer des banques de données vers le AWS cloud ou entre des combinaisons de configurations cloud et sur site.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Autres outils
Vous pouvez utiliser les outils clients suivants pour vous connecter, accéder et gérer vos bases de données Aurora Postgre SQL -Compatible et Amazon RDS for SQL Postgre. (Ces outils ne sont pas utilisés dans ce modèle.)
pgAdmin
est un outil de gestion open source pour SQL Postgre. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données. DBeaver
est un outil de base de données open source destiné aux développeurs et aux administrateurs de bases de données. Vous pouvez utiliser cet outil pour manipuler, surveiller, analyser, administrer et migrer vos données.
Bonnes pratiques
Pour connaître les meilleures pratiques relatives à la migration de votre base de données d'Oracle vers PostgreSQL, consultez le billet de AWS blog Meilleures pratiques pour la migration d'une base de données Oracle vers Amazon Postgre ou RDS Amazon SQL Aurora Postgre SQL : considérations relatives au processus de migration
Pour connaître les meilleures pratiques relatives à la configuration de la AWS DMS tâche de migration d'objets binaires de grande taille, consultez la section Migration d'objets binaires de grande taille (LOBs) dans la AWS DMS documentation.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Analysez les CLOB données. | Dans la base de données Oracle source, analysez les CLOB données pour voir si elles contiennent des en-têtes de colonne, afin de déterminer la méthode de chargement des données dans la table cible. Pour analyser les données d'entrée, utilisez la requête suivante.
| Developer |
Chargez les CLOB données dans la base de données cible. | Migrez la table contenant CLOB des données vers une table intermédiaire (intermédiaire) dans la base de données RDS cible Aurora ou Amazon. Vous pouvez utiliser AWS DMS ou télécharger les données sous forme de CSV fichier dans un compartiment Amazon S3. Pour plus d'informations sur l'utilisation AWS DMS de cette tâche, consultez les sections Utilisation d'une base de données Oracle comme source et Utilisation d'une SQL base de données Postgre comme cible dans la AWS DMS documentation. Pour plus d'informations sur l'utilisation d'Amazon S3 pour cette tâche, consultez la section Utilisation d'Amazon S3 comme cible dans la AWS DMS documentation. | Ingénieur en migration, DBA |
Validez la SQL table Postgre cible. | Validez les données cibles, y compris les en-têtes, par rapport aux données source en utilisant les requêtes suivantes dans la base de données cible.
Comparez les résultats aux résultats des requêtes de la base de données source (dès la première étape). | Developer |
Divisez les CLOB données en lignes distinctes. | Exécutez le SQL code Postgre personnalisé fourni dans la section Informations supplémentaires pour diviser les CLOB données et les insérer dans des lignes distinctes dans la table Postgre SQL cible. | Developer |
Tâche | Description | Compétences requises |
---|---|---|
Validez les données de la table cible. | Validez les données insérées dans la table cible à l'aide des requêtes suivantes.
| Developer |
Ressources connexes
CLOBtype de données
(documentation Oracle) Types de données
(SQLdocumentation Postgre)
Informations supplémentaires
SQLFonction Postgre pour diviser les données CLOB
do $$ declare totalstr varchar; str1 varchar; str2 varchar; pos1 integer := 1; pos2 integer ; len integer; begin select rawdata||chr(10) into totalstr from clobdata_pg; len := length(totalstr) ; raise notice 'Total length : %',len; raise notice 'totalstr : %',totalstr; raise notice 'Before while loop'; while pos1 < len loop select position (chr(10) in totalstr) into pos2; raise notice '1st position of new line : %',pos2; str1 := substring (totalstr,pos1,pos2-1); raise notice 'str1 : %',str1; insert into clobdatatarget(data) values (str1); totalstr := substring(totalstr,pos2+1,len); raise notice 'new totalstr :%',totalstr; len := length(totalstr) ; end loop; end $$ LANGUAGE 'plpgsql' ;
Exemples d'entrée et de sortie
Vous pouvez utiliser les exemples suivants pour tester le SQL code Postgre avant de migrer vos données.
Créez une base de données Oracle avec trois lignes de saisie.
CREATE TABLE clobdata_or ( id INTEGER GENERATED ALWAYS AS IDENTITY, rawdata clob ); insert into clobdata_or(rawdata) values (to_clob('test line 1') || chr(10) || to_clob('test line 2') || chr(10) || to_clob('test line 3') || chr(10)); COMMIT; SELECT * FROM clobdata_or;
Cela affiche le résultat suivant.
id | données brutes |
1 | ligne de test 1 ligne de test 2 ligne de test 3 |
Chargez les données sources dans une table SQL intermédiaire Postgre (clobdata_pg
) pour les traiter.
SELECT * FROM clobdata_pg; CREATE TEMP TABLE clobdatatarget (id1 SERIAL,data VARCHAR ); <Run the code in the additional information section.> SELECT * FROM clobdatatarget;
Cela affiche le résultat suivant.
id1 | data |
1 | ligne de test 1 |
2 | ligne de test 2 |
3 | ligne de test 3 |