Error «Update home dependency failed» desplegando agentes del oem12c

Tras un periodo demasiado largo sin publicar , vamos a ver la solución a un problema muy sencillo, pero que nos puede traer de cabeza.

Llevando a cabo la instalación del agente para unix (AIX 64) del Enterprise Manager12c, me he encontrado con el error

Update home dependency failed.

2016-05-13_09-42-17:INFO:Action description Ejecución del comando  /bin/sh -c '/applics/oem12c/agente_12c/ADATMP_2016-05-13_08-53-57-AM/agentDeploy.sh -ignorePrereqs ORACLE_HOSTNAME=servertarget.pamplona.name AGENT_BASE_DIR=/applics/oem12c/agente_12c OMS_HOST=ascoem.gseguros.com EM_UPLOAD_PORT=4904 AGENT_INSTANCE_HOME=/applics/oem12c/agente_12c/agent_inst b_doDiscovery=false b_startAgent=false b_forceInstCheck=true AGENT_PORT=3872'  en el host servertarget.pamplona.name
2016-05-13_09-42-17:INFO:Attempt :1 pty required false  with no inputs
2016-05-13_09-46-14:INFO:/bin/sh -c '/applics/oem12c/agente_12c/ADATMP_2016-05-13_08-53-57-AM/agentDeploy.sh -ignorePrereqs ORACLE_HOSTNAME=servertarget.pamplona.name AGENT_BASE_DIR=/applics/oem12c/agente_12c OMS_HOST=ascoem.gseguros.com EM_UPLOAD_PORT=4904 AGENT_INSTANCE_HOME=/applics/oem12c/agente_12c/agent_inst b_doDiscovery=false b_startAgent=false b_forceInstCheck=true AGENT_PORT=3872' execution failed on host servertarget.pamplona.name
2016-05-13_09-46-14:INFO:Pattern ERROR: found in file /u01/app/oracle/gc_inst/em/EMGC_OMS1/sysman/agentpush//2016-05-13_08-53-57-AM/logs/servertarget.pamplona.name/install.log Line ERROR: Update home dependency failed.
2016-05-13_09-46-14:INFO:Error Message found  Update home dependency failed.
2016-05-13_09-46-14:INFO: ACTION Ejecución del comando  /applics/oem12c/agente_12c/ADATMP_2016-05-13_08-53-57-AM/agentDeploy.sh -ignorePrereqs ORACLE_HOSTNAME=servertarget.pamplona.name AGENT_BASE_DIR=/applics/oem12c/agente_12c OMS_HOST=ascoem.gseguros.com EM_UPLOAD_PORT=4904 AGENT_INSTANCE_HOME=/applics/oem12c/agente_12c/agent_inst b_doDiscovery=false b_startAgent=false b_forceInstCheck=true AGENT_PORT=3872 en el host servertarget.pamplona.name
2016-05-13_09-46-14:INFO: OUT null
2016-05-13_09-46-14:INFO: ERR  Update home dependency failed.
2016-05-13_09-46-14:INFO: EXIT CODE1
2016-05-13_09-46-14:INFO:InvocationTargetException Exception
2016-05-13_09-46-14:INFO:Printing Exception :java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at oracle.sysman.core.agentpush.ui.deployer.BaseDeployerOps.executeActions(BaseDeployerOps.java:1862)
        at oracle.sysman.core.agentpush.ui.deployer.NewAgentDeployer.deploy(NewAgentDeployer.java:59)
        at oracle.sysman.core.agentpush.ui.deployfwk.DeploymentWorker.run(DeploymentWorker.java:26)
        at oracle.sysman.util.threadPoolManager.WorkerThread.run(Worker.java:311)
Caused by: CommandException: err:  Update home dependency failed.  out: null exitcode: 1
 stacktrace:
null
        at oracle.sysman.core.agentpush.ui.deployer.DeployerOps.executeCommandOnNodeInteractive(DeployerOps.java:1199)
        at oracle.sysman.core.agentpush.ui.deployer.DeployerOps.executeCommandOnNodeInteractive(DeployerOps.java:1045)
        at oracle.sysman.core.agentpush.ui.deployer.DeployerOps.executeCmdOnNode(DeployerOps.java:639)
        at oracle.sysman.core.agentpush.ui.deployer.DeployerOps.executeCmdOnNode(DeployerOps.java:593)
        at oracle.sysman.core.agentpush.ui.deployer.BaseDeployerOps.doInstall(BaseDeployerOps.java:437)
        ... 8 more

2016-05-13_09-46-14:INFO:=========Command Exception :Mensaje de Error: Update home dependency failed. 

Código de Salida :1 2016-05-13_09-46-14:INFO:Updating Action Installwith Status FAILED and error Message :Mensaje de Error: Update home dependency failed.

Código de Salida :1 and problem Ejecución del comando /applics/oem12c/agente_12c/ADATMP_2016-05-13_08-53-57-AM/agentDeploy.sh -ignorePrereqs ORACLE_HOSTNAME=servertarget.pamplona.name AGENT_BASE_DIR=/applics/oem12c/agente_12c OMS_HOST=ascoem.gseguros.com EM_UPLOAD_PORT=4904 AGENT_INSTANCE_HOME=/applics/oem12c/agente_12c/agent_inst b_doDiscovery=false b_startAgent=false b_forceInstCheck=true AGENT_PORT=3872 en el host servertarget.pamplona.name Fallo and recommendation Corrija la causa del error y vuelva a intentar la operación 2016-05-13_09-46-14:INFO:=================action status is not empty FAILED 2016-05-13_09-46-14:INFO:Breaking since the action has failed 2016-05-13_09-46-14:INFO:Skipping action SecureAgent since some previous step has failed 2016-05-13_09-46-14:INFO:Skipping action RunRootSH since some previous step has failed 2016-05-13_09-46-14:INFO:Not Skipping action CollectLog since some previous step has failed 2016-05-13_09-46-14:INFO:sudo exists value false 2016-05-13_09-46-14:INFO:==SUDO EXISTS false SUDO PRIV false

Si buscamos en los foros de soporte e oracle o en el propio metalink,encontraremos que es un error que puede deberse a bastantes casos, sin embargo, hay una causa que ( en mi caso era la razón) es muy sencilla de comprobar, y que puede ser la causa principal del error.


If the warning from the installer is bypassed, failure of the console to effectively deploy an agent can be just one of the resulting symptoms.
Unpublished BUG OMS CONFIG FAILING IF SWAP SPACE IS LESS THAN 6GB

Así que, ante este tipo de error , lo mas rápido, sencillo e inmediato es comprobar si tenemos al menos 6 Gb de swap space, es un requisito no publicado que hace que falle la instalacion.

Paquete UTL_MAIL en 12c

El paquete UTL_MAIL es uno de esos paquetes que, aunque en mi opinión no debería de usarse nunca, siempre nos encontramos con casos de aplicaciones que hacen uso del mismo.
Si migramos (no update) a la 12c (creo que los ultimos patchsets de la 11g puede pasar también), nos encontramos con que aparece este error:

PLS-00201: el identificador 'SYS.UTL_MAIL' se debe declarar
PLS-00201: identifier 'SYS.UTL_MAIL' must be declared

El motivo de este error queda bastante claro en la entrada de Database PL/SQL Packages and Types Reference UTL_MAIL de la documentación de los paquetes de la 12g.

UTL_MAIL no está instalado de forma predeterminada debido al requisito de configuración SMTP_OUT_SERVER y la exposición de la seguridad que ello implica.
Con la instalación de UTL_MAIL, usted deberá configurar el sistema para agregar la salida a los puertos definidos en SMTP_OUT_SERVER .

Así pues nos tocará instalarlo a mano con:

sqlplus sys/
SQL> @$ORACLE_HOME/rdbms/admin/utlmail.sql
SQL> @$ORACLE_HOME/rdbms/admin/prvtmail.plb

y dar los permisos al esquema que nos necesite

GRANT EXECUTE ON UTL_MAIL TO esquema;

En cualquier caso, aunque lo instalemos a mano, tendremos que empezar a lidiar con el paquete UTL_SMTP, con lo que nos vendrá bien tener a mano las entradas :

Errores Private strand flush not complete en el alert.log

Vamos a echar un vistazo rápido a un error bastante común en los alert.log

Una alerta bastante común que vemos en los alertlog es

Thread 1 cannot allocate new log, sequence 6180
Private strand flush not complete

Esta línea nos indica que, no hemos completado la operación de guardar todo el REDO cuando hacemos el switch.
El término strand es la palabra que utiliza Oracle para referrse a los latches de los redo log, lo que tenemos en este caso es un caso de este tipo, y lo que nos está indicando es qeu en ved de bajar el redo en tiempo real, lo «bajará» con el commit.

Este tipo de mensajes no es alarmante a no ser que haya mas mensajes del tipo «cannot allocate new log» o «advanced to log sequence»

En cualquier caso, pueden indicarnos que hay problemas con la velocidad de IO del almacenamiento donde se encuentran o en caso de ser logs remotos con la red

Script para generar exports desde windows logando en el Event Log

Una entrada rápida para dummies sobre el export en windows.
Habitualmente la monitorizacion de los exports en plataformas windows es mas compleja que en los linux, esto es debido a que en muchos casos los equipos de gestion de los servidores windows se ciñen a la monitorizacion del visor de eventos no queriendo/pudiendo hacerlo de un fichero de texto plano como es el fichero de log del export.

¿Como solucionamos esto?

Aquí hay un pequeño script que es capaz de llevar a cabo un export y logar en el visor de sucesos el comienzo y le estado final

ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
:: Directorio desde el cual vamos a ejecutar nuestro .bat 
SET SCRIPTDIR=O:\TAREAS\BACKUP
SET ORACLE_SID=%1
SET PARALLELISM=%2
SET MYFILE=DPEXP_%ORACLE_SID%_%%U.dmp
SET MYLOG=DPEXP_%ORACLE_SID%.log
:: RUTA tiene el valor del oracle directory EXPORTS 
SET RUTA=\\SERVIDOR\DIRECTORIO
SET export_log=%RUTA%\DPEXP_%ORACLE_SID%.log

if "%1"=="" goto uso
if "%2"=="" goto SET PARALLELISM=1


EVENTCREATE /T INFORMATION /SO  EXPORT.%ORACLE_SID% /ID 36 /L APPLICATION /D "Comienza el export  de %ORACLE_SID% con paralelismo %PARALLELISM% y log %export_log%"
cd /d %SCRIPTDIR%
del %export_log%
:: Eliminamos los ficheros anteriores por seguridad (a pesar de tener el reuse)

expdp USER/PASS DIRECTORY=EXPORTS  DUMPFILE=%MYFILE% PARALLEL=%PARALLELISM%  LOGFILE=DPEXP_%ORACLE_SID%.log reuse_dumpfiles=Y FULL=Y  METRICS=Y  
SET CORRECTO=%ERRORLEVEL%

IF %CORRECTO% GTR 0  goto error 
IF "%CORRECTO%"=="0"  goto OK

:uso 
echo "USO exportar.bat  SID PARALELISMO "
SET CORRECTO=2
goto end

:error
echo "Error en la realización del export"
EVENTCREATE /T ERROR /SO EXPORT.%ORACLE_SID% /ID 1000 /L APPLICATION /D "ERROR en el export de %ORACLE_SID%"
goto end

:OK 
echo "Backup OK "
EVENTCREATE /T INFORMATION /SO EXPORT.%ORACLE_SID% /ID 1000 /L APPLICATION /D "Export de  %ORACLE_SID% finalizado OK "
goto end

:end
exit %CORRECTO%

Hay que tener en cuenta que:

  • La cuenta desde la que se lance el .bat debe de tener permisos tanto para ejecutar los binarios de oracle como para lanzar el comando EVENTCREATE
  • El ID que hemos elegido (100 y 36) es arbitrario, es deicr , hemos puesto dos IDs al azar para las pruebas.
  • Hemos de conocer a proiri el path del ORACKE DIRECTORY donde va a ir el export para ponerlo en la variable RUTA

    Si somos capaces de cumplir estas 3 premisas podremos tener en el visor de eventos de windows el comienzo y el resultado de nuestro exdp en windows.

ORA-29279 Errors using UTL_SMTP

One of the most common error using Fine Grained Acess and UTL_SMTP is the ORA-2927SMTP permanent error
This aren’t databae errors, this error are a generic authentication issue with the configuration of the SMTP server and fortunately, Oracle has a solution about it.


Contact your SMTP administrator for additional assistance as this solution may require your e-mail administrator to make the necessary changes.

More information :

  • ORA-29279 SMTP: 554 Using Utl_smtp To Send Email (Doc)
  • Document 604763.1 – Check SMTP Server Availability for ORA-29278 or ORA-29279 errors using UTL_SMTP to Send Email
  • ORA-2427 con el paquete SMTP