English
Français

Blog of Denis VOITURON

for a better .NET world

Oracle vers SQL Server via SSMA

Posted on 2020-07-17

Pour un nouveau client, nous devons récupérer l’ensemble de ses données présentes dans une base de données Oracle. L’objectif est de les migrer vers un serveur Azure SQL Server. Heureusement, Microsoft nous propose un outil de migration complet : SQL Server Migration Assistant (SSMA).

Avant de démarrer cette migration, nous avons souhaité vérifier si tout se passait correctement, lors de cette migration. Pour cela nous souhaitons copier la base Oracle dans une machine virtuelle de test pour y enclencher la migration vers SQL Server.

1. Installer Oracle et SQL Server

La première étape consiste donc à créer une machine virtuelle dans Azure (Windows avec 2 vCPU et 16 Go de RAM). Après quelques minutes, on peut s’y connecter en Remote Desktop, et télécharger les applications :

  1. Téléchargez Oracle server et installez le en suivant l’assistant. Notez évidemment le mot de passe et le SID renseigné lors de l’installation.

  2. Téléchargez Oracle SQL Developer et installez le, pour nous permettre d’exécuter des requêtes SQL dans la base Oracle.

  3. Téléchargez SQL Server Express et installez le en suivant l’assistant. Cette version comprend SQL Server Management Studio (SSMS) nécessaire pour vérifier l’état des tables importées.

  4. Téléchargez SQL Server Migration Assistant et installez le.

2. Importer les données Oracle

Démarrez Oracle SQL Developer et ajoutez une connexion vers votre serveur :

Oracle Connection

Créez un nouvel utilisateur c##dvo2 (par exemple) ayant les droits complet, pour restaurer la base de donnés dans ce nouveau schéma (Oracle 19 impose un préfixe c## aux noms des utilisateurs).

CREATE USER c##dvo2 IDENTIFIED BY MyPassword;
GRANT dba TO c##dvo2 WITH ADMIN OPTION;

Remarque: il est important de créer un nouveau schéma, car SSMA ne permet pas de migrer les tables présentes dans le schéma SYSTEM existant.

Importez le fichier DUMP, contenant la copie complète de votre base de données. Pour cela, ouvrez un terminal (Command Prompt) et exécuter la commande imp et répondez aux questions : utilisateur, mot de passe, fichier .dmp et tout importer.

Oracle Import

Une fois les données restaurées, vous pouvez utiliser Oracle SQL Developer. Connectez vous avec l’utilisateur c##dvo2 créé précédemment, pour naviguer dans les tables et pour exécuter des requêtes SQL.

Oracle Import

3. Importer la base dans SQL Server

Démarrez SQL Server Management Studio et créez une nouvelle base de données (ex. MyDb-2020).

Démarrez SQL Server Migration Assistant (SSMA) et suivez ces étapes :

  1. Créez un nouveau projet: File / New project.
  2. Connectez-vous sur la base de données Oracle et sélectionnez le schéma c##dvo2 créé précédemment. SSMA Oracle Connection

    Il est possible que le temps de traitement soit trop long et que vous receviez une erreur lors du “Counting objects to be loaded”. Dans ce cas, créez un driver ODBC vers la base Oracle, en désactivant l’option Query Timeout. Utilisez cette chaine de connection dans SSMA : DSN=dsn_oracle;Uid=c##dvo2;Pwd=MyPassword; Oracle ODBC

    Ce processus de connexion vers Oracle peut être très long (plusieurs dizaines de minutes).

  3. Connectez-vous sur la base de données SQL Server en spécifiant le nom de la base définie précédemment. SQLServer Connection

    Enregistrer votre projet (File / Save Project) pour éviter de recommencer tout ce processus, en cas de problème.

  4. Sélectionnez le schéma Oracle et la base SQL Server de destination. Puis, via un click droit sur le schéma, demander de générer un schéma de données pour SQL Server. Cela peut égalment prendre plusieurs minutes. Convert Schema

    Ensuite, refaite un click droit sur le schéma c##dvo2 dans SQL Server pour demander de Synchroniser le schéma entre Oracle vers SQL Server. Cela exécutera le schéma généré à l’instant dans SQL Server. A la fin de cette étape, vous disposerez des tables, des procédures stockées, etc. dans SQL Server (sans contenu).

    Finalement, terminez par un click droit sur le schéma Oracle, pour demander de publier les données vers SQL Server. Cela ajoutera toutes les données des tables Oracle, dans les tables SQL Server. minutes. Migration

Langues

EnglishEnglish
FrenchFrançais

Suivez-moi

Articles récents