2010-08-30 4 views
0

Nous prévoyons la migration d'une installation Oracle de Solaris vers Linux. Dans le même temps, nous allons mettre à niveau vers la dernière version d'Oracle. Il y a quelques centaines de procédures stockées qui devraient également être migrées.Migration et mise à niveau de Oracle sous Solaris vers Linux, y compris les procédures stockées

La version actuelle est Oracle SE 9.2. Nous continuerons à utiliser Oracle SE, potentiellement avec RAC.

Y a-t-il quelque chose que nous devons considérer avant de faire cela? Des problèmes que vous avez rencontrés en faisant cela? Toutes les informations qui peuvent nous aider sont précieuses.

Merci d'avance!

/Niklas

Répondre

3

Nous venons tout juste de cela, bien que nous deux elle a intensifié - a de 9 à 10 l'an dernier, puis 10 à 11 cette année. Je vais essayer de rappeler de mémoire ce que nous avons trouvé:

A. Si vous avez des requêtes avec un GROUP BY vous voudrez ajouter un ORDER BY correspondant, comme les nouvelles versions d'Oracle ne tombent pas (généralement) dans un TRI SORT pendant le traitement GROUP BY. En d'autres termes, s'il y a une requête comme

SELECT * FROM SOME_TABLE 
    GROUP BY FIELD_1, FIELD_2 

vous voulez changer cela

SELECT * FROM SOME_TABLE 
    GROUP BY FIELD_1, FIELD_2 
    ORDER BY FIELD_1, FIELD_2 

B. Je vous suggère de conserver une copie de votre base de données 9.x autour pendant un certain temps si vous pouvez comparer le plan généré sous 9 à celui généré sous 11. L'optimiseur dans 11.x peut évaluer certaines requêtes très différemment de 9.x ou 10.x. Nous avons constaté que l'une de nos requêtes les plus volumineuses que nous avions indiquées de manière appropriée pour la version 10.x fonctionnait très lentement sous 11.x. Après un après-midi où les développeurs et les administrateurs de bases de données se sont arraché les cheveux, nous avons constaté que l'indice ORDERED restituait le plan et la performance d'origine.

C. Si vous avez un code qui est explicitement la création d'utiliser l'optimiseur basé sur des règles en faisant quelque chose comme

alter session set optimizer_goal = rule 

vous obtiendrez une erreur indiquant que l'optimiseur fondé sur des règles est obsolète .

D. Le code PL/SQL qui crée une collection mais qui ne l'initialise pas peut fonctionner sous 9.x mais échouera sous 11.x. Un exemple serait

TYPE tMyArray IS VARRAY(100) OF VARCHAR2(100); 

arrMyArray tMyArray; -- <-- uninitialized array 

Pour résoudre ce problème, vous devez modifier la déclaration variable

arrMyArray tMyArray := tMyArray(''); 

A titre de référence, le 9 -> 10 mise à niveau était le plus de travail. 10 -> 11 était à peu près une évidence (à l'exception de quelques requêtes qui ont eu des problèmes - voir B).

+0

Merci, c'est vraiment une bonne information. Appréciez-le! – Nicsoft

1

Dataguard proprement dit est en fait une caractéristique Enterprise Edition.

+0

Vrai, a été incorrectement informé plus tôt ... Merci pour l'info! Mise à jour ma question – Nicsoft