Skip to main content

Full upgrade 11g -> 19c après transfert des fichiers

https://ocptechnology.com/how-to-upgrade-11g-to-19c-manually/
https://www.oracle.com/africa/a/tech/docs/twp-upgrade-oracle-database-19c.pdf

La migration va se faire d'un serveur SRVORA11G avec Oracle 11g vers un nouveau serveur SRVORA19C avec Oracle 19c.
Le chemin des fichiers Oracle reste le même entre les deux serveurs, il n'y a donc pas de renommage à faire. Dans le cas contraire, se reporter à la procédure avec changement des chemins des fichiers.

Toutes les commandes ci-dessous seront réalisées sous l'utilisateur linux "oracle" avec lequel sont installé les binaires 11g et 19c.

Sur les 2 serveurs :

mkdir /oracle/preupgrade/

Sur SRVORA19C, créer une base vide afin de préparer l'arborescence des fichiers et de l'environnement. Stopper la base après création.

Sur SRVORA11G

transfert du script preugrade de la 19c sur le serveur 11g, et lancement 

scp SRVORA19C:/oracle/ora19c/dbhome/rdbms/admin/preupgrade.jar /oracle/preupgrade/
export ORACLE_SID=ORCL
/oracle/ora11g/dbhome/jdk/bin/java -jar /oracle/preupgrade/preupgrade.jar FILE DIR /oracle/preupgrade/

Préparation de la base 11g

sqlplus / as sysdba
SQL> SELECT version FROM v$timezone_file;
SQL> purge dba_recyclebin;
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> create pfile from spfile;
SQL> shutdown immediate;

Copie des 2 fichiers SQL générés par le script preupgrade, et de l'init.ora, vers SRVORA19C

scp /oracle/preupgrade/*upgrade_fixups.sql SRVORA19C:/oracle/preupgrade/
scp /oracle/ora11g/dbhome/dbs/initORCL.ora SRVORA19C:/oracle/ora19c/dbhome/dbs

Puis copie des fichiers de la base 11g vers SRVORA19C

rsync -av  --progress /u01/orcl/* SRVORA19C:/u01/orcl/
rsync -av --progress /u01/redo1/* SRVORA19C:/u01/redo1/
rsync -av --progress /u01/redo2/* SRVORA19C:/u01/redo2/

Sur SRVORA19C

modifier initORCL.ora (enlever les paramètres dynamiques, modifier *.compatible='19.0.0'), créer le SPFILE

SQL> create spfile from pfile;

NOTE : si nécessaire, ajouter un peu de RAM (paramètres memory_max_target et memory_target) à la base car la 19 est plus gourmande.

Démarrer la base en mode UPGRADE et lancer le premier script généré par preupgrade

SQL> startup upgrade
[...]
SQL>@/oracle/preupgrade/preupgrade_fixups.sql
ERROR:
ORA-04023: L'objet SYS.STANDARD n'a pas pu etre valide ou autorise

NOTE : cette erreur peut être ignorée depuis la 12c si on utilise le script en ligne de commande, plutôt que l'upgrade par le script catupd.sql.

Lancer l'upgrade

cd $ORACLE_HOME/bin
./dbupgrade
[...]
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
SQL> startup
SQL> @catuppst.sql
SQL> @utlrp.sql

Valider les statistiques et lancer le second script postupgrade

SQL> EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
SQL>@/oracle/preupgrade/postupgrade_fixups.sql

Relancer la base en mode normal

SQL> shutdown immediate;
SQL> startup