background success stories

ORA-01722 au démarrage d’une migration 11.2.0.x vers 11.2.0.4 sous Windows

Vous êtes tranquillement en train de migrer une base de données sous Windows 2008 de 11.2.0.x à 11.2.0.4 pour vous mettre « provisoirement » en release finale de la version 11 et au lancement de la mise à jour du catalogue on obtient une superbe erreur :

ORA-01722 invalid number

Tout d’abord vous vous dites que vous avez mal renseigné l’environnement. Après vérification, les variables d’environnement sont correctement positionnées, le path a bien le chemin du nouveau Oracle Home en premier et vous avez bien démarré votre base en « startup upgrade » avec les bons binaires.

La deuxième hypothèse c’est d’avoir « mal passé » le script de pré migration, le fameux utlu112.sql qui liste les points qui pourraient poser problème au cours de la migration.
On le repasse en vérifiant bien chaque étape, pour obtenir la même erreur.

Au final, après avoir tout retourné, il s’avère qu’il faut une fois la base arrêtée en environnement de départ et avant de la démarrer en mode upgrade, aller modifier le path des services windows de la base qui eux continue à pointer vers l’ancien home.

Ce qui fait que même avec votre nouvel environnement correctement positionné sous DOS, quand vous allez lancer un script dans un script (c’est le cas dans le script catupgrd.sql) vous ne pointerez pas dans le bon home.

Avec regedit dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services modifier les trois services de la base.

AVO_2007216_regedit1

En changeant leur path comme suit :

AVO_2007216_regedit2

AVO_2007216_regedit3

Vous n’avez plus qu’à redémarrer votre base en mode upgrade et à relancer votre script catuprgd.sql.