Dans le dernier épisode nous avons vu comment les décors ont été montés, la scène validée et étalonnée. Maintenant il s’agit de passer à l’action, le ciel nous attends! Attacher votre ceinture , tenez vous bien en arrière sur votre siège, c’est le décollage !
Notre première objectif sera d’utiliser le pilotage automatique avec l’assistant « dbua » (Database Upgrade Assistant) , il y a de vrais avantages à prendre cette option :
- Tout est fait par l’outil , pas de risque d’oubli d’une étape ou d’erreur suite à une faute de frappe;
la mise à jour du fichier oratab est faite automatiquement , le nouvel ORACLE_HOME y est positionné; - Le fichier de configuration réseau tnsnames.ora est mise à jour ;
- la nouvelle console d’administration est construite pour vous;
- Il peut être exécuter en mode complètement silencieux , pas d’interrogation pas d’interface graphique à configurer sur vos serveurs;
- Certaines opérations peuvent se déclencher en parallèle pour plus de rapidité d’exécution, limitant la durée d’indisponibilité de votre base.
Voici la procédure pour réaliser l’opération et certains points de vérification :
- Contenu du fichier /etc/oratab avant la migration :
ora112:/u01/app/oracle/product/11.2.0.3:N
- Vérification de la présence et fonctionnement de la base source de la migration
SQL> select * from v$version ; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production
- Configurer le bon environnement, ici celui de la version cible (12c)
$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0.1 $ export PATH=$ORACLE_HOME/bin:$PATH
- Démarrer l’assistant et réaliser la migration en une seule fois
$dbua -silent -sid ora112 -oracleHome /u01/app/oracle/product/11.2.0.3 Log files for the upgrade operation are located at: /u01/app/oracle/cfgtoollogs/dbua/ora112/upgrade16 Performing Pre Upgrade 4% complete 20% complete Performing RDBMS Upgrade 20% complete …/… 39% complete 40% complete Performing Post Upgrade 42% complete 44% complete 60% complete Configuring Database with Enterprise Manager 62% complete 64% complete 80% complete Generating Summary Database upgrade has been completed successfully, and the database is ready to use. 100% complete Check the log file "/u01/app/oracle/cfgtoollogs/dbua/logs/silent.log_1375282039360" for upgrade details.
Et voila ! 73 minutes plus tard vous voici dans les nuages avec une base en version 12c.
Rien de plus simple.
Regardons en détail les fichiers journaux générés pour se rendre compte du travail effectué:
Tout d’abord le fichier principal silent.log_nnnnnnnnnnnn
[oracle@easydirtech bin]$ ls -ltr /u01/app/oracle/cfgtoollogs/dbua/logs/silent.log_1375282039360 -rw-r-----. 1 oracle oinstall 3557 Jul 31 12:01 /u01/app/oracle/cfgtoollogs/dbua/logs/silent.log_1375282039360 [oracle@easydirtech bin]$cat /u01/app/oracle/cfgtoollogs/dbua/logs/silent.log_1375282039360 Upgrading the database dbName="ora112" Database contains schemas with objects dependent on DBMS_LDAP package. Refer to the Oracle Database Upgrade Guide for instructions to configure Network ACLs. Database contains INVALID objects prior to upgrade. The list of invalid SYS/SYSTEM objects was written to registry$sys_inv_objs. The list of non-SYS/SYSTEM objects was written to registry$nonsys_inv_objs unless there were over 5000. Use utluiobj.sql after the upgrade to identify any new invalid objects due to the upgrade. Supported upgrade version check succeeded. The oratab permission check succeeded. Oracle Home Owner Check succeeded. Database does not use ASM storage. Space usage summary Space usage reason: Upgrade Tablespace Name: SYSTEM Additional space required: 507 MB Datafile: /u01/app/oracle/oradata/ora112/system01.dbf Auto Extensible: Yes Tablespace Name: SYSAUX Additional space required: 905 MB Datafile: /u01/app/oracle/oradata/ora112/sysaux01.dbf Auto Extensible: Yes Tablespace Name: UNDOTBS1 Additional space required: 250 MB Datafile: /u01/app/oracle/oradata/ora112/undotbs01.dbf Auto Extensible: Yes Tablespace Name: TEMP Additional space required: 0 MB Datafile: /u01/app/oracle/oradata/ora112/temp01.dbf Auto Extensible: Yes Tablespace Name: EXAMPLE Additional space required: 0 MB Datafile: /u01/app/oracle/oradata/ora112/example01.dbf Auto Extensible: Yes Space usage reason: Log and Trace files Directory: /u01/app/oracle/cfgtoollogs/dbua/ora112/upgrade16 Required space: 160 MB Space usage reason: Archive Logs and Flashback Logs Fast Recovery Area: /u01/app/oracle/fast_recovery_area Estimated space required: 0 MB Disk space usage summary /u01/ has enough space. Required space is 1822 MB , available space is 11186 MB. Performing Pre Upgrade UPGRADE_PROGRESS : 4% UPGRADE_PROGRESS : 20% Performing RDBMS Upgrade UPGRADE_PROGRESS : 20% …/… UPGRADE_PROGRESS : 39% UPGRADE_PROGRESS : 40% Performing Post Upgrade UPGRADE_PROGRESS : 42% UPGRADE_PROGRESS : 44% UPGRADE_PROGRESS : 60% Configuring Database with Enterprise Manager UPGRADE_PROGRESS : 62% UPGRADE_PROGRESS : 64% UPGRADE_PROGRESS : 80% Generating Summary UPGRADE_PROGRESS : 100% Database upgrade has been completed successfully, and the database is ready to use. The following document describes important behavioral changes from previous database releases: /u01/app/oracle/product/12.1.0.1/assistants/dbua/doc/DefaultBehaviorChanges_<NLS_LANG>.html
L’outil rejoue systématiquement les tests de vérification.
Pour information, le script utluiobj.sql (présent depuis la version 11.1) peut être utilisé pour comparer les objets invalides avant et après le processus de migration. Cela m’a déjà sauvé la mise en tant que consultant pour prouver que ce n’est pas la migration qui a ajouté ces 2000 objets invalides !
A chaque exécution de l’assistant un nouveau répertoire est créé avec dessous l’ensemble des fichiers trace :
[oracle@easydirtech oracle]$ cd /u01/app/oracle/cfgtoollogs/dbua/ora112/upgrade16 [oracle@easydirtech upgrade16]$ ls -ltr total 256392 -rw-r-----. 1 oracle oinstall 0 Jul 31 10:47 trace.log.lck -rw-r-----. 1 oracle oinstall 4382 Jul 31 10:47 upgrade.xml -rw-r-----. 1 oracle oinstall 6632 Jul 31 10:47 PreUpgradeResults.html -rw-r-----. 1 oracle oinstall 947 Jul 31 10:48 PreUpgrade.log -rw-r-----. 1 oracle oinstall 0 Jul 31 10:48 Oracle_Text.log -rw-r-----. 1 oracle oinstall 5653116 Jul 31 11:47 catupgrd3.log -rw-r-----. 1 oracle oinstall 5105060 Jul 31 11:47 catupgrd2.log -rw-r-----. 1 oracle oinstall 4769539 Jul 31 11:47 catupgrd1.log -rw-r-----. 1 oracle oinstall 246483416 Jul 31 11:47 catupgrd0.log -rw-r-----. 1 oracle oinstall 152599 Jul 31 11:50 Oracle_Server.log -rw-r-----. 1 oracle oinstall 10275 Jul 31 12:01 PostUpgrade.log -rw-r-----. 1 oracle oinstall 5658 Jul 31 12:01 UpgradeResults.html -rw-r-----. 1 oracle oinstall 213195 Jul 31 12:01 trace.log -rw-r-----. 1 oracle oinstall 86291 Jul 31 12:01 sqls.log
Les 4 fichiers catuprgd0.log à catpugrd3.log ainsi que le fichier maitre Oracle_Server.log montre que l’opération à utiliser un degré de parallélisme de 4 qui est la valeur par défaut.
Si pour une raison quelconque, vous ne souhaitez pas de parallélisme , il faut positionner un degré de « un » au lancement de l’outil, en voici un exemple d’usage :
[oracle@easydirtech ~]$ time dbua -silent -sid ora112 -oracleHome /u01/app/oracle/product/11.2.0.3 -upgrade_parallelism 1
Les fichiers catupgrdn.log n’existent plus, Oracle_server.log contient l’ensemble des informations sur les actions réalisées. Regardons de plus près la répartition du temps passé par étape :
Component Current Version Elapsed Time Name Status Number HH:MM:SS . Oracle Server UPGRADED 12.1.0.1.0 00:13:04 JServer JAVA Virtual Machine VALID 12.1.0.1.0 00:02:46 Oracle Workspace Manager VALID 12.1.0.1.0 00:01:16 OLAP Analytic Workspace VALID 12.1.0.1.0 00:00:32 Oracle OLAP API VALID 12.1.0.1.0 00:00:27 Oracle XDK VALID 12.1.0.1.0 00:00:46 Oracle Text VALID 12.1.0.1.0 00:00:51 Oracle XML Database VALID 12.1.0.1.0 00:04:18 Oracle Database Java Packages VALID 12.1.0.1.0 00:00:17 Oracle Multimedia VALID 12.1.0.1.0 00:02:40 Spatial VALID 12.1.0.1.0 00:05:49 Oracle Application Express VALID 4.2.0.00.27 00:22:32 Final Actions 00:02:07 Total Upgrade Time: 00:57:54
La durée des opérations de post upgrade n’est pas noté ici, mais on voit d’après ces traces qu’en série le traitement a été aussi rapide ( 1h00) et que la partie la plus importante est la mise à jour de la version d’APEX en plus de 22 minutes.
Ayant en tête le fait que pendant cette heure notre application est indisponible, voyons s’il est possible de diminuer cette fenêtre.
Je régénère ma configuration de départ (restauration de la base et des fichiers de configurations dans leur version d’origine) et j’augmente les caractéristiques de ma machine virtuelle en passant de 2 à 6 vCPU (une simple modification et redémarrage avec Oracle VM Manager) .
Pour utiliser mes 6 cpus en parallèle , la mise à jour devient :
[oracle@easydirtech ~]$ time dbua -silent -sid ora112 -oracleHome /u01/app/oracle/product/11.2.0.3 -upgrade_parallelism 6 Log files for the upgrade operation are located at: /u01/app/oracle/cfgtoollogs/dbua/ora112/upgrade17 Performing Pre Upgrade 4% complete 20% complete Performing RDBMS Upgrade 20% complete 20% complete ../… 39% complete 39% complete 40% complete Performing Post Upgrade 42% complete 44% complete 60% complete Configuring Database with Enterprise Manager 62% complete 64% complete 80% complete Generating Summary Database upgrade has been completed successfully, and the database is ready to use. 100% complete Check the log file "/u01/app/oracle/cfgtoollogs/dbua/logs/silent.log_1377001183880" for upgrade details. real 69m52.873s user 0m26.307s sys 0m8.848s
Même durée, pas d’impact ! pas d’activité suffisamment importante à parallélisée.
Ce ne serait sans doute pas le cas pour votre base de données composée de beaucoup plus d’objets que la mienne.
Vous pourrez en tout cas essayer, vous avez maintenant la méthode.
Regardons de plus près les autres résultats consécutifs à la mise à jour:
- La version de la base a été mise à jour dans le fichier oratab;
ora112:/u01/app/oracle/product/12.1.0.1:N
- Une entrée spécifique a été créée dans le fichier tnsnames.ora pour la base ora112 et son listener, elle est utilisée par la déclaration « local_listener » du paramétrage de la base.
LISTENER_ORA112 = (ADDRESS = (PROTOCOL = TCP)(HOST = easydirtech.easyteam.fr)(PORT = 1521)) ORA112 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = easydirtech.easyteam.fr)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ora112) ) )
Concentrons nous maintenant sur les différences entre version dans les arguments et options utilisables avec l’assistant de migration « dbua » .
Voici le résultat de la commande « diff » entre les deux sorties de l’aide (version 11.2 comparer à la version 12.1) :
[oracle@easydirtech ~]$ diff /tmp/dbua112 /tmp/dbua121 8a9 > [-auditFileDest <Specify Database Audit File Destination > ] 24,28c25 < [-sysauxTablespace < -datafileName <Specify the complete path of datafile for creating SYSAUX tablespace.> < -datafileSize <Specify the size of datafile for creating SYSAUX tablespace {500M, 10G}.> ] < -datafileSizeNext <Specify the next extent for the datafile.> ] < -datafileSizeMax <Specify the max size of datafile.> ] --- > [-preUpgradeScripts <Specify a comma separated list of SQL scripts with their complete pathnames. These scripts will be executed before the upgrade.> ] 29a27 > [-ignoreScriptErrors <Specify this flag for ignoring ORA errors during custom scripts> ] 31a30,32 > [-changeUserTablespacesReadOnly <Change user tablespaces read only for the duration of the upgrade.> ] > [-gatheringStatistics <Gathering statistics before upgrade database.> ] > [-upgrade_parallelism <Specify number of CPU's to be used for parallel upgrade> ] 36,43d36 < [-emConfiguration <CENTRAL|LOCAL|ALL|NONE> < -dbsnmpPassword<DBSNMP user password> < -sysmanPassword<SYSMAN user password> < -asmPassword<SYS password for ASM instance> < -hostUserName<Host user name for EM backup job> < -hostUserPassword<Host user password for EM backup job> < -backupSchedule <Daily backup schedule in the form of hh:mm>] < [-centralAgent <Enterprise Manager central agent location>]] 45a39,49 > [-emConfiguration <DBEXPRESS|CENTRAL|BOTH|NONE>] > -dbsnmpPassword < DBSNMP user password> > [-omsHost < EM management server host name> > -omsPort < EM management server port number> > -emUser < EM Admin username to add or modify targets> > -emPassword < EM Admin user password>] > [-createGRP <To create a guaranteed restore point when database is in archive log and flashback mode> ] > [-useGRP <To restore the database using specified guaranteed restore point> ] > [-useExistingBackup <To restore database using existing RMAN backup> ] > [-listeners <To register the database with existing listeners, specify listeners by comma separated listenerName:Oracle Home. Listeners from lower release home are migrated to newer release home. Specifying -listeners lsnrName1,lsnrName2, DBUA searches specified listeners from GI home (if configured), target home and source home.> ] > [-createListener <To create a listener in newer release Oracle home specify listenrName:lsnrPort> ]
Le caractère ‘<‘ en début de ligne correspond aux informations de la version 11.2, ‘>’ est associé à la version 12.1. On constate maintenant :
- Absence de spécification pour le tablespace SYSAUX , forcément présent dans la version de départ;
- Sécurisation pour l’application avec la possibilité de passer les tablespaces utilisateurs en mode lecture seule pendant le traitement de mise à jour;
- Changement pour la configuration de la console de gestion puisque DBEXPRESS remplace LOCAL dans les choix;
- Possibilité de collecter les statistiques avant la mise à jour;
- Options de parallélisation comme nous avons pu le voir;
- Création de point spécifique de restauration, pour revenir plus facilement en arrière;
- Création d’un nouveau listener dédié à la base migrée et enregistrement de la base avec ce listener.
Migration en mode manuel
Nous avons vu que c’était très simple d’utiliser l’assistant et que c’est vraiment du pilotage automatique, mais quelles sont nos options si on souhaite avoir plus de contrôle sur les étapes de la migration ?
Reprenons depuis le début ( restauration de l’ancienne version de la base de données de mes tests) et déroulons maintenant le scénario manuel en utilisant le script SQL fourni :
- Nettoyage
Pour repartir des conditions initiales, il est nécessaire de faire le ménage dans certains fichiers du répertoire ORACLE_HOME de la version 12.1, suite au déroulement des actions précédentes (suppression des fichiers spfile et orapwd, retour arrière sur la configuration oratab listener.ora).
Garder bien en tête que toutes les étapes sont nécessaires, un oubli ou une erreur peuvent impliquer un retour en arrière d’où un délai supplémentaire si vous êtes en production.
- Arrêt complet
La première action consiste en un arrêt propre de la base de données ora112, les applications associées sont elles aussi arrêtées. En cas de transaction ou de rollback en cours, il vous faudra attendre.
[oracle@easydirtech ~]$ . oraenv ORACLE_SID = [ora121] ? ora112 --> switch environnement to 11.2 ORACLE_HOME The Oracle base remains unchanged with value /u01/app/oracle [oracle@easydirtech ~]$ echo $ORACLE_HOME /u01/app/oracle/product/11.2.0.3 [oracle@easydirtech ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Fri Aug 23 05:37:53 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create pfile='/home/oracle/initora112.ora' from spfile ; --> In case we need pfile for safety SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL>
Arrêter aussi le listener pour être certain de ne pas avoir de connexion non souhaitée. Sur ma configuration de test le listener est celui de la version 12.1 sur le port standard , attention au votre !
[oracle@easydirtech ~]$ . oraenv ORACLE_SID = [oracle] ? ora121 [oracle@easydirtech ~]$ lsnrctl stop LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 23-AUG-2013 05:35:53 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) The command completed successfully
- Démarrage en mode upgrade
Faciliter vous la vie pour la mise en place des variables d’environnement et configurer le fichier /etc/oratab avec la configuration de la nouvelle version; attention a bien avoir les droits pour modifier le fichier (propriétaire: le compte root).
Définir l’environnement et démarrer la base dans le mode migration….
Stop!
il nous faut un fichier de paramètre !!
Impossible d’utiliser le spfile de la version précédente, sinon il y a occurrence de l’erreur SP2-0714.
Je vais donc utiliser le fichier spfile créé par anticipation précédemment.
Si vous ne l’avez pas fait , rappelez vous que le fichier alert.log de la base contient toutes les informations qu’il faut pour en construire un.
SQL> startup upgrade spfile='/u01/app/oracle/product/11.2.0.3/dbs/spfileora112.ora' ; SP2-0714: invalid combination of STARTUP options SQL> startup upgrade pfile='/home/oracle/initora112.ora' ; ORACLE instance started. Total System Global Area 1252663296 bytes Fixed Size 2287864 bytes Variable Size 822085384 bytes Database Buffers 419430400 bytes Redo Buffers 8859648 bytes Database mounted. Database opened. SQL>exit
Dans cette procédure, la différence avec la version précédente est l’utilisation du fichier de commande perl catctl.pl et non plus un appel direct à catupgrd.sql. Ceci pour pouvoir profiter de la parallélisation des différentes étapes.
Voyons le contenu du fichier :
NAME # catctl.pl - CATalog ConTroL PerL program # # DESCRIPTION # This perl program processes sqlplus files and organizes # them for parallel processing based on annotations within # the files. # # NOTES # Used by catupgrd shell/bat scripts to run parallel upgrades # Connects to database specified by ORACLE_SID environment variable
Plusieurs options d’appel sont possibles, on en obtient la description en appelant la commande sans en préciser aucune:
[oracle@easydirtech ~]$ cd $ORACLE_HOME/rdbms/admin [oracle@easydirtech admin]$ $ORACLE_HOME/perl/bin/perl catctl.pl Usage: catctl [-u username] [-n processes] [-d directory] [-t table] [-l directory] [-s script] [-e] [-i] [-c] filename Supported Options: -u username (prompts for password) -n the number of processes to use for parallel operations (default 4) -d directory containing the files to be run -t table name for phase logging -l directory to use for spool log files -s SQL script to initialize sessions -e sets echo off while running the scripts -p restart phase (skip successful phases on a rerun) -i identifier to use when creating spool log files -y display phases only
Si pour une raison quelconque l’usage du perl vous incommode, le script catupgrd.sql peut être appeler de manière classique, sans le parallélisme:
@catpugrd.sql PARALLEL=NO
L’usage est décrit en début du fichier:
em NAME Rem catupgrd.sql - CATalog UPGraDe to the new release Rem Rem DESCRIPTION Rem This script is to be used for upgrading a 9.2, 10.1 or 10.2 Rem database to the new release. This script provides a direct Rem upgrade path from these releases to the new Oracle release. Rem Rem The upgrade is partitioned into the following 5 stages: Rem STAGE 1: call the "i" script for the oldest supported release: Rem This loads all tables that are necessary Rem to perform basic DDL commands for the new release Rem STAGE 2: call utlip.sql to invalidate PL/SQL objects Rem STAGE 3: Determine the original release and call the Rem c0x0x0x0.sql for the release. This performs all Rem necessary dictionary upgrade actions to bring the Rem database from the original release to new release. ../… ###################################################################### ###################################################################### NOTE The catupgrd.sql is being deprecated in the 12.1 release of the Oracle Database. Customers are encouraged to use catctl.pl as the replacement for catupgrd.sql when upgrading the database dictionary. cd $ORACLE_HOME/rdbms/admin $ORACLE_HOME/perl/bin/perl catctl.pl -n 4 catupgrd.sql Refer to the Oracle Database Upgrade Guide for more information. This database upgrade procedure must be called with the following argument when invoking from the SQL prompt: @catupgrd.sql PARALLEL=NO
- L’heure de la mise à jour
Procédons maintenant à la migration, la trace est verbeuse :
[oracle@easydirtech admin]$ time $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql Analyzing file catupgrd.sql 14 scripts found in file catupgrd.sql Next path: catalog.sql 32 scripts found in file catalog.sql Next path: catproc.sql 37 scripts found in file catproc.sql Next path: catptabs.sql 61 scripts found in file catptabs.sql Next path: catpdbms.sql 205 scripts found in file catpdbms.sql Next path: catpdeps.sql 77 scripts found in file catpdeps.sql Next path: catpprvt.sql 260 scripts found in file catpprvt.sql Next path: catpexec.sql 26 scripts found in file catpexec.sql Next path: cmpupgrd.sql 16 scripts found in file cmpupgrd.sql
et se termine comme ci-dessous, avec le temps agrégé par ma commande « time » (durée similaire à celle prise par le dbua) :
*** WARNING: ERRORS FOUND DURING UPGRADE *** Due to errors found during the upgrade process, the post upgrade actions in catuppst.sql have not been automatically run. *** THEREFORE THE DATABASE UPGRADE IS NOT YET COMPLETE *** 1. Evaluate the errors found in the upgrade logs (*.log) and determine the proper action. 2. Execute the post upgrade script as described in Chapter 3 of the Database Upgrade Guide. Time: 226s Grand Total Time: 3612s real 60m11.795s user 0m23.185s sys 0m1.352s
- Analyse Post mise à jour
Pour analyser et évaluer les erreurs , ce n’est pas la peine d’aller chercher dans les fichiers journaux, le script utlu121s.sql (qui appelle utlusts.sql – Utility Upgrade Status) résume les informations de dba_registry_log et de registry$ pour vous.
Avant de l’exécuter, il ne faut pas oublier que la base de donnée est laissée arrêtée à la fin du perl, il faut donc la rouvrir, sans oublier qu’il n’y pas encore de fichier spfile.
SQL> startup pfile='/home/oracle/initora112.ora' SQL> @utlu121s.sql Oracle Database 12.1 Post-Upgrade Status Tool 08-23-2013 08:17:47 Component Current Version Elapsed Time Name Status Number HH:MM:SS Oracle Server UPGRADED 12.1.0.1.0 00:11:39 JServer JAVA Virtual Machine VALID 12.1.0.1.0 00:02:59 Oracle Workspace Manager VALID 12.1.0.1.0 00:01:53 OLAP Analytic Workspace VALID 12.1.0.1.0 00:00:35 Oracle OLAP API . SP2-0310: unable to open file "xoqsys.sql" . ORA-01917: user or role "OLAPSYS" does not exist . ORA-00942: table or view does not exist . ORA-00942: table or view does not exist . ORA-00942: table or view does not exist . ORA-00942: table or view does not exist . ORA-00942: table or view does not exist . VALID 12.1.0.1.0 00:00:27 Oracle XDK VALID 12.1.0.1.0 00:00:46 Oracle Text VALID 12.1.0.1.0 00:00:55 Oracle XML Database VALID 12.1.0.1.0 00:04:21 Oracle Database Java Packages VALID 12.1.0.1.0 00:00:17 Oracle Multimedia VALID 12.1.0.1.0 00:02:28 Spatial VALID 12.1.0.1.0 00:05:59 Oracle Application Express VALID 4.2.0.00.27 00:23:37 Final Actions 00:03:25 Total Upgrade Time: 00:59:47 PL/SQL procedure successfully completed.
Les seules erreurs concernent l’API OLAP , dont la suppression est déjà traitée ici, le reste est valide continuons :
- Actions Post mise à jour
La dernière étape de notre procédure manuelle est le passage du script catupsst.sql. Si aucune erreur n’est détectée, il est déclenché automatiquement, cette étape est alors incluse dans la précédente.
Rem NAME Rem catuppst.sql - CATalog UPgrade PoST-upgrade actions Rem Rem DESCRIPTION Rem This post-upgrade script performs remaining upgrade actions that Rem do not require that the database be open in UPGRADE mode. Rem Automatically apply the latest PSU.
Voici le résultat de son exécution :
SQL> @?/rdbms/admin/catuppst.sql Session altered. Session altered. Session altered. TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP POSTUP_BGN 2013-08-23 08:29:13 TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP CATREQ_BGN 2013-08-23 08:29:13 PL/SQL procedure successfully completed. catrequtlmg: b_StatEvt = TRUE catrequtlmg: b_SelProps = FALSE catrequtlmg: b_UpgradeMode = FALSE catrequtlmg: b_InUtlMig = FALSE PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP CATREQ_END 2013-08-23 08:29:13 catuppst: Dropping library DBMS_DDL_INTERNAL_LIB PL/SQL procedure successfully completed. catuppst: Dropping view _CURRENT_EDITION_OBJ_MIG PL/SQL procedure successfully completed. catuppst: Dropping view _ACTUAL_EDITION_OBJ_MIG PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. This script will migrate the Baseline data on a pre-11g database to the 11g database. ... ... ... Completed Moving the Baseline Data ... ... ... ... If there are no Move BL Data messages ... ... above, then there are no renamed ... ... baseline tables in the system. ... ... ... ... ... ... Completed the Dropping of the ... ... Renamed Baseline Tables ... ... ... ... If there are no Drop Table messages ... ... above, then there are no renamed ... ... baseline tables in the system. ... ... ... PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. 0 rows created. Commit complete. Table created. 2 rows created. 1 row updated. 2 rows updated. 0 rows updated. Table dropped. Commit complete. 0 rows updated. Commit complete. 0 rows updated. Commit complete. 0 rows updated. Commit complete. 0 rows created. Commit complete. 0 rows created. Commit complete. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. catuppst: Gathering fixed objects stats now... catuppst: Gathering fixed objects stats done. PL/SQL procedure successfully completed. TIMESTAMP -------------------------------------------------------------------------------- COMP_TIMESTAMP POSTUP_END 2013-08-23 08:31:30 PL/SQL procedure successfully completed. Session altered. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Generating apply and rollback scripts... Check the following file for errors: /u01/app/oracle/cfgtoollogs/catbundle/catbundle_PSU_ORA112_GENERATE_2013Aug23_08_31_37.log Apply script: /u01/app/oracle/product/12.1.0.1/rdbms/admin/catbundle_PSU_ORA112_APPLY.sql Rollback script: /u01/app/oracle/product/12.1.0.1/rdbms/admin/catbundle_PSU_ORA112_ROLLBACK.sql PL/SQL procedure successfully completed. Executing script file... SQL> alter session set "_ORACLE_SCRIPT" = true; Session altered. SQL> COLUMN spool_file NEW_VALUE spool_file NOPRINT SQL> SELECT '/u01/app/oracle/cfgtoollogs/catbundle/' || 'catbundle_PSU_' || name || '_APPLY_' || TO_CHAR(SYSDATE, 'YYYYMonDD_hh24_mi_ss', 'NLS_DATE_LANGUAGE=''AMERICAN''') || '.log' AS spool_file FROM v$database; SQL> SPOOL &spool_file SQL> exec dbms_registry.set_session_namespace('SERVER') PL/SQL procedure successfully completed. SQL> ALTER SESSION SET current_schema = SYS; Session altered. SQL> PROMPT Updating registry... Updating registry... SQL> INSERT INTO registry$history 2 (action_time, action, 3 namespace, version, id, 4 bundle_series, comments) 5 VALUES 6 (SYSTIMESTAMP, 'APPLY', 7 SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'), 8 '12.1.0.1', 9 0, 10 'PSU', 11 'Patchset 12.1.0.0.0'); 1 row created. SQL> COMMIT; Commit complete. SQL> SPOOL off SQL> SET echo off Check the following log file for errors: /u01/app/oracle/cfgtoollogs/catbundle/catbundle_PSU_ORA112_APPLY_2013Aug23_08_31_38.log Session altered. Session altered. Currently our database is now upgraded to release 12.1.0.1 Check with : SQL>select comp_id,comp_name,version,status from dba_registry ; COMP_ID COMP_NAME VERSION STATUS --------------- ---------------------------------------- ------------------------------ -------------------------------------------- APEX Oracle Application Express 4.2.0.00.27 VALID OWB OWB 11.2.0.3.0 VALID SDO Spatial 12.1.0.1.0 VALID ORDIM Oracle Multimedia 12.1.0.1.0 VALID XDB Oracle XML Database 12.1.0.1.0 VALID CONTEXT Oracle Text 12.1.0.1.0 VALID OWM Oracle Workspace Manager 12.1.0.1.0 VALID CATALOG Oracle Database Catalog Views 12.1.0.1.0 UPGRADED CATPROC Oracle Database Packages and Types 12.1.0.1.0 UPGRADED JAVAVM JServer JAVA Virtual Machine 12.1.0.1.0 VALID XML Oracle XDK 12.1.0.1.0 VALID CATJAVA Oracle Database Java Packages 12.1.0.1.0 VALID APS OLAP Analytic Workspace 12.1.0.1.0 VALID XOQ Oracle OLAP API 12.1.0.1.0 VALID
C’est terminé nous avons grimpé pas à pas dans le cloud avec une version 12c !
- Taches conseillées
Calcul des statistiques sur les objets du dictionnaire :
SQL> execute dbms_stats.gather_fixed_objects_stats; PL/SQL procedure successfully completed.
Durée de 2 minutes sur ma configuration.
Recompilation (si possible) de tous les objets invalides :
SQL> @utlrp.sql No Object or recompilation in error state , summary of the database objects : ...Database user "SYS", database schema "APEX_040200", user# "117" 09:31:13 ...Compiled 0 out of 2998 objects considered, 0 failed compilation 09:31:14 ...263 packages ...255 package bodies ...453 tables ...11 functions ...16 procedures ...3 sequences ...458 triggers ...1322 indexes ...207 views ...0 libraries ...6 types ...0 type bodies ...0 operators ...0 index types ...Begin key object existence check 09:31:14 ...Completed key object existence check 09:31:14 ...Setting DBMS Registry 09:31:14 ...Setting DBMS Registry Complete 09:31:14 ...Exiting validate 09:31:14
Ce qui prends 3 minutes supplémentaires
Il est temps de faire la comparaison entre les objets invalides avant et après la mise à jour.
SQL> @utluiobj.sql Oracle Database 12.1 Post-Upgrade Invalid Objects Tool 08-23-2013 09:34:10 This tool lists post-upgrade invalid objects that were not invalid prior to upgrade (it ignores pre-existing pre-upgrade invalid objects). . Owner Object Name Object Type . The table registry$sys_inv_objs does not exist. The pre-upgrade tool, utlu111i.sql, creates and populates registry$sys_inv_objs. To use this post-upgrade tool, you must have run utlu111i.sql prior to upgrading the database.
Comme vous le voyez, je n’avais pas passer le script utlu111i.sql avant mon upgrade, d’où l’absence de résultat pertinent, de votre coté n’oubliez pas cette étape !!
- Finalisation
Mettez à jour le fichier /etc/oratab si ce n’est pas déjà fait.
Créer un fichier spfile :
Vérifier la configuration de votre listener, particulièrement s’il n’écoute pas sur le port standard 1521 :
SQL> show parameter listener NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ listener_networks string local_listener string remote_listener string
Dans ma configuration , le port d’écoute est le 1521 , donc pas de valeur, pas de configuration particulière.
Démarrer le listener, puis les applications. Enregistrer la base au listener pour qu’elle soit vue immédiatement :
SQL> !lsnrctl start LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 23-AUG-2013 09:41:02 Copyright (c) 1991, 2013, Oracle. All rights reserved. Starting /u01/app/oracle/product/12.1.0.1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 12.1.0.1.0 - Production System parameter file is /u01/app/oracle/product/12.1.0.1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/easydirtech/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easydirtech.easyteam.fr)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production Start Date 23-AUG-2013 09:41:02 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.1.0.1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/easydirtech/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easydirtech.easyteam.fr)(PORT=1521))) The listener supports no services The command completed successfully SQL> alter system register ; System altered. SQL> !lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 23-AUG-2013 09:41:20 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production Start Date 23-AUG-2013 09:41:02 Uptime 0 days 0 hr. 0 min. 18 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.1.0.1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/easydirtech/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easydirtech.easyteam.fr)(PORT=1521))) Services Summary... Service "ora112" has 1 instance(s). Instance "ora112", status READY, has 1 handler(s) for this service... Service "ora112XDB" has 1 instance(s). Instance "ora112", status READY, has 1 handler(s) for this service... The command completed successfully
Que reste t-il à faire maintenant ?
Configurer le port d’écoute pour la console d’administration : Database Express Console.
Vérifier que ce ‘ n’est pas encore le cas :
SQL> select dbms_xdb_config.gethttpport() from dual; DBMS_XDB_CONFIG.GETHTTPPORT() ----------------------------- 0
Configurer l’écoute sur le port souhaité (ici 8080)
SQL> exec dbms_xdb_config.sethttpport(8080); PL/SQL procedure successfully completed. SQL> select dbms_xdb.gethttpport() from dual; DBMS_XDB.GETHTTPPORT() ---------------------- 8080
Il y a alors une ligne d’écoute pour le listener SQLNET :
SQL> !lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 23-AUG-2013 09:52:07 Copyright (c) 1991, 2013, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production Start Date 23-AUG-2013 09:41:02 Uptime 0 days 0 hr. 11 min. 4 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/12.1.0.1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/easydirtech/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easydirtech.easyteam.fr)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=easydirtech.easyteam.fr)(PORT=8080))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "ora112" has 1 instance(s). Instance "ora112", status READY, has 1 handler(s) for this service... Service "ora112XDB" has 1 instance(s). Instance "ora112", status READY, has 1 handler(s) for this service... The command completed successfully
C’est tout ce que vous avez besoin pour accéder à Enterpise Manager Database Express 12c à l’url :
http://yourhostname:8080/em/
Entrer un compte utilisateur de la base et son mot de passe pour commencer à travailler avec.
Voilà tout est bien et dans le meilleur des mondes vous êtes confiant que cette nouvelle version va améliorer ou moins maintenir le niveau des performances de votre application ! Restons réaliste et pas d’excès de confiance , vous effectuerez d’abord cette procédure sur un environnement de test ou de qualification, pour valider les aspects critiques de votre application (fonctionnalité et niveau de service) .
Cela se produira certainement dans un prochain épisode , ou nous retrouverons notre héros swingbench, restez à l’écoute.
1 réflexion sur “Voyage vers l'Oracle Database 12c, épisode 3: Migration”
Bonjour,
Qu’entendez-vous par « pas d’interface graphique à configurer sur vos serveurs » ?
Il suffit d’installer un serveur X11 sur un autre hôte, par exemple VcXsrv sur un PC sous Windows, pour pouvoir déporter l’affichage des applications comme dbca ou dbua en mode graphique à travers le réseau.
X11 est à la base conçu pour permettre cela.
Cordialement.
Les commentaires sont fermés.