mercredi 15 décembre 2010

Migration d'une base windows vers linux et vise-versa

J'ai envie de partager avec vous, l'une de mes expériences de migration ORACLE. L'objectif étant de migrer une base oracle de Windows vers linux.

Cas d'étude :
Système cible : Linux 5u3 32bit
Système source : Win 2003 32bit

Avant de commencer, vérifier le format Endian de votre système source.
Vous remarquez que les deux systèmes (windows et linux) disposent du même format endian.

Prochaine étape, récupérer le nom et le type de la plateforme cible.


Avant de vous lancez dans l'aventure, vérifier la possibilité de migration de la base à l’aide du package dbms_tdb.check_db.

Si le package renvoi la valeur False, la base de données ne peut être transportée et dans ce cas vous devez utiliser une autre méthode (e.g. TRANSPORTABLE TABLESPACE) à la place de la conversion de base moyennant RMAN.
 
 Ensuite, vérifier l’existence et le format des tables externs, directory et BFILE, en utilisant le package dbms_tdb.check_external.

cette ensemble de données externes seront à recréer après migration, car rman ne sais pas les transporter.


Créer un dossier destiné à héberger les datafiles en format converti.

$mkdir converted 



Démarrer la base en mode lecture seul, pour garantir la consistance des données.



On y est, nous allons utiliser maintenant la commande de conversion, pour migrer la base vers notre système cible.

$rman target /
Notre que le script transport.sql, servira plus tard pour lancer la création de la base au niveau du système cible.

Générer le fichier d’initialisation de la base.

Au niveau du système vérifier la création des fichiers récemment convertis

$dir  c:\converted

Puis, transférer les fichiers vers le système cible via les outils système (cp, ntfs, ftp …)

Créer un dossier au niveau de serveur cible "linux", pour y mettre l’ensemble des fichiers générés.

Créer les dossiers d’administration oracle, dumps et flash_recovery. Nécessaires pour la création de la base cible.

cd $ORACLE_HOME
mkdir admin
cd admin
mkdir lindb
cd lindb
mkdir adump bdump cdump udump
cd ../../
mkdir flash_recovery_area
mkdir oradata
mkdir lindb

copier l’ensemble des fichiers de données “*.dbf”, vers le dossier créé.

cp c:\converted\*.dbf $ORACLE_HOME/oradata/lindb/

Il ne vous reste plusn qu’à adapter le fichier d’initialisation pfile.ora ainsi que le script transport.sql à votre nouvel environnement pour refléter la structure de la nouvelle arborescence.

Amusez-vous !!!

Lancer le script transport.sql depuis une session sqlplus

$export ORACLE_SID=lindb
Sqlplus / as sysdba
SQL>@c:\coverted\transport.sql

une fois la création terminée, fait une vérification final

SQL>select COUNT(*) "ERRORS DURING RECOMPILATION" from utl_recomp_errors;

ERRORS DURING RECOMPILATION
---------------------------
                          0

Et voilà,

SQL> select name, open_mode from v$database;

NAME      OPEN_MODE
--------- ----------
LINDB     READ WRITE

Enjoy !!!





A suivre, opérations d'après migration (cas linux vers windows)....