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.

Problemas con minusculas en el resource manager desde OEM12c

Hoy vamos a ver un caso que puede volvernos un poco locos y que su solución es terriblemente sencilla.

Cuando intentamos usar el resource manager para mapear nuestros usuarios a un determinado grupo de consumidores nos encontramos que podemos intentar hacerlo por algun elemento que tenga mayusculas y minusculas.
Supongamos queremos añadir a el grupo DESARROLLO los usuarios que se conectan con el e toad y SQL Developer. Para ello ejecutaríamos

BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.set_consumer_group_mapping(dbms_resource_manager.client_program,'Sqldeveloper.exe','DESARROLLO');
dbms_rsource_manager.set_consumer_group_mapping(dbms_resource_manager.client_program, 'toad.exe','DESARROLLO');
dbms_resource_manager.submit_pending_area();
END; 
commit;

Pero si seguimos la pista a las sesiones de estos dos programas, veremos como no se mapean correctamente con el grupo de consumidores que queremos.
Ejecutando la siguiente consulta podemos ver la causa:

select * from DBA_RSRC_GROUP_MAPPINGS
   where attribute = 'CLIENT_PROGRAM';
ATTRIBUTE        VALUE               CONSUMER_GROUP 
------------------------------------------------------------------
CLIENT_PROGRAM    SQLDEVELOPER.EXE   DESARROLLO 
CLIENT_PROGRAM    TOAD.EXE           DESARROLLO 

¿Que es lo que ha ocurrido?

El problema que tenemos aquí es que las funciones dbms_resource_manager nos van a pasar a mayusculas los valores que le pasemos entre comillas simples.
Si nos fijamos en los comandos que hemos introducido antes vemos que el nombre del client_program lo hemos introducido entre comilla simple

dbms_rsource_manager.set_consumer_group_mapping(dbms_resource_manager.client_program, 'toad.exe','DESARROLLO');

Si lo que buscamos tiene mayusculas y minusculas o simplemente minusculas, deberemos pasarle el parámetro como un literal,es decir, entre comillas dobles

BEGIN
dbms_resource_manager.clear_pending_area();
dbms_resource_manager.create_pending_area();
dbms_resource_manager.set_consumer_group_mapping(dbms_resource_manager.client_program,'"Sqldeveloper.exe"','DESARROLLO');
dbms_rsource_manager.set_consumer_group_mapping(dbms_resource_manager.client_program, '"toad.exe"','DESARROLLO');
dbms_resource_manager.submit_pending_area();
END; 
commit;

Con esto nos cogerá la informacion correctamente.

select * from DBA_RSRC_GROUP_MAPPINGS
   where attribute = 'CLIENT_PROGRAM';
ATTRIBUTE        VALUE               CONSUMER_GROUP 
------------------------------------------------------------------
CLIENT_PROGRAM    SQLDEVELOPER.EXE   DESARROLLO 
CLIENT_PROGRAM    TOAD.EXE           DESARROLLO 
CLIENT_PROGRAM    Sqldeveloper.exe   DESARROLLO 
CLIENT_PROGRAM    toad.exe           DESARROLLO 

La información completa como siempre en metalink

  • Resource Manager Plan Is not Applied With Mixed or Lower Case Application Name (Doc ID 471173.1)
  • 11G: Oracle Resource Manager Client_program Mapping Not Working, Converted to Capital Letters (Doc ID 1586148.1)

Usuario administrador de Weblogic en OEM12C

Vamos con una entrada rápida de esas que nos evitarán quebraderos de cabeza.

¿Sabemos cual es el usuario de administración de nuestro weblogic?

Cuando vamos a parchear nuestro Cloud control nos encontramos con lo siguiente

oracle@emc 18295180]$ opatchauto apply -analyze -property_file bundle.xml
OPatch Automation Tool  
 Copyright (c) 2013, Oracle Corporation.  All rights reserved.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          OPatchauto version : 11.1.0.10.0                                                                                                                                                                                                             OUI version        : 11.1.0.11.0                                                                                                                                                                                                             Running from       : /u01/app/oracle/middleware/oms
Log file location  : /u01/app/oracle/middleware/oms/cfgtoollogs/opatch/opatch2015-05-26_09-09-22AM_1.log
opatchauto log file: /u01/app/oracle/middleware/oms/cfgtoollogs/opatchauto/18295180/opatch_oms_2015-05-26_09-09-27AM_analyze.log
OPatch will do the following:
[Get weblogic Admin Server information]                        : Interview to get weblogic Admin Server of the GC Domain
[Generate configuration context of the GC Domain]              : Get the configuration context for the GC Domain
[Run patch(es) deployment prerequisite checks]                 : Check the status of admin server of the GC Domain
                                                               :  Check the status of OMS repository 
[Run patch(es) binary prerequisite checks]                     :Check if all the patches can be applied to or rolled back from their corresponding Oracle Home
[Generate execution steps to apply and deploy the patch(es)]   : Generate execution steps to modify bits and deploy artifacts of the patch

Please enter the WebLogic Admin Server URL for primary OMS(t3s://emc.pamplona.name :7103):>
Please enter the WebLogic Admin Server username for primary OMS:> 
Please enter the WebLogic Admin Server password for primary OMS:> 

¿Cual es ese usuario que nos piden?
Si vamos a la URL que nos indica el fichero setupinfo.txt que nos dejó la instalacion en $ORACLE_HOME/install vemos que:

 Admin Server URL: https://emc.pamplona.name:7103/console

Y acediendo a esa URL nos encontramos con
ScreenHunter_112 May. 26 09.44

Pero si revisamos los pasos de la instalacion del OEM12c veremos como en ninguna de las ventanas indicamos cual era el usuario de administrador del servidor de aplicaciones que va a correr el OEM12c. Solo indicamos el password.

La respuesta es sencilla :

usuario : weblogic
Contraseña: La de la instalación

Desinstalar el agente del oem12c

Una de las cosas que hay que llevar a cabo cuando se utiliza el Enterprise Manager de Oracle es el instalar/desisntalar los agentes.
Bien sea por que queremos actualizarlos, limpiar la máquina o simplemente por que decidimos hacerlo, tenemos que poder quitar los agentes de oracle.

Lo primero siempre será pararlo
parar_agente

Si el agente se ha instalado de manera correcta, no deberíamos de tener muchos problemas para desinstalarlo, ya que debe de estar contenido en el inventario y deberíamos de poder eliminarlo sin problemas.
Por ejemplo, en el caso de un equipo windows, deberíamos de poder eliminarlo desde el propio oracle installer.

desinstall_oem12c_win

En el caso de un sistema Unix, el encontrar en instalador suele ser mas complicado, por lo que lo tendremos que parar a mano.

Una de las maneras mas sencillas de encontrarlo es mirar en el fichero
 /etc/oragchomelist

/opt/app/oracle/product/oem12/agent12c/core/12.1.0.4.0:/opt/app/oracle/product/oem12/agent12c/agent_inst

/opt/app/oracle/product/oem13/agent13c/agent_13.2.0.0.0:/opt/app/oracle/product/oem13/agent13c/agent_inst

Aqui podemos ver como tenemos los agentes de la version 12 y 13.

Para eliminar el de la 12 deberiamos de

1- Parar el agente

/opt/app/oracle/product/oem12/agent12c/agent_inst/bin emctl stop agent

2- mediante el comando  AgentDeinstall.pl que nos eliminará la instalación del inventario y si se lo pedimos nos eliminará tambien el $AGENT_HOME

[server@OEM12c] export AGENT_HOME=/opt/app/oracle/product/12.1.0.3/oem12/
agent12c
core/12.1.0.4.0
[server@OEM12c] $AGENT_HOME/sysman/install/AgentDeinstall.pl -agentHome $AGENT_HOME
 Agent Oracle Home: /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0
aentHome = /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0

NOTE: The agent base directory: /opt/app/oracle/product/12.1.0.3/oem12 will be removed after successful deinstallation of agent home.


 DetachHome Command executed:/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oui/bin/runInstaller -detachHome -force -depHomesOnly -silent ORACLE_HOME=/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0 -waitForCompletion -invPtrLoc /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
The inventory pointer is located at /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
'DetachHome' was successful.
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
The inventory pointer is located at /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
The Oracle home '/opt/app/oracle/product/12.1.0.3/oem12/sbin' could not be updated as it does not exist.


Deinstall Command executed:/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oui/bin/runInstaller -deinstall -silent "REMOVE_HOMES={/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0}" -waitForCompletion -removeAllFiles -invPtrLoc /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-03-21_09-43-48AM. Please wait ...Oracle Universal Installer, Version 11.1.0.12.0 Production
Copyright (C) 1999, 2014, Oracle. All rights reserved.

Starting deinstall


Deinstall in progress (Thursday, March 21, 2018 9:43:56 AM CET)
Configuration assistant "Agent Deinstall Assistant" succeeded
............................................................... 100%

 Done.

Deinstall successful

End of install phases.(Thursday, March 21, 2018 9:44:10 AM CET)
End of deinstallations
Please check '/opt/app/oraInventory/logs/silentInstall2018-03-21_09-43-48AM.log' for more details.

NOTE: The targets monitored by this Management Agent will not be deleted in the Enterprise Manager Repository by this deinstall script. Make sure to delete the targets manually from the Cloud Control Console for a successful deinstallation.


Deinstall successful

Como veis, no es algo a lo que debamos temer.

La información completa de como llevarlo a cabo, como siempre en la documentación de Oracle
http://docs.oracle.com/cd/E24628_01/install.121/e24089/deinstall_agent.htm#CBBJEHDI

Alta de un host Windows 32/64 en OEm12c

En la entrada anterior vimos como descargar los catálogos de agentes en el nuevo OEM12c, nuestro siguiente paso será el dar de alta un host para después poder dar de alta los elementos que lo contengan.
Algo que pude sorprender respecto de las anteriores versiones del oem es que, en esta version 12.1.0.3.0 del Enterprise Manager, los agentes no son programas cliente que te descargas e instalas en el servidor, son programas que se despliegan desde el OEM12c por ssh

En vista de esto,lo primero que se nos viene a la cabeza es ¿que hacemos con los windows?

Lo primero que tendremos que hacer es instalar un servidor de ssh para windows, en el mercado hay varios de ellos, sin embargo,y a pesar de que es de los que personalmente menos me gustan, yo solamente recomiendo la instalación de uno de ellos, el cygwin .
¿Por que de esta recomendación?
Por que es el que aconseja Oracle en su manual de instalación, y, ya que vamos a instalar un elemento extraño en un entorno windows, al menos, usemos el que está documentado y sobre el que vamos a tener soporte.

El proceso de descarga e instalacion de cygwin está perfectamente documentado en los pasos previos a la instalacion del oem12c para windows Install cygwin. Seguiremos ese enlace y crearemos un usuario con permisos de administración ( por ejemplo usuario oem)

Una vez lo tenemos instalado, lo primero que debemos de hacer es probarlo, para ello abriremos una conexión ssh con el servidor windows, comprobando que podemos logarnos en el sistema con ese usuario oem que hemos creado previamente. Hasta que este paso no este claro y en funcionamiento no podemos seguir con el despliegue del agente.

Lo primero que haremos es buscar el alta manual

1

Tras eso llegamos a la ventana del directorio de instalación, a pesar de que la instalación se va a llevar a cabo mediante ssh y que el cygwin es capaz de ver las rutas de disco con path unix, la definición de directorios en esta pestaña debe de ser en modo windows, es decir c:\ d:\

ScreenHunter_116 Jul. 30 09.53

Una vez hemos decidido el lugar, tendremos que dar los datos de la conexión ssh, para esta conexión aconsejo el crear un usuario windows (por ejemplo OEM ) dentro del grupo DBA y hacer la equivalencia en el cygwin con ese usuario
ScreenHunter_116 Jul. 30 09.49

Tras esta pantalla llegamos a una ventana de trámite de confirmación de datos de despliegue de agente en la que le daremos a desplegar agente. Una vez le decimos que despliegue el agente, oem12c llevará a cabo una serie de comprobaciones en el host destino, estas comprobaciones son bastante completas
ScreenHunter_132 Jul. 30 10.42

Una vez tengas el OK en todas las comprobaciones, la instalación es inmediata.

Como veis, la instalación de un agente de windows es prácticamente siguiente-> siguiente, la mayor dificultad es el asumir que esta se lleva a cabo mediante ssh y no mediante protocolos de Microsoft.