Feb 16, 2017

Upgrade de Oracle SAP 11g a 12c + aplicación de SapBundlePatch

Upgrade de Oracle SAP 11g a 12c  + aplicación de SapBundlePatch


Si se va a realizar un upgrade a 12c se sugiere actualizar revisando la nota siguiente:
How to Upgrade to Oracle Database 12c Release1 (12.1.0) and Known Issues (Doc ID 2085705.1)

Se debe tener claro lo siguiente antes de hacer el upgrade. Mínimo la base de datos se debe encontrar dentro de las siguientes versiones:

Software requeridos para el upgrade


1.- El software de la base de datos: debe ser descargado del sitio de SAP. Los archivos finales que se descargan ( *.SAR) pueden ser descomprimidos usando la herramienta SAPCAR (más información en el link: (http://www.felipedonoso.cl/2016/04/sap-como-descomprimir-software-oracle.html) No se puede descargar el software directamente desde la página de oracle. Debe ser realizado directamente desde el sitio de soporte de SAP por lo cual se requiere tener acceso al soporte:

2.- sapbundle patch : Se debe descargar el ultimo disponible en el sitio de SAP.

Como dato adicional será necesario instalar la última versión de OPATCH y MOPATCH sobre el nuevo software de base de datos 12c. En este sentido no hay problema y el OPATCH puede ser bajado directamente desde el sitio de Oracle. En este caso tengo descargada la última versión hasta la fecha (6880880_121010_AIX64-5L.zip) o en su defecto se puede ocupar opatch y mopatch que ofrece SAP el cual al igual que el software de BD puede ser descargado desde el sitio de soporte SAP.

Prerequisitos


1.- Se deben tener presente los objetos inválidos de la base de datos que aun esta en 11g. Puede que luego del upgrade de la BD varios objetos queden inválidos.

2.- Deben chequear que opciones adicionales pueden hacer falta instalar en la versión Enterprise enel wizard de 12c, revisando si la base de datos original tiene alguna opción adicional ocupada con la vista dba_feature_usage_statistics.

3.- Sugiero sacar un respaldo del inventario en mi caso de la carpeta /oracle/oraInventory/
Pueden ocupar la opción del comando cp –rp  para preservar los permisos originales en  el archivo de backup final.

Instalación de software de 12c de SAP


En este caso instalaremos el software de base de datos en un nuevo disco llamado: /oracle/PID/12102. Todo nuestro software de base de datos que usaremos para hacer todas las instalaciones se encuentran en el disco /oracle/PID/sapdata11/medios

orapid> cd /oracle/PID/sapdata11/medios/database

orapid> ls -lptr
total 96
-rw-r-----    1 orapid   dba             500 Feb 06 2013  welcome.html
-rw-r-----    1 orapid   dba           14047 Mar 10 2014  rootpre.sh
-rw-r-----    1 orapid   dba           16868 Nov 08 2014  runInstaller
drwxr-x---    2 orapid   dba             256 Feb 14 10:32 rpm/
drwxr-x---    2 orapid   dba             256 Feb 14 10:36 sshsetup/
drwxr-x---    3 orapid   dba             256 Feb 14 10:36 rootpre/
drwxr-x---    2 orapid   dba             256 Feb 14 10:36 SAP/
drwxr-x---    4 orapid   dba            4096 Feb 14 10:36 install/
drwxr-x---   14 orapid   dba            4096 Feb 14 2017  stage/
drwxr-x---    2 orapid   dba             256 Feb 14 2017  response/

orapid> ./runInstaller

Se siguen las instrucciones al igual que en un Oracle normal. Si aparecen errores de permisos de ejecución recordar dar privilegios de chmod +x ej:
Checking Temp space: must be greater than 190 MB.   Actual 3047 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-02-14_11-15-05AM. Please wait ...sh: /oracle/PID/sapdata11/medios/database/install/unzip: 0403-006 Execute permission denied.

Mi sugerencia es que den privilegios +x a toda la carpeta install del directorio del software base y su contenido. Recordar omitir el siguiente error (hay una nota de metalink que explica el porqué
Aparece esto)

Como pueden ver a continuación la instalación es tal cual un motor normal:

Si se aprecia el error: Cause - Failed to access the temporary location. Esto tiene varias soluciones pueden aplicar la siguiente:

Busquen la carpeta llamada CVU_* en el directorio /tmp y asignen sobre ella privilegios full: ejemplo;
root@DCPIDDEV:/tmp$ chmod -R 777 CVU_12.1.0.2.0_orapid/
root@DCPIDDEV:/tmp$
Luego continúen con la instalación de manera norma recordar que solo se instalará el software de base de datos. A continuación algunas evidencias:





Recordar chequear si en la base de datos se requiere alguna opción adicional (pueden chequear la vista: dba_feature_usage_statistics )


Como mencione la instalación es tal cual como en un Oracle normal.



Upgrade de base de datos a 12c

Luego que la instalación ha finalizado asegúrense de tener su archivo oratab en orden. Usaremos el método dbua para actualizar. Deberia lucir similar a este:

Posteriormente se deben copiar los archivos de parámetros spfile o pfile y los archivos de network/admin/* a la nueva ruta de 12c que acabamos de instalar. Ojo que a los archivos de parámetro spfile que usaran en el DBUA se le sugiere quitar los parámetros ocultos y los de EVENT solo mientras se haga el upgrade. Ojo NO CAMBIAR AUN EL PARAMETRO COMPATIBLE. Se sugiere eliminar el valor del parámetro REMOTE_OS_AUTHENT de manera temporal también pues el DBUA reclamará al respecto.

orapid> pwd              
/oracle/PID/112_64/dbs
orapid> cp * /oracle/PID/12102/dbs

orapid> cp /oracle/PID/122_64/network/admin/* /oracle/PID/12102/network/admin
cp: 0653-436  samples is a directory.
       Specify -r or -R to copy.

orapid> ls -lptr /oracle/PID/12102/network/admin
total 32
drwxr-xr-x    2 orapid   dba             256 Feb 14 11:42 samples/
-rwxr-x---    1 orapid   dba             796 Feb 14 12:06 listener.ora
-rw-r--r--    1 orapid   dba             187 Feb 14 12:06 shrept.lst
-rwxr-x---    1 orapid   dba             961 Feb 14 12:06 tnsnames.ora
-rwxr-x---    1 orapid   dba             501 Feb 14 12:06 sqlnet.ora

Usando aun el ORACLE_HOME de 11g se recomienda actualizar la estadisticas del diccionario de datos:
SQL> EXECUTE dbms_stats.gather_dictionary_stats;
(no deberia tomar para este caso más de 10 minutos)

Posteriormente en la misma base de datos se sugiere ejecutar el script para visualizar problemas pre-upgrade. El script se llama dbupgdiag.sql y lo pueden encontrar en la siguiente nota: Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql) (Doc ID 556610.1)

Otro paso necesario es ejecutar el siguiente script del nuevo HOME DE 12c (en la carpeta $ORACLE_HOME/rdbm/admin)
sqlplus "/as sysdba" @preupgrd.sql
Luego se deben seguir las instrucciones allí visualizadas para antes y después del upgrade. Esto todo con el fin de garantizar la operación del upgrade. Por ejemplo en los logs se visualizará que hay actualizar el TimeZone, etc.

Revisar el log y si es necesario ejecutar el script de de fix para antes del upgrade. Posteriormente a eso recargaremos las variables de ambiente apuntando todo al nuevo disco 12c, ejemplo:

export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/PID/12102
export ORACLE_SID=PID
export ORASID=orapid
export LIBPATH=/usr/lib:/lib:/usr/sap/PID/SYS/exe/run:/usr/sap/PID/SYS/exe/uc/rs6000_64:$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5/jre/bin:/usr/java5/bin:/usr/sap/PID/SYS/exe/uc/rs6000_64:/usr/sap/PID/SYS/exe/run:/oracle/PID:.

La base de datos al momento de upgradear debe estar arriba con el software de 11g esto es porque el DBUA chequea los parámetros que actualmente están funcionando.  En ese mismo ORACLE_HOME de 11g los parámetros antes mencionados deben estar comentados (parámetros ocultos, events, fixcontrol, etc.)

Se sugiere realizar el upgrade usando estas opciones:







Cuando la actividad esté finalizada se visualizará algo parecido a esto:


Tareas Postupgrade a 12c


  • Se deben revisar que no hayan objetos inválidos

  • Crear el siguiente link simbólicos (son según la documentación de SAP):
ln -s /oracle/$ORACLE_SID/12102 /oracle/$ORACLE_SID/121_64
ln -s /oracle/PID/12102 /oracle/PID/121

  • Revisar que el contenido del archivo /etc/oratab esté apuntando a la nueva base:

  • Cambiar todas las variables de ambiente del usuario de SAP y de oracle que apuntan al antiguo ORACLE_HOME de 11g: (en la carpeta $HOME del usuario orapid)
/usr/bin/perl -p -i -e "s/11204/121_64/g" .*.sh
/usr/bin/perl -p -i -e "s/112_64/121_64/g" .*.sh
/usr/bin/perl -p -i -e "s/11204/121_64/g" .*.csh
/usr/bin/perl -p -i -e "s/112_64/121_64/g" .*.csh

Posteriormente se debe salir de la consola y volver a recargar las variables de ambiente.

Aplicación del sapbundle patch (Oracle® Database SAP® Bundle Patch 12.1.0.2.161018 - 201611V2)


Se debe actualizar el OPATCH y MOPATCH como se explica al principio del documento. Al interior del archivo zip del Sapbundle Patch se encuentra el archivo README.HTML el cual se debe leer y seguir el paso a paso. Pues lo que viene a continuación es lo que se pide ejecutar en dicho documento.
Tal cual como se menciona se debe también bajar el MOpatch y OPATCH desde el sitio de soporte de SAP y copiarlos a la ruta de ORACLE_HOME de 12c (allí descomprimirlos)

Nos debemos posicionarnos en la carpeta dónde tenemos todos los medios instalados y ejecutar los siguientes comandos como usuario oracle. Previamente se debe bajar la base de datos:
cd /oracle/PID/sapdata11/medios
export IHRDBMS=/oracle/PID/12102
export OHRDBMS=/oracle/PID/121
export SBPFUSER=/usr/sbin/fuser


$IHRDBMS/bin/unzip -qd $IHRDBMS/sapbundle SAP12102V2P_1611-20012297.ZIP 'SBP_12102161018_201611/OPatch/*'
mv $IHRDBMS/OPatch $IHRDBMS/OPatch-pre-SBP_12102161018_201611
mv $IHRDBMS/sapbundle/SBP_12102161018_201611/OPatch $IHRDBMS/OPatch
$IHRDBMS/bin/unzip -qd $IHRDBMS/sapbundle SAP12102V2P_1611-20012297.ZIP 'SBP_12102161018_201611/MOPatch/*'
test -d $IHRDBMS/MOPatch && mv $IHRDBMS/MOPatch $IHRDBMS/MOPatch-pre-SBP_12102161018_201611
mv $IHRDBMS/sapbundle/SBP_12102161018_201611/MOPatch $IHRDBMS/MOPatch


$SBPFUSER $IHRDBMS/bin/oracle

Como root es importante posteriormente  ejecutar el siguiente comando:
slibclean

Luego como orapid ejecutar lo que finalmente parchará nuestros binarios:
env ORACLE_HOME=$IHRDBMS $IHRDBMS/MOPatch/mopatch.sh -v -s SAP12102V2P_1611-20012297.ZIP
(Evidencia de ejecución:)


Luego Se levanta la base de datos de esta manera:
env ORACLE_HOME=$OHRDBMS sqlplus “/as sysdba”
SQL> startup

De lo contrario la aplicación de los archivos sql dará el siguiente error:
Connecting to database...
Connecting to database...failed.
Reason: ORA-01034: ORACLE not available

Prerequisite check failed:
Cause: The database instance has not been started or the Oracle
       environment variables have not been set correctly.
Action: Verify the Oracle environment variables and ensure that the
       database instance has been started.

catsbp completed with errors, post-installation of this SAP Bundle
Patch is INCOMPLETE.  Refer to the log file
 $ORACLE_BASE/cfgtoollogs/sqlpatch/SAP201611_APPLY_PID_2017_02_14-18-04-47.log
for more information.

Overall Status: INCOMPLETE

Una vez tengamos arriba la base procedemos a aplicar los archivos sql:
env ORACLE_HOME=$OHRDBMS $OHRDBMS/sapbundle/SBP_12102161018_201611/catsbp

Evidencia de la ejecución:

Actividades finales


  • Cambiar en el archivo de parámetros al original que respaldamos al comienzo y cambiar el parámetro compatible al valor predeterminado:
SQL> alter system set compatible='12.1.0.2.0' scope=spfile ;

  • Aplicar estos cambios que son parte de la nota de sapbundle patch:

ALTER SYSTEM SET "_FIX_CONTROL"=
'5099019:ON','5705630:ON','6055658:OFF','6120483:OFF','6399597:ON','6430500:ON',
'6440977:ON','6626018:ON','6972291:ON','7168184:OFF','7658097:ON','8937971:ON',
'9196440:ON','9495669:ON','13077335:ON','13627489:ON','14255600:ON','14595273:ON',
'18405517:2','20355502:8','14846352:OFF','22540411:ON','20107874:OFF','10038517:OFF'
COMMENT='SAP_12102161018_201611 RECOMMENDED SETTINGS'
SCOPE=SPFILE;

ALTER SYSTEM SET EVENT=
'10027',
'10028',
'10142',
'10183',
'10191',
'10995 level 2',
'38068 level 100',
'38085',
'38087',
'44951 level 1024'
COMMENT='SAP_121022_201503 RECOMMENDED SETTINGS'
SCOPE=SPFILE;



  • Actualizar catalogo RMAN (upgrade necesario puesto que de no realizarse esto los respaldos no serán catalogados fallara):

  • Relinkear librería de TSM en el nuevo ORACLE_HOME de 12c
ln -sf /usr/tivoli/tsm/client/oracle/bin64/libobk64.a $ORACLE_HOME/lib/libobk64.a
ln -sf /usr/tivoli/tsm/client/oracle/bin64/libobk64.a $ORACLE_HOME/lib/libobk.a
# Por si la ruta de instalación del TDP es distinta:
ln -sf /opt/tivoli/tsm/client/oracle/bin64/libobk.so $ORACLE_HOME/lib/libobk64.a
ln -sf /opt/tivoli/tsm/client/oracle/bin64/libobk.so $ORACLE_HOME/lib/libobk.a

  • Subir el listener y modificar en el archivo listener.ora en la línea:
(ORACLE_HOME = /oracle/PID/112_64)
Que apunte al nuevo home que en este caso sería:
(ORACLE_HOME = /oracle/PID/12102)

  • Entregar la clave del usuario SYSTEM a la gente de SAP o en su defecto cambiarla e informarselas. Las herramientas de BRTOOLS de sap utilizan este usuario

Consideraciones adicionales


El usuario orapid y pidadm deben ocupar el mismo ORACLE_HOME. Si uno de ellos ocupa la carpeta /oracle/PID/121_64 y el otro ocupa /oracle/PID/12102 como ORACLE_HOME (aunque la primera carpeta sea un link simbolico de la segunda). Uno de los dos usuarios no podrá conectarse al motor de base de datos por sqlplus. Atención con eso (uno de los usuarios verá esto aunque la instancia de BD siga arriba):


Ambos ORACLE_HOME de ambos usuarios deben apuntar directamente a la carpeta o al link simbolico. Es decir deben tener ambos usuarios deben tener en su profile el mismo valor y no distintos.

Eso es todo espero haya sido de ayuda ☺