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

[https://ocptechnology.com/how-to-upgrade-11g-to-19c-manually/](https://ocptechnology.com/how-to-upgrade-11g-to-19c-manually/)  
[https://www.oracle.com/africa/a/tech/docs/twp-upgrade-oracle-database-19c.pdf](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](https://kb.systea.fr/books/oracle/page/migration-dune-base-vers-un-nouveau-serveur-avec-changement-du-chemin-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 :

```shell
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

```shell
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

```SQL
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

```shell
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

```shell
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
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
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

```shell
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
SQL> EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
SQL>@/oracle/preupgrade/postupgrade_fixups.sql
```

Relancer la base en mode normal

```SQL
SQL> shutdown immediate;
SQL> startup
```