En
el artículo anterior realizamos el upgrade de la base de datos mediante el
DBUA. En este articulo continuaremos con
el tema de Upgrade pero ahora realizaremos el upgrade Manual por línea de
comandos.
Posteriormente
realizaremos el PLUG-IN de la base de datos a un contenedor CDB.
Tareas Previas al Upgrade.
Las
tareas previas para el upgrade es son las mismas explicadas en el artículo
anterior. Pueden acceder al artículo
anterior desde aquí:
Upgrade Manual por Línea de comandos
El upgrade manual es un procedimiento de upgrade muy popular entre los DBAs más experimentados
ya que nos permite tener un control total de cada paso del upgrade.
Explicaremos paso a paso como realizar un upgrade manual
a Oracle 12c.
Paso 1: Para poder entender mejor el proceso
de upgrade voy a definir dos variables de entorno. El HOME de la versión 11g y
la versión 12c.
Ambas
variables me servirán de base para poder diferencias entre un motor y otro.
[oracle@upgrade12c ~]$
[oracle@upgrade12c ~]$ export ORACLE_HOME_11g=/u01/app/oracle/product/11.2.0/db_1
[oracle@upgrade12c ~]$ export ORACLE_HOME_12c=/u01/app/oracle/product/12.1.0/db_1
Paso 2: Copiamos los archivos de configuración
desde el ORACLE_HOME_11g al ORACLE_HOME_12c. Los archivos que se
copian están en los directorios:
- ORACLE_HOME_11g/dbs
- ORACLE_HOME_11g/network/admin
[oracle@upgrade12c dbs]$ cp
$ORACLE_HOME_11g/dbs/* $ORACLE_HOME_12c/dbs/.
[oracle@upgrade12c dbs]$
[oracle@upgrade12c dbs]$ cp $ORACLE_HOME_11g/network/admin/*
$ORACLE_HOME_12c/network/admin/.
[oracle@upgrade12c dbs]$
Paso 3: Bajamos los servicios de base de datos. Los servicios de Listener no son necesarios
bajarlos debido a que son administrados por la Infraestructura Grid.
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>
shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
Para
los usuarios Windows es necesario recrear el servicio con el nuevo
ORACLE_HOME_12c
C:\> NET STOP OracleServiceORCL
C:\> ORADIM -DELETE -SID ORCL
C:\> ORADIM -NEW -SID ORCL -INTPWD
PASSWORD -STARTMODE AUTO -PFILE
%ORACLE_HOME_12c%\DATABASE\INITORCL.ORA
Paso
4:
Definimos todas las variables de entorno con los valores del 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=$ORACLE_HOME/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin
[oracle@upgrade12c ~]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
[oracle@upgrade12c ~]$ export ORACLE_SID=orcl
Paso 5: Modificamos el archivo /etc/oratab
con el nuevo HOME de Oracle 12c
[oracle@upgrade12c ~]$ cat /etc/oratab
#
+ASM:/u01/app/oracle/product/12.1.0/grid:N: #
line added by Agent
orcl:/u01/app/oracle/product/12.1.0/db_1:N:
Paso 6: Iniciamos la base de datos en modo
UPGRADE.
SQL*Plus: Release 12.1.0.1.0 Production
on Fri Apr 17 11:30:29 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
startup UPGRADE
ORACLE instance started.
Total System Global Area 1014657024
bytes
Fixed Size 2295944 bytes
Variable Size 364906360 bytes
Database Buffers 641728512 bytes
Redo Buffers 5726208 bytes
Database mounted.
Database opened.
Paso 7: (Nuevo en Oracle 12c) Ejecutamos el nuevo
comando para upgrade catctl.pl.
El comando catctl.pl se encuentra en el
directorio ORACLE_HOME_12c/rdbms/admin. Es un archivo perl que permite ejecutar el
upgrade de base de datos con opciones extras en comparación con el script original
catupgrd.sql
El comando catctl.pl ejecuta como
parte de sus tareas el script catupgrd.sql y también catuppst.sql. Es por eso que, para la versión Oracle 12c, ya no
se debe ejecutar el script catupgrd.sql por si solo (se encuentra deprecado)
El comando catctl.pl posee diferentes opciones como paralelismo, definición
del log, reinicio del upgrade donde se quedo anteriormente. En el siguiente cuadro se muestra las
opciones que posee el comando catctl.pl
Para este ejemplo realizamos el upgrade de base de
datos con paralelismo 2 y definiremos el log en el directorio
ORACLE_HOME_12c/diagnostic (creado previamente)
Como es un comando de Sistema Operativo podríamos
correrlo en background con nohup o en
una sesión VNC
[oracle@upgrade12c ~]$ mkdir
$ORACLE_HOME_12c/diagnostic
[oracle@upgrade12c ~]$ cd
$ORACLE_HOME_12c/rdbms/admin
[oracle@upgrade12c admin]$ $ORACLE_HOME_12c/perl/bin/perl catctl.pl -n 2
-l $ORACLE_HOME_12c/diagnostic catupgrd.sql
Analyzing file catupgrd.sql
Log files in
/u01/app/oracle/product/12.1.0/db_1/diagnostic
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
...
Como se
observa en el log del upgrade se están utilizando dos procesos para poder
realizar el upgrade. Según lo que definimos en el comando catctl.pl
También
podemos ver que el upgrade ahora se divide en Fases, de esa manera es más
sencillo saber el progreso del upgrade.
..
[Phase 55] type is 1 with 1 Files
catuppst.sql
[Phase 56] type is 1 with 1 Files
catshutdown.sql
Using 2 processes.
Serial Phase #: 0 Files: 1
Paso 8: Mientras se ejecuta el upgrade podemos revisar los logs que se van generando en el directorio indicado en el comando catctl.pl: ORACLE_HOME_12c/diagnostic
Existe un log por cada proceso que ejecuta el upgrade. Para este ejemplo son 2 procesos.
[oracle@upgrade12c diagnostic]$ ls -lrt
total 368
-rw-r--r--.
1 oracle oinstall 132 Apr 17 11:45
catupgrd1.log
-rw-r--r--.
1 oracle oinstall 370964 Apr 17 11:49 catupgrd0.log
Monitoreamos la ejecución de los procesos que realizan el Upgrade
[oracle@upgrade12c diagnostic]$ tail -f catupgrd0.log
SQL>
SQL> alter type lcr$_row_record add
member function
2 get_object_id return number
cascade;
Type altered.
SQL>
SQL> alter type lcr$_row_record add
member function
2 get_root_name return
varchar2 cascade;
Type altered.
SQL>
SQL> alter type lcr$_row_record add member
procedure set_root_name(
2 self in out nocopy
lcr$_row_record,
3 root_name IN VARCHAR2) cascade;
Type altered.
Paso 9: Finalizado el Upgrade, levantamos la BD
...
Serial
Phase #:54 Files: 1 Time:
408s
Serial
Phase #:55 Files: 1 Time:
254s
Serial
Phase #:56 Files: 1 Time: 49s
Grand Total Time: 7212s
[oracle@upgrade12c admin]$ sqlplus / as
sysdba
SQL*Plus: Release 12.1.0.1.0 Production
on Fri Apr 17 14:43:10 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1014657024
bytes
Fixed Size 2295944 bytes
Variable Size 482346872 bytes
Database Buffers 524288000 bytes
Redo Buffers 5726208 bytes
Database mounted.
Database opened.
Paso 10: Verificamos que los componentes han sido actualizados correctamente mediante el script utlu121s.sql
SQL> @?/rdbms/admin/utlu121s.sql
.
Oracle Database 12.1 Post-Upgrade Status
Tool 04-17-2015 14:44:21
.
Component Current Version Elapsed Time
Name Status Number HH:MM:SS
.
Oracle Server
.
UPGRADED 12.1.0.1.0 00:34:40
JServer JAVA Virtual Machine
.
VALID 12.1.0.1.0 00:06:45
Oracle Workspace Manager
.
VALID 12.1.0.1.0 00:01:50
OLAP Analytic Workspace
.
VALID 12.1.0.1.0 00:02:40
Oracle OLAP API
. VALID 12.1.0.1.0 00:00:35
Oracle XDK
.
VALID 12.1.0.1.0 00:01:29
Oracle Text
.
VALID 12.1.0.1.0 00:01:36
Oracle XML Database
. VALID 12.1.0.1.0 00:07:27
Oracle Database Java Packages
.
VALID 12.1.0.1.0 00:00:32
Oracle Multimedia
.
VALID 12.1.0.1.0 00:04:09
Spatial
.
VALID 12.1.0.1.0 00:10:39
Oracle Application Express
.
VALID 4.2.0.00.27 00:35:02
Final Actions
.
00:05:20
Total Upgrade Time: 01:53:29
Paso 11: Compilamos todos los objetos de la base de datos y validamos los paquetes mediante los scripts utlrp.sql y utluiobj.sql
SQL> @?/rdbms/admin/utlrp.sql
TIMESTAMP
--------------------------------------------------------------------------------
COMP_TIMESTAMP UTLRP_BGN 2015-04-17 14:44:48
DOC>
The following PL/SQL block invokes UTL_RECOMP to recompile invalid
DOC>
objects in the database. Recompilation time is proportional to the
DOC>
number of invalid objects in the database, so this command may take
DOC>
a long time to execute on a database with a large number of invalid
...
...Database user "SYS",
database schema "APEX_040200", user# "116" 14:58:47
...Compiled 0 out of 2998 objects
considered, 0 failed compilation 14:58:48
...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
14:58:48
...Completed key object existence check
14:58:48
...Setting DBMS Registry 14:58:48
...Setting DBMS Registry Complete
14:58:49
...Exiting validate 14:58:49
SQL> @?/rdbms/admin/utluiobj.sql
.
Oracle Database 12.1 Post-Upgrade
Invalid Objects Tool 04-17-2015 14:59:29
.
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
.
PL/SQL procedure successfully completed.
Paso 12: Ejecutamos el script post upgrade
generado por la herramienta Pre-Upgrade Information.
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.
Paso 13: Realizar las pruebas funcionales para
poder asegurar que la base de datos y las aplicaciones no tengan ningún
problema.
Paso 14: Después de validar que la base de datos funciona correctamente podemos modificar el parámetro compatible a 12.1.0
SQL> ALTER SYSTEM SET compatible =
'12.1.0' SCOPE=spfile;
System
altered.
Finalizamos el Upgrade de manera manual con las
validaciones de las aplicaciones. Ahora
procederemos a realizar el PLUG-IN de la base de datos a un CDB.
PLUG-IN de la base de datos
Con la
base de datos ya actualizada a Oracle 12c podemos realizar el PLUG-IN a un
contenedor.
Paso 1: Crear una base de datos solo
contenedor. Los pasos para crear la base
de datos contenedor se encuentra en mi articulo
Paso 2: Colocamos la base de datos en Read Only y generamos
el archivo XML con la metadata de la base de datos.
SQL> alter database open READ ONLY;
Database altered.
SQL> exec
DBMS_PDB.DESCRIBE('/home/oracle/ORCL.xml');
PL/SQL procedure successfully completed.
Paso 3: Bajamos la base de datos
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
Paso 4: En la base de datos contenedor realizamos el PLUG-IN de la base de datos
actualizada.
[oracle@upgrade12c ~]$ export ORACLE_SID=cdb
[oracle@upgrade12c ~]$ sqlplus / as
sysdba
SQL*Plus: Release 12.1.0.1.0 Production
on Fri Apr 17 16:04:05 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
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>
create pluggable database PDBORCL using '/home/oracle/ORCL.xml' NOCOPY;
Pluggable database created.
SQL>
Paso 5: Finalizamos el PLUG-IN convirtiendo
la base de datos a un Pluggable Database mediante el script noncdb_to_pdb.sql.
SQL> alter session set
container=PDBORCL;
Session altered.
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
SQL> SET SERVEROUTPUT ON
SQL> SET FEEDBACK 1
SQL> SET NUMWIDTH 10
SQL> SET LINESIZE 80
SQL> SET TRIMSPOOL ON
SQL> SET TAB OFF
SQL> SET PAGESIZE 100
SQL>
SQL> WHENEVER SQLERROR EXIT;
...
SQL>
SQL> -- leave the PDB in the same
state it was when we started
SQL> BEGIN
2 execute immediate
'&open_sql &restricted_state';
3 EXCEPTION
4 WHEN OTHERS THEN
5 BEGIN
6 IF (sqlcode <> -900)
THEN
7 RAISE;
8 END IF;
9 END;
10 END;
11 /
PL/SQL procedure successfully completed.
SQL>
SQL> WHENEVER SQLERROR CONTINUE;
Paso 6: Abrimos la nueva base de datos
Pluggable.
SQL> alter session set
container=PDBORCL;
Session altered.
SQL> startup
Pluggable Database opened.
Paso 7: Finalizamos el PLUG-IN verificando la
nueva base de datos Pluggable.
SQL>
select CON_ID, NAME, OPEN_MODE from v$pdbs order by CON_ID;
CON_ID NAME
OPEN_MODE
----------
------------------------------ ----------
2
PDB$SEED READ ONLY
3 PDBORCL READ WRITE
Si
quieres saber más detalles sobre el proceso de PLUG-IN y UN-PLUG puedes revisar
mi articulo
De esta manera finalizamos todo el proceso de Upgrade a la versión
Oracle 12c. En otros artículos me
gustaría explicar procedimientos de Migración a Oracle 12c.
Espero que les pueda servir.
No hay comentarios.:
Publicar un comentario