viernes, 17 de abril de 2015

Oracle 12c : Upgrade a 12c de Base de datos - Parte I

Continuamos con el procedimiento de Upgrade a Oracle 12c. En el artículo anterior explique a detalle cómo realizar el upgrade de la Infraestructura Grid a Oracle 12c.

Con la Infraestructura Grid ya instalada, procedemos a realizar el upgrade de las bases de datos a Oracle 12c.

Como comenté en el artículo anterior existen diferentes maneras de realizar upgrade a Oracle 12c.
  • Database Upgrade Assistant (DBUA)
  • Línea de comandos
  • Transport Tablespace o Transport Database.
  • Export/Import Datapump.
  • Export/Import Original.

Para este articulo explicaré los métodos de upgrade con DBUA y línea de comandos.  Observaremos las nuevas funcionalidades que ofrece Oracle 12c para upgrade.  Explicaré también porque, para la versión Oracle 12c, recomiendo utilizar el DBUA antes que las líneas de comando.


Tareas Previas al Upgrade.
Antes de realizar el upgrade debemos de realizar algunas tareas previas.
  • Preparar el servidor para la instalación del motor de base de datos Oracle 12c.
  • Instalar el motor de base de datos Oracle 12c.

Estos pasos pueden revisarlos en mi articulo  Oracle 12c : Instalación de Oracle Database 12c

Con la instalación del motor Oracle 12c podemos hacer uso de la nueva herramienta Pre-Upgrade Information Tool


Pre-Upgrade Information Tool

Es una nueva herramienta que viene con la instalación del motor de base de datos Oracle 12c. Esta herramienta se encarga de revisar si la base de datos, que vamos a actualizar, cumple con todos los requisitos necesarios para realizar el upgrade a Oracle 12c.

La herramienta se encuentra en el directorio del motor Oracle 12c; en la ruta: $ORACLE_HOME_12c/rdbms/admin.  La herramienta se ejecuta de dos maneras:
  • De manera automática durante la ejecución del DBUA.
  • De manera manual con el script preupgrd.sql

Cuando se ejecuta la herramienta, se genera un reporte con la revisión de los requisitos cumplidos y los requisitos que aun falta cumplir para el upgrade. 
A diferencia de versiones anteriores, esta herramienta también genera scripts de ejecución pre y post upgrade que ayudan a ejecutar requisitos fallidos y tareas post upgrade de manera muy rápida.

Ejecutemos la herramienta en nuestra base de datos Oracle 11g.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> @/u01/app/oracle/product/12.1.0/db_1/rdbms/admin/preupgrd.sql
Loading Pre-Upgrade Package...
Executing Pre-Upgrade Checks...
Pre-Upgrade Checks Complete.
      ************************************************************

Results of the checks are located at:
 /u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade.log

Pre-Upgrade Fixup Script (run in source database environment):
 /u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade_fixups.sql

Post-Upgrade Fixup Script (run shortly after upgrade):
 /u01/app/oracle/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql

      ************************************************************

         Fixup scripts must be reviewed prior to being executed.

      ************************************************************

      ************************************************************
                   ====>> USER ACTION REQUIRED  <<====
      ************************************************************

 The following are *** ERROR LEVEL CONDITIONS *** that must be addressed
                    prior to attempting your upgrade.
            Failure to do so will result in a failed upgrade.

           You MUST resolve the above errors prior to upgrade

      ************************************************************

Como pueden observar se han creado 3 archivos:
  • preupgrade.log  (reporte de revisión)
  • preupgrade_fixups.sql (script pre upgrade)
  • postupgrade_fixups.sql  (script post upgrade)

Revisamos el archivo preupgrade.log por partes para explicar cada sección.

Primero observamos la descripción de la base de datos original.  También podemos observar si existen parámetros que serán renombrados y parámetros que serán deprecados en la versión Oracle 12c.

[oracle@upgrade12c ~]$ cat /u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade.log

Oracle Database Pre-Upgrade Information Tool 04-16-2015 03:33:41
Script Version: 12.1.0.1.0 Build: 006
**********************************************************************
   Database Name:  ORCL
         Version:  11.2.0.3.0
      Compatible:  11.2.0.0.0
       Blocksize:  8192
        Platform:  Linux x86 64-bit
   Timezone file:  V14
**********************************************************************
                          [Renamed Parameters]
                     [No Renamed Parameters in use]
**********************************************************************
**********************************************************************
                    [Obsolete/Deprecated Parameters]
             [No Obsolete or Desupported Parameters in use]
**********************************************************************

En la segunda sección observamos los componentes instalados en la base de datos.  Es recomendable que todos se encuentren en estado VALID para el upgrade.

                            [Component List]
**********************************************************************
--> Oracle Catalog Views                   [upgrade]  VALID
--> Oracle Packages and Types              [upgrade]  VALID
--> JServer JAVA Virtual Machine           [upgrade]  VALID
--> Oracle XDK for Java                    [upgrade]  VALID
--> Oracle Workspace Manager               [upgrade]  VALID
--> OLAP Analytic Workspace                [upgrade]  VALID
--> Oracle Enterprise Manager Repository   [upgrade]  VALID
--> Oracle Text                            [upgrade]  VALID
--> Oracle XML Database                    [upgrade]  VALID
--> Oracle Java Packages                   [upgrade]  VALID
--> Oracle Multimedia                      [upgrade]  VALID
--> Oracle Spatial                         [upgrade]  VALID
--> Expression Filter                      [upgrade]  VALID
--> Rule Manager                           [upgrade]  VALID
--> Oracle Application Express             [upgrade]  VALID
--> Oracle OLAP API                        [upgrade]  VALID
**********************************************************************

En la siguiente sección observamos la revisión de espacios en la base de datos.  Si cada tablespace cumple con el tamaño adecuado para poder hacer el upgrade.

**********************************************************************
                              [Tablespaces]
**********************************************************************
--> SYSTEM tablespace is adequate for the upgrade.
     minimum required size: 1225 MB
--> SYSAUX tablespace is adequate for the upgrade.
     minimum required size: 1484 MB
--> UNDOTBS1 tablespace is adequate for the upgrade.
     minimum required size: 400 MB
--> TEMP tablespace is adequate for the upgrade.
     minimum required size: 60 MB
--> EXAMPLE tablespace is adequate for the upgrade.
     minimum required size: 309 MB

                      [No adjustments recommended]


En la siguiente sección se muestran la revisión de requisitos previos al Upgrade. Entre las revisiones más importantes tenemos:
  • Desinstalación del Grid Control de la base de datos 11g (revisar mi articulo Enterprise Manager Database Express 12c)
  • Fin del soporte para el Catalogo OLAP
  • Actualización del Timezone a la versión mas reciente.
**********************************************************************
                          [Pre-Upgrade Checks]
**********************************************************************
WARNING: --> Enterprise Manager Database Control repository found in the database

     In Oracle Database 12c, Database Control is removed during
     the upgrade. To save time during the Upgrade, this action
     can be done prior to upgrading using the following steps after
     copying rdbms/admin/emremove.sql from the new Oracle home
   - Stop EM Database Control:
    $> emctl stop dbconsole

   - Connect to the Database using the SYS account AS SYSDBA:

   SET ECHO ON;
   SET SERVEROUTPUT ON;
   @emremove.sql
     Without the set echo and serveroutput commands you will not
     be able to follow the progress of the script.

WARNING: --> Existing DBMS_LDAP dependent objects

     Database contains schemas with objects dependent on DBMS_LDAP package.
     Refer to the Upgrade Guide for instructions to configure Network ACLs.
     USER APEX_030200 has dependent objects.

INFORMATION: --> OLAP Catalog(AMD) exists in database

     Starting with Oracle Database 12c, OLAP is desupported.
     If you are not using the OLAP Catalog component and want
     to remove it, then execute the
     ORACLE_HOME/oraolap/admin/catnoamd.sql script before or
     after the upgrade.

INFORMATION: --> Older Timezone in use

     Database is using a time zone file older than version 18.
     After the upgrade, it is recommended that DBMS_DST package
     be used to upgrade the 11.2.0.3.0 database time zone version
     to the latest version which comes with the new release.
     Please refer to My Oracle Support note number 977512.1 for details.


Las sección siguiente muestra acciones recomendadas previos al Upgrade. Normalmente ejecutamos estas acciones de manera manual.

**********************************************************************
                      [Pre-Upgrade Recommendations]
**********************************************************************

                        *****************************************
                        ********* Dictionary Statistics *********
                        *****************************************

Please gather dictionary statistics 24 hours prior to
upgrading the database.
To gather dictionary statistics execute the following command
while connected as SYSDBA:
    EXECUTE dbms_stats.gather_dictionary_stats;


Después encontraremos la sección con acciones recomendadas post Upgrade.

**********************************************************************
                     [Post-Upgrade Recommendations]
**********************************************************************

                        *****************************************
                        ******** Fixed Object Statistics ********
                        *****************************************

Please create stats on fixed objects two weeks
after the upgrade using the command:
   EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

^^^ MANUAL ACTION SUGGESTED ^^^


Finalmente el reporte nos muestra una sección con el resumen de lo encontrado en la base de datos origen.

**********************************************************************
                   ************  Summary  ************

 0 ERRORS exist in your database.
 2 WARNINGS that Oracle suggests are addressed to improve database performance.
 2 INFORMATIONAL messages that should be reviewed prior to your upgrade.

 After your database is upgraded and open in normal mode you must run
 rdbms/admin/catuppst.sql which executes several required tasks and completes
 the upgrade process.

 You should follow that with the execution of rdbms/admin/utlrp.sql, and a
 comparison of invalid objects before and after the upgrade using
 rdbms/admin/utluiobj.sql

 If needed you may want to upgrade your timezone data using the process
 described in My Oracle Support note 977512.1
                   ***********************************


Revisar con cuidado todo el reporte para evitar problemas con el Upgrade.

Una vez revisado el reporte de requisitos, procedemos a ejecutar el script preupgrade_fixups.sql (generado por la herramienta)

Este script corregirá de manera automática algunos requisitos puntuales como : Desinstalación del Grid Control, incremento de tamaño de los Tablespaces, recolección de estadísticas.

Las demás tareas deben de ejecutarse y corregirse de manera manual por el DBA.


SQL> @/u01/app/oracle/cfgtoollogs/orcl/preupgrade/preupgrade_fixups.sql
Pre-Upgrade Fixup Script Generated on 2015-04-16 03:33:36  Version: 12.1.0.1 Build: 006
Beginning Pre-Upgrade Fixups...

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


**********************************************************************
Check Tag:     EM_PRESENT
Check Summary: Check if Enterprise Manager is present
Fix Summary:   Execute emremove.sql prior to upgrade.
**********************************************************************
Fixup Returned Information:
WARNING: --> Enterprise Manager Database Control repository found in the database

     In Oracle Database 12c, Database Control is removed during
     the upgrade. To save time during the Upgrade, this action
     can be done prior to upgrading using the following steps after
     copying rdbms/admin/emremove.sql from the new Oracle home
   - Stop EM Database Control:
    $> emctl stop dbconsole

   - Connect to the Database using the SYS account AS SYSDBA:

   SET ECHO ON;
   SET SERVEROUTPUT ON;
   @emremove.sql
     Without the set echo and serveroutput commands you will not
     be able to follow the progress of the script.
**********************************************************************


PL/SQL procedure successfully completed.


**********************************************************************

           **************************************************
                ************* Fixup Summary ************

 3 fixup routines generated INFORMATIONAL messages that should be reviewed.


PL/SQL procedure successfully completed.

**************** Pre-Upgrade Fixup Script Complete *********************

PL/SQL procedure successfully completed.


Una vez ejecutado el script es importante volver a ejecutar la herramienta Pre-Upgrade Information para poder revisar los requisitos que aun se necesita corregir.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> @/u01/app/oracle/product/12.1.0/db_1/rdbms/admin/preupgrd.sql




Acciones recomendadas previo al upgrade.

Después de ejecutar la nueva herramienta Pre-Upgrade Information y de corregir los requisitos necesarios para el upgrade;  recomiendo también realizar las siguientes tareas.

Paso 1: Revisar que se tenga al menos 6 grupos de Redologs de 100M o más.

    GROUP#    THREAD#  SEQUENCE#     MBYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- -------------
         1          1         18        100          2 YES INACTIVE
         2          1         23        100          2 NO  CURRENT
         3          1         19        100          2 YES INACTIVE
         4          1         20        100          2 YES INACTIVE
         5          1         21        100          2 YES INACTIVE
         6          1         22        100          2 YES ACTIVE


Paso 2: Debido a que vamos a activar diferentes opciones de recuperación,  se recomienda tener un  espacio amplio para el Fast Recovery Area

SQL> show parameter recover

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------
db_recovery_file_dest                string      +DG_FRA
db_recovery_file_dest_size           big integer 11000M


Paso 3: Para mejorar el tiempo de upgrade se recomienda eliminar el Grid Control de manera manual.

[oracle@upgrade12c ~]$  emctl stop dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.3.0
Copyright (c) 1996, 2011 Oracle Corporation.  All rights reserved.
https://upgrade12c.oracle.com:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 11g Database Control ...
 ...  Stopped.


SQL> @?/rdbms/admin/emremove.sql
SP2-0310: unable to open file "/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/emremove.sql"
SQL>
SQL> @/u01/app/oracle/product/12.1.0/db_1/rdbms/admin/emremove.sql
old  69:     IF (upper('&LOGGING') = 'VERBOSE')
new  69:     IF (upper('VERBOSE') = 'VERBOSE')

PL/SQL procedure successfully completed.

Paso 4: Ejecutar las estadísticas en el diccionario de datos.  Esto también ayuda a que el upgade se ejecute mas rápido.


SQL> EXECUTE dbms_stats.gather_dictionary_stats;

PL/SQL procedure successfully completed.


Paso 5Siempre antes de realizar un upgrade de base de datos es importante contar con un backup full de la base de datos.

RMAN> backup incremental level 0 as compressed backupset database plus archivelog delete input;

Starting backup at 16-APR-15
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=50 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set


Con todos estos pasos estamos listos para el upgrade de la base de datos a Oracle 12c.
================================================================ 


Upgrade con Database Upgrade Assistant.

Database Upgrade Assistant o DBUA es la herramienta grafica que nos permite realizar upgrade de base de datos a una versión superior.  Es muy simple de utilizar y simplifica el proceso de upgrade.

Presenta una serie de pantallas que permiten definir diferentes opciones para el upgrade.   DBUA también ejecuta la herramienta Pre-Upgrade Information y automatiza muchas de las tareas post Upgrade.
Durante los pasos explicaré porque el DBUA se ha vuelto una herramienta muy completa.

Paso 1: Antes de ejecutar el DBUA activamos el flashback database en la base de datos 11g

SQL> startup mount
ORACLE instance started.

Total System Global Area 1014657024 bytes
Fixed Size                  2234680 bytes
Variable Size             394266312 bytes
Database Buffers          612368384 bytes
Redo Buffers                5787648 bytes
Database mounted.

SQL> alter database flashback on;

Database altered.

SQL> alter database open;

Database altered.


Paso 2: Setear las variables de entorno con el HOME de Oracle 12c.

[oracle@upgrade12c ~]$ export ORACLE_BASE=/u01/app/oracle
[oracle@upgrade12c ~]$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
[oracle@upgrade12c ~]$ export PATH=$PATH:$ORACLE_HOME/bin
[oracle@upgrade12c ~]$ export ORACLE_SID=orcl
[oracle@upgrade12c ~]$


Paso 3: Desde una sesión VNC lanzamos la aplicación DBUA

[oracle@upgrade12c ~]$ env | grep ORACLE
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
[oracle@upgrade12c ~]$
[oracle@upgrade12c ~]$ dbua


Paso 4: Seleccionamos la opción Upgrade Oracle Database
























Paso 5: Seleccionamos la base de datos que va a realizar el Upgrade.  Es recomendable que la base de datos se haya bajado de manera correcta antes de ejecutar el DBUA.
























Paso 6: Como les comentaba anteriormente, por el DBUA también se ejecuta la herramienta Pre-Upgrade Information.
No solo se ejecuta sino que también te da la opción de poder solucionar rápidamente requerimientos necesarios para el Upgrade
























Paso 7: (Nuevo en Oracle 12c) En Oracle 12c el DBUA te permite realizar el upgrade en forma paralela, esto ayuda a que el proceso pueda ejecutarse en menos tiempo del previsto.
























Podemos observar en la sección post Upgrade que podemos compilar los objetos de manera paralela y, también, tenemos la opción de Upgrade del Timezone de manera automática.


Paso 8: Para los que han leído mi artículo sobre Database Express, deben saber que ya no existe más el Grid Control.  Es por eso que el DBUA te da la opción de configurar la nueva herramienta de monitoreo EM Database Express.
























Paso 9: Al igual que versiones anteriores, el DBUA te permite mover la base de datos y el FRA a otro directorio. Normalmente esta operación se realiza por separado antes o después del Upgrade.
























Paso 10: Definimos en que Listener se registra la base de datos, después del Upgrade.
























Paso 11: (Nuevo en Oracle 12c) Para mi esta es la mejor opción agregada en el DBUA.  Ahora podemos activar el Flahsback database y definir un punto de recuperación previo al upgrade.

De esta manera si el upgrade fallara por algún motivo, el DBUA, automáticamente, regresa la base de datos a un punto antes del upgrade.  A través de esta nueva opción la recuperación de la base de datos, ante problemas, es muy rápida y de manera automática.























Es cierto que en versiones anteriores podemos utilizar flashback database como método de recuperación rápida.  Sin embargo todos los pasos de recuperación se deben de realizar de manera manual, lo que hace que el tiempo de recuperación sea mayor.

Paso 12: Revisamos las opciones seleccionada para el upgrade.
























Paso 13: Durante el proceso de upgrade tenemos la opción de poder monitorear que actividades está realizando el DBUA seleccionando el botón Activity Log

También podemos monitorear el Alter Log por si hubiera algún problema en la base de datos durante el upgrade. Seleccionamos el boton Alert Log.
























Estas opciones nos dan la posibilidad de poder monitorear de manera detallada cada paso que realiza el DBUA para el upgrade.  El DBUA ya no se ve como una caja negra, donde no podemos saber que realiza. Ahora tenemos más control.




















Esta es una razón mas para poder elegir la opción DBUA antes del upgrade manual.


Paso 14: Finalizado el upgrade por el DBUA seleccionamos la opción Upgrade Results.
























Paso 15: Revisamos el reporte con los resultados del Upgrade entregado por el DBUA.
























Paso 16: Ejecutamos el script post upgrade generado por la herramienta Pre-Upgrade Information.

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options

SQL> @/u01/app/oracle/cfgtoollogs/orcl/preupgrade/postupgrade_fixups.sql
Post Upgrade Fixup Script Generated on 2015-04-16 04:09:38  Version: 12.1.0.1 Build: 006
Beginning Post-Upgrade Fixups...

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


**********************************************************************
Check Tag:     OLD_TIME_ZONES_EXIST
Check Summary: Check for use of older timezone data file
Fix Summary:   Update the timezone using the DBMS_DST package after upgrade is complete.
**********************************************************************
Fixup Returned Information:
INFORMATION: --> Older Timezone in use

     Database is using a time zone file older than version 18.
     After the upgrade, it is recommended that DBMS_DST package
     be used to upgrade the 12.1.0.1.0 database time zone version
     to the latest version which comes with the new release.
     Please refer to My Oracle Support note number 977512.1 for details.
**********************************************************************


PL/SQL procedure successfully completed.

**********************************************************************
                     [Post-Upgrade Recommendations]
**********************************************************************


PL/SQL procedure successfully completed.

                        *****************************************
                        ******** Fixed Object Statistics ********
                        *****************************************

Please create stats on fixed objects two weeks
after the upgrade using the command:
   EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

^^^ MANUAL ACTION SUGGESTED ^^^


PL/SQL procedure successfully completed.


           **************************************************
                ************* Fixup Summary ************

 1 fixup routine generated an INFORMATIONAL message that should be reviewed.


PL/SQL procedure successfully completed.

*************** Post Upgrade Fixup Script Complete ********************

PL/SQL procedure successfully completed.


Paso 17: Validamos que la base de datos se haya actualizado de manera correcta.

Oracle Database 12.1 Post-Upgrade Status Tool           04-17-2015 01:08:18
Component                               Current         Version  Elapsed Time
Name                                    Status          Number   HH:MM:SS
Oracle Server
.                                         VALID      12.1.0.1.0  00:30:02
JServer JAVA Virtual Machine
.                                         VALID      12.1.0.1.0  00:08:01
Oracle Workspace Manager
.                                         VALID      12.1.0.1.0  00:01:52
OLAP Analytic Workspace
.                                         VALID      12.1.0.1.0  00:02:05
Oracle OLAP API
.                                         VALID      12.1.0.1.0  00:00:38
Oracle XDK
.                                         VALID      12.1.0.1.0  00:01:44
Oracle Text
.                                         VALID      12.1.0.1.0  00:01:41
Oracle XML Database
.                                         VALID      12.1.0.1.0  00:07:43
Oracle Database Java Packages
.                                         VALID      12.1.0.1.0  00:00:43
Oracle Multimedia
.                                         VALID      12.1.0.1.0  00:05:15
Spatial
.                                         VALID      12.1.0.1.0  00:12:05
Oracle Application Express
.                                         VALID     4.2.0.00.27  00:39:54
Final Actions
.                                                                00:05:51
Total Upgrade Time: 01:58:16


Paso 18: Realizar las pruebas funcionales para poder asegurar que la base de datos y las aplicaciones no tengan ningún problema.


Debido a lo extenso del artículo, voy a finalizar aquí.

En el siguiente articulo explicaré los pasos para hacer el upgrade Manual y el Plug-IN de la base de datos actualizada.


Espero les sirva.

No hay comentarios.:

Publicar un comentario