# rm-rf.es | Administración de sistemas

Blog de un SysAdmin Unix, Gnu/Linux, Windows y lo que haga falta.

Oracle VM “BindingMismatchEvent: Python Bindings between … and … are mismatched”

Oracle VMHay veces que es complicado encontrar el origen del problema cuando estamos trabajando con Oracle VM y OVMM (Oracle VM Manager) es bastante delicado y cualquier acción realizada de forma incorrecta nos puede provocar graves dolores de cabeza.

Al hilo del tema, existe la posibilidad de que tras realizar la instalación, montar el cluster y demás os encontréis con que los servidores pasan a estar en estado “critical” y con alertas de este estilo en el log de eventos:

BindingMismatchEvent: Python Bindings between XXXX and XXXX are mismatched.

Bien, aunque no lo parezca, el error que provoca este fallo es un problema de comunicación entre los nodos Oracle VM Server y el servidor manager, concretamente los nodos OV Server deben llegar al puerto 7001 del servidor OVM Manager. Como los servidores no traen telnet instalado por defecto lo podemos verificar con el comando nc (netcat):

# nc -v ovmm-server 7001
 nc -v ovmm-server 7001
Connection to ovmm-server 7001 port [tcp/smtp] succeeded!

Si no recibís un mensaje satisfactorio ahí tenéis el origen del problema, una vez solucionado el fallo de comunicaciones el funcionamiento será correcto (podéis hacer un rediscover del servidor afectado para que sea inmediato).

FATAL ERROR: THE CURRENT SYSTEM TIME IS EARLIER THAN THE MOST RECENT EVENT TIME IN OVM MANAGER!

Oracle VMHablando claro, podríamos decir que Oracle VM Manager es extremadamente sensible con los cambios horarios del servidor en el que se encuentra instalado. Tanto que si detecta que la hora actual es anterior a la de un evento de VM Manager no nos dejará acceder al sistema. El error que se presenta al hacer login en la consola (hostname:7001/ovm/console) es el siguiente:

Oracle VM Manager: OVMAPI_6000E Internal Error: Connection refused

Y si miramos el log interno (/u01/app/oracle/ovm-manager-3/machine1/base_adf_domain/servers/AdminServer/logs/AdminServer.log) desde línea de comandos es el siguiente:

FATAL ERROR: THE CURRENT SYSTEM TIME IS EARLIER THAN THE MOST RECENT EVENT TIME IN OVM MANAGER!
####<Oct 23, 2012 7:43:59 PM CEST> <Info> <com.oracle.ovm.mgr.control.api.EngineManager> <ovmm>
 <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'>
 <<anonymous>> <> <0000JeEiFCYFw000jzwkno1GXhSz000002> <1351014239220> <BEA-000000>
<Failed to start Model engine. Caused by com.oracle.ovm.mgr.control.engine.EngineManagerException:
Failed to invoke method com.oracle.ovm.mgr.model.ModelEngine.start() Caused by:
java.lang.IllegalStateException: 
FATAL ERROR: THE CURRENT SYSTEM TIME IS EARLIER THAN THE MOST RECENT EVENT TIME IN OVM MANAGER!>

Si verificamos la hora y realmente es un error, corregimos la misma manualmente o con NTP y reiniciamos Oracle VM Manager, debería quedar solucionado.

¿Pero qué sucede si la hora realmente tiene que ser menor y los eventos anteriores se generaron cuando la hora del servidor estaba mal? Lamentablemente no he encontrado la solución, lo mejor será que contactéis con el soporte de Oracle. Eso sí, en mi caso lo logré solucionar ya que sólamente eran 3 horas de diferencia. ¿Qué hice? Sencillo, paré Oracle VM Manager y lo arranqué cuando sabía que la hora del último evento registrado por el Manager ya había pasado… así quedo solucionado, el problema es cuando son días o meses, no vas a tener Oracle VM Manager parado meses. Otro síntoma de este problema es que podáis acceder pero las cosas no funcionen como deberían (las máquinas virtuales no se pueden parar/arrancar, no van las migraciones en caliente, la creación de discos virtuales, etc.

¡Suerte!

Configurar NTP en Oracle VM | Oracle VM Manager

Oracle VMEl servicio de sincronización horaria (NTP) es crítico en cualquier plataforma, en el caso de Oracle VM no iba a ser menos. Antes de configurarlo debemos comprender la estructura y los roles que desempeña cada servidor dentro de este sistema de virtualización.

En Oracle VM, el servicio NTP se configura automáticamente para los hipervisores (Oracle VM Server) en el momento que se hace un discover de ellos a través de Oracle VM Manager. Todos los servidores que descubramos serán configurados para recibir la sincronización horaria del servidor que contenga el Oracle VM Manager.

Una vez entendido esto, hay que asegurarse de configurar el servidor (o máquina virtual) que contiene Oracle VM Manager para tener corriendo el servicio NTP, que el firewall permita el acceso de los Oracle VM Servers al servicio y que se sincronice correctamente contra un pool externo.

Así pues, instalamos NTP en el servidor con OVMM. La instalación de NTP es sencilla, lo instalamos por YUM:

# yum install ntp

Una vez instalado, revisamos el fichero de configuración y nos aseguramos de configurar un Pool de servidores de tiempo (time servers) contra los que actualizar. Si utilizáis Red Hat o derivados podéis mantener el pool de servidores NTP de Red Hat:

server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org

Arrancamos NTPd:

# /etc/init.d/ntpd start

Lo configuramos para que arranque automáticamente en reinicios:

# chkconfig ntpd on

Si vamos a usar IPTABLES, nos aseguramos de permitir el acceso a la red que de gestión/management que utilizan los servidores Oracle VM Server, por ejemplo:

 -A INPUT -s 10.0.0.0/16 -m state --state NEW -p udp --dport 123 -j ACCEPT

También podemos restringir el acceso a nivel de configuración de NTP:

restrict default ignore # por defecto no permitir a nadie
restrict 10.0.0.0 mask 255.255.0.0 nomodify notrap noquery # permitir a nuestra red

Y ya sólo queda esperar a verificar que el servidor sincroniza bien la hora con los servers especificados y también que cada Oracle VM Server sincroniza bien contra Oracle VM Manager. Pasados unos minutos deberíamos ver la sincronización en el log /var/log/messages de cada servidor:

Aug  2 07:54:11 xxxxxxx ntpd[12709]: synchronized to 10.0.10.1, stratum 3
Aug  2 07:54:11 xxxxxxx ntpd[12709]: time reset +32412621.083528 s
Aug  2 07:54:11 xxxxxxx ntpd[12709]: kernel time sync status change 2001

También podríais usar el comando ntpq -p para ver el estado de los peers, es decir, los servidores contra los que cada sistema sincroniza:

# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.rhel.pool.ntp.org 1.2.3.4   3 u   25   64    3   1.667  -6073.1   0.872
1.rhel.pool.ntp.org 8.7.6.5   2 u   27   64    3   2.453  -2066.1   0.111
...
...

Realmente, este método de instalación y configuración de NTP nos serviría no sólo para Oracle VM, sino para Red Hat, CentOS, Fedora, Scientific Linux, Oracle Linux….

Cómo restaurar un backup de Oracle VM Manager 3.1.1

Oracle VMSi ayer veíamos la forma de hacer un backup de Oracle VM Manager 3.1.1 hoy toca la otra parte, restaurarlo. El backup consta del esquema de la base de datos y el fichero de configuración de Oracle VM Manager. Este procedimiento únicamente sirve si no queremos reinstalar la aplicación sino restaurar las configuraciones de la misma. Para reinstalar la aplicación tendríais que seguir el proceso de instalación normal pero especificando el uuid original. Después de haberlo instalado podríais comenzar con este procedimiento.

En principio, según el funcionamiento del VM Manager 3.1.1 no tendría porqué ser necesario restaurar el esquema en una instalación desde 0 ya que al arrancar por primera vez y hacer un “rediscover” de todos los servidores debería restaurar automáticamente las configuraciones. No obstante, no está de más conocer el proceso.

Bien, dicho esto comenzamos la restauración. Debemos parar lo primero el VM Manager:

[root@oraclevmm ~]# /etc/init.d/ovmm stop
Stopping Oracle VM Manager                                 [  OK  ]

Al igual que al generar el backup, cambiamos de root al usuario oracle y asignamos las variables de entorno correspondientes:

[root@oraclevmm ~]# su - oracle
[oracle@oraclevmm ~]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@oraclevmm ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@oraclevmm ~]$ export ORACLE_SID=ovm

Después accedemos al sqlplus de Oracle y recreamos el usuario ovs:

[oracle@oraclevmm ~]$ sqlplus system/password

SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 21 09:27:40 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

SQL> drop user ovs cascade;

User dropped.

SQL> create user ovs identified by password;

User created.

SQL> grant connect, resource to ovs;

Grant succeeded.

SQL> exit;
Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

Y finalmente restauramos el dump del esquema ovs que generamos al hacer el backup:

[oracle@oracle-linux ~]$ imp ovs/password file=/home/oracle/ovsbackup.dmp full=y

Import: Release 11.2.0.1.0 - Production on Fri Sep 21 09:31:15 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing OVS's objects into OVS
. . importing table                 "MGR_ABCSTORE"         48 rows imported
. . importing table            "MGR_ACCESSMANAGER"          1 rows imported
. . importing table   "MGR_ACTIONENGINEPROPERTIES"          1 rows imported
. . importing table            "MGR_ACTIONMANAGER"          1 rows imported
. . importing table         "MGR_ARCHIVEDONEEVENT"          6 rows imported
. . importing table           "MGR_ARCHIVEMANAGER"          1 rows imported
. . importing table     "MGR_ARCHIVESTARTINGEVENT"          6 rows imported
. . importing table            "MGR_BACKUPMANAGER"          1 rows imported
. . importing table          "MGR_BALANCERCONTROL"          1 rows imported
. . importing table                 "MGR_BONDPORT"          4 rows imported
. . importing table          "MGR_BUSINESSMANAGER"          1 rows imported
. . importing table                  "MGR_CLUSTER"          1 rows imported
. . importing table                "MGR_COHERENCE"          1 rows imported
. . importing table            "MGR_CONTROLDOMAIN"          2 rows imported
. . importing table    "MGR_CPUCOMPATIBILITYGROUP"          1 rows imported
. . importing table             "MGR_CREATEDEVENT"        389 rows imported
. . importing table       "MGR_CREATESTATISTICLOG"          0 rows imported
. . importing table             "MGR_DELETEDEVENT"         28 rows imported
. . importing table "MGR_DISCOVERENGINEPROPERTIES"          1 rows imported
. . importing table          "MGR_DISCOVERMANAGER"          1 rows imported
. . importing table          "MGR_ETHERNETNETWORK"          8 rows imported
. . importing table             "MGR_ETHERNETPORT"         16 rows imported
. . importing table    "MGR_EVENTENGINEPROPERTIES"          1 rows imported
. . importing table                 "MGR_EVENTLOG"        447 rows imported
. . importing table             "MGR_EVENTMANAGER"          1 rows imported
. . importing table "MGR_FIBRECHANNELSTORAGEARRAY"          1 rows imported
. . importing table              "MGR_FILEMANAGER"          1 rows imported
. . importing table          "MGR_FILESYSTEMMOUNT"          2 rows imported
. . importing table         "MGR_FILESYSTEMPLUGIN"          2 rows imported
. . importing table                  "MGR_FOUNDRY"          1 rows imported
. . importing table                  "MGR_HASHMAP"          3 rows imported
. . importing table       "MGR_INFORMATIONALEVENT"          2 rows imported
. . importing table              "MGR_INTERNALJOB"        195 rows imported
. . importing table             "MGR_INTERNALPORT"          2 rows imported
. . importing table        "MGR_INTERNALSYSTEMLOG"          2 rows imported
. . importing table        "MGR_ISCSISTORAGEARRAY"          1 rows imported
. . importing table    "MGR_ISCSISTORAGEINITIATOR"          2 rows imported
. . importing table         "MGR_ISCSISTORAGEPATH"         26 rows imported
. . importing table       "MGR_ISCSISTORAGETARGET"         13 rows imported
. . importing table                 "MGR_ITERATOR"         10 rows imported
. . importing table            "MGR_JOBABORTEVENT"          5 rows imported
. . importing table     "MGR_JOBCONSTRUCTINGEVENT"        206 rows imported
. . importing table             "MGR_JOBDONEEVENT"        150 rows imported
. . importing table          "MGR_JOBFAILUREEVENT"         40 rows imported
. . importing table     "MGR_JOBROLLBACKDONEEVENT"         40 rows imported
. . importing table         "MGR_JOBROLLBACKEVENT"         40 rows imported
. . importing table          "MGR_JOBRUNNINGEVENT"        191 rows imported
. . importing table               "MGR_LINKEDLIST"        392 rows imported
. . importing table          "MGR_LOCALFILESERVER"          2 rows imported
. . importing table          "MGR_LOCALFILESYSTEM"          1 rows imported
. . importing table        "MGR_LOCALSTORAGEARRAY"          2 rows imported
. . importing table    "MGR_LOCALSTORAGEINITIATOR"          2 rows imported
. . importing table      "MGR_LOGENGINEPROPERTIES"          1 rows imported
. . importing table               "MGR_LOGMANAGER"          1 rows imported
. . importing table                 "MGR_LOGSTORE"          2 rows imported
. . importing table    "MGR_MODELENGINEPROPERTIES"          1 rows imported
. . importing table             "MGR_MODELMANAGER"          1 rows imported
. . importing table  "MGR_NETWORKSELECTIONMANAGER"          1 rows imported
. . importing table        "MGR_OBJECTCHANGEEVENT"        100 rows imported
. . importing table            "MGR_PATHDOWNEVENT"         26 rows imported
. . importing table              "MGR_PATHUPEVENT"         26 rows imported
. . importing table           "MGR_POOLFILESYSTEM"          1 rows imported
. . importing table            "MGR_PORTDOWNEVENT"         73 rows imported
. . importing table              "MGR_PORTUPEVENT"         66 rows imported
. . importing table                "MGR_PROCESSOR"         48 rows imported
. . importing table               "MGR_PROPERTIES"         18 rows imported
. . importing table     "MGR_QUEUEDJOBCREATEEVENT"          1 rows imported
. . importing table      "MGR_RASENGINEPROPERTIES"          1 rows imported
. . importing table               "MGR_RASMANAGER"          1 rows imported
. . importing table               "MGR_REPOSITORY"          1 rows imported
. . importing table           "MGR_RESTOREMANAGER"          1 rows imported
. . importing table              "MGR_ROLESERVICE"          1 rows imported
. . importing table         "MGR_ROOTSTATISTICLOG"          1 rows imported
. . importing table    "MGR_RULESENGINEPROPERTIES"          1 rows imported
. . importing table             "MGR_RULESMANAGER"          1 rows imported
. . importing table "MGR_SCHEDULABLETASKPROPERTIES"          8 rows imported
. . importing table                   "MGR_SERVER"          2 rows imported
. . importing table "MGR_SERVERCLUSTERSTATEDOWNEVEN"         19 rows imported
. . importing table "MGR_SERVERCLUSTERSTATEUPEVENT"         15 rows imported
. . importing table "MGR_SERVERDISCONNECTERROREVENT"         32 rows imported
. . importing table  "MGR_SERVERDISCOVERSCANEVENT"        162 rows imported
. . importing table         "MGR_SERVERERROREVENT"          3 rows imported
. . importing table       "MGR_SERVERNOTIFICATION"         26 rows imported
. . importing table       "MGR_SERVEROFFLINEEVENT"         25 rows imported
. . importing table               "MGR_SERVERPOOL"          1 rows imported
. . importing table "MGR_SERVERPOOLMASTERMISSINGEVE"          5 rows imported
. . importing table       "MGR_SERVERRUNNINGEVENT"         49 rows imported
. . importing table   "MGR_SERVERSELECTIONMANAGER"          1 rows imported
. . importing table      "MGR_SERVERSTARTINGEVENT"         25 rows imported
. . importing table       "MGR_SERVERSTOPPEDEVENT"         51 rows imported
. . importing table      "MGR_SERVERSTOPPINGEVENT"          1 rows imported
. . importing table "MGR_SERVERYUMREPOSITORYINFORMA"          1 rows imported
. . importing table      "MGR_SEVERITYCHANGEEVENT"          9 rows imported
. . importing table         "MGR_STATISTICMANAGER"          1 rows imported
. . importing table      "MGR_STATISTICSUBJECTLOG"          3 rows imported
. . importing table         "MGR_STATISTICTYPELOG"         41 rows imported
. . importing table       "MGR_STORAGEARRAYPLUGIN"          1 rows imported
. . importing table           "MGR_STORAGEELEMENT"         13 rows imported
. . importing table  "MGR_STORAGESELECTIONMANAGER"          1 rows imported
. . importing table     "MGR_TASKENGINEPROPERTIES"          1 rows imported
. . importing table              "MGR_TASKMANAGER"          1 rows imported
. . importing table                  "MGR_TREEMAP"        195 rows imported
. . importing table                "MGR_TREESTORE"       1077 rows imported
. . importing table                     "MGR_USER"          4 rows imported
. . importing table              "MGR_USERACCOUNT"          4 rows imported
. . importing table                "MGR_USERSTORE"          1 rows imported
. . importing table             "MGR_VIRTUALCDROM"          3 rows imported
. . importing table              "MGR_VIRTUALDISK"          1 rows imported
. . importing table           "MGR_VIRTUALMACHINE"          1 rows imported
. . importing table    "MGR_VIRTUALMACHINECFGFILE"          1 rows imported
. . importing table "MGR_VIRTUALMACHINEDISCONNECTER"          7 rows imported
. . importing table "MGR_VIRTUALMACHINEOFFLINEEVENT"          5 rows imported
. . importing table "MGR_VIRTUALMACHINERUNNINGEVENT"         15 rows imported
. . importing table "MGR_VIRTUALMACHINESTARTINGEVEN"         12 rows imported
. . importing table "MGR_VIRTUALMACHINESTOPPEDEVENT"         16 rows imported
. . importing table "MGR_VIRTUALMACHINESTOPPINGEVEN"          6 rows imported
. . importing table            "MGR_VMDISKMAPPING"          2 rows imported
. . importing table       "MGR_VMSELECTIONMANAGER"          1 rows imported
. . importing table                     "MGR_VNIC"          5 rows imported
. . importing table              "MGR_VNICMANAGER"          1 rows imported
. . importing table    "MGR_VNICMANAGERPROPERTIES"          1 rows imported
. . importing table              "MGR_VOLUMEGROUP"          4 rows imported
. . importing table            "MGR_XENHYPERVISOR"          2 rows imported
. . importing table              "ODOF_ID_TO_TYPE"       4537 rows imported
. . importing table              "ODOF_NOT_TABLED"          0 rows imported
. . importing table          "ODOF_SYS_PROPERTIES"          2 rows imported
. . importing table           "ODOF_TYPE_TO_CLASS"        123 rows imported
Import terminated successfully without warnings.

Ya sólo queda iniciar de nuevo Oracle VM Manager y verificar que todo es correcto:

[oracle@oraclevmm ~]$ logout
[root@oraclevmm ~]# /etc/init.d/ovmm start
Starting Oracle VM Manager                               [  OK  ]

Cómo hacer un backup de Oracle VM Manager 3.1.1

Oracle VMVamos a ver los pasos necesarios para hacer una copia de seguridad de la información relevante que tiene Oracle VM Manager 3.1.1. En este caso se trata de realizar un backup del contenido del esquema de la base de datos Oracle (tanto en instalación de producción como demo) y del fichero de configuración de OVMM que contiene los datos de acceso a la BD (SID, DBHOST,OVSCHEMA…), el UUID, etc.

Hacemos entonces en primera instancia una copia del fichero de configuración (/u01/app/oracle/ovm-manager-3/.config), lo podéis guardar en cualquier sitio, lo importante es disponer de estos datos si fuera necesaria una reinstalación del Manager:

[root@oraclevmm]# cat /u01/app/oracle/ovm-manager-3/.config
DBHOST=oraclevmm
SID=ovm
LSNR=1521
APEX=None
OVSSCHEMA=ovs
WLSADMIN=weblogic
OVSADMIN=admin
COREPORT=54321
UUID=0003Va00000100000332c8d9sbafdf12g
BUILDID=3.1.1.305

Una vez guardado, tenemos que parar temporalmente Oracle VM Manager para poder tener una copia consistente de la base de datos:

[root@oraclevmm]# /etc/init.d/ovmm stop
Stopping Oracle VM Manager                                 [  OK  ]

El siguiente paso es hacer su contra el usuario oracle:

[root@oraclevmm]# su - oracle
[oracle@oraclevmm ~]$

Ahora preparamos las variables de oracle para ejecutar el dump de la base de datos. Básicamente tenemos que especificar el PATH al HOME de oracle (ORACLE_HOME), añadirlo al PATH y exportar el SID. Si habéis instalado la base de datos Oracle en otra ruta debéis adecuarlo:

[oracle@oraclevmm ~]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@oraclevmm ~]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@oraclevmm ~]$ export ORACLE_SID=ovm

Finalmente exportamos el esquema con el siguiente comando, en el que hay que especificar el nombre del esquema y la password del usuario administrador del mismo (ovs/password). También indicamos la ruta en la que volcar el dump/backup y el nombre:

[oracle@oraclevmm ~]$ exp ovs/password grants=y compress=y file=/home/oracle/ovsbackup-2012-09-20.dmp

Export: Release 11.2.0.1.0 - Production on Thu Sep 20 14:53:08 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user OVS 
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user OVS 
About to export OVS's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export OVS's tables via Conventional Path ...
. . exporting table                   MGR_ABCSTORE         48 rows exported
. . exporting table              MGR_ACCESSMANAGER          1 rows exported
. . exporting table     MGR_ACTIONENGINEPROPERTIES          1 rows exported
. . exporting table              MGR_ACTIONMANAGER          1 rows exported
. . exporting table           MGR_ARCHIVEDONEEVENT          6 rows exported
. . exporting table             MGR_ARCHIVEMANAGER          1 rows exported
. . exporting table       MGR_ARCHIVESTARTINGEVENT          6 rows exported
. . exporting table              MGR_BACKUPMANAGER          1 rows exported
. . exporting table            MGR_BALANCERCONTROL          1 rows exported
. . exporting table                   MGR_BONDPORT          4 rows exported
. . exporting table            MGR_BUSINESSMANAGER          1 rows exported
. . exporting table                    MGR_CLUSTER          1 rows exported
. . exporting table                  MGR_COHERENCE          1 rows exported
. . exporting table              MGR_CONTROLDOMAIN          2 rows exported
. . exporting table      MGR_CPUCOMPATIBILITYGROUP          1 rows exported
. . exporting table               MGR_CREATEDEVENT        389 rows exported
. . exporting table         MGR_CREATESTATISTICLOG          0 rows exported
. . exporting table               MGR_DELETEDEVENT         28 rows exported
. . exporting table   MGR_DISCOVERENGINEPROPERTIES          1 rows exported
. . exporting table            MGR_DISCOVERMANAGER          1 rows exported
. . exporting table            MGR_ETHERNETNETWORK          8 rows exported
. . exporting table               MGR_ETHERNETPORT         16 rows exported
. . exporting table      MGR_EVENTENGINEPROPERTIES          1 rows exported
. . exporting table                   MGR_EVENTLOG        447 rows exported
. . exporting table               MGR_EVENTMANAGER          1 rows exported
. . exporting table   MGR_FIBRECHANNELSTORAGEARRAY          1 rows exported
. . exporting table                MGR_FILEMANAGER          1 rows exported
. . exporting table            MGR_FILESYSTEMMOUNT          2 rows exported
. . exporting table           MGR_FILESYSTEMPLUGIN          2 rows exported
. . exporting table                    MGR_FOUNDRY          1 rows exported
. . exporting table                    MGR_HASHMAP          3 rows exported
. . exporting table         MGR_INFORMATIONALEVENT          2 rows exported
. . exporting table                MGR_INTERNALJOB        195 rows exported
. . exporting table               MGR_INTERNALPORT          2 rows exported
. . exporting table          MGR_INTERNALSYSTEMLOG          2 rows exported
. . exporting table          MGR_ISCSISTORAGEARRAY          1 rows exported
. . exporting table      MGR_ISCSISTORAGEINITIATOR          2 rows exported
. . exporting table           MGR_ISCSISTORAGEPATH         26 rows exported
. . exporting table         MGR_ISCSISTORAGETARGET         13 rows exported
. . exporting table                   MGR_ITERATOR         10 rows exported
. . exporting table              MGR_JOBABORTEVENT          5 rows exported
. . exporting table       MGR_JOBCONSTRUCTINGEVENT        206 rows exported
. . exporting table               MGR_JOBDONEEVENT        150 rows exported
. . exporting table            MGR_JOBFAILUREEVENT         40 rows exported
. . exporting table       MGR_JOBROLLBACKDONEEVENT         40 rows exported
. . exporting table           MGR_JOBROLLBACKEVENT         40 rows exported
. . exporting table            MGR_JOBRUNNINGEVENT        191 rows exported
. . exporting table                 MGR_LINKEDLIST        392 rows exported
. . exporting table            MGR_LOCALFILESERVER          2 rows exported
. . exporting table            MGR_LOCALFILESYSTEM          1 rows exported
. . exporting table          MGR_LOCALSTORAGEARRAY          2 rows exported
. . exporting table      MGR_LOCALSTORAGEINITIATOR          2 rows exported
. . exporting table        MGR_LOGENGINEPROPERTIES          1 rows exported
. . exporting table                 MGR_LOGMANAGER          1 rows exported
. . exporting table                   MGR_LOGSTORE          2 rows exported
. . exporting table      MGR_MODELENGINEPROPERTIES          1 rows exported
. . exporting table               MGR_MODELMANAGER          1 rows exported
. . exporting table    MGR_NETWORKSELECTIONMANAGER          1 rows exported
. . exporting table          MGR_OBJECTCHANGEEVENT        100 rows exported
. . exporting table              MGR_PATHDOWNEVENT         26 rows exported
. . exporting table                MGR_PATHUPEVENT         26 rows exported
. . exporting table             MGR_POOLFILESYSTEM          1 rows exported
. . exporting table              MGR_PORTDOWNEVENT         73 rows exported
. . exporting table                MGR_PORTUPEVENT         66 rows exported
. . exporting table                  MGR_PROCESSOR         48 rows exported
. . exporting table                 MGR_PROPERTIES         18 rows exported
. . exporting table       MGR_QUEUEDJOBCREATEEVENT          1 rows exported
. . exporting table        MGR_RASENGINEPROPERTIES          1 rows exported
. . exporting table                 MGR_RASMANAGER          1 rows exported
. . exporting table                 MGR_REPOSITORY          1 rows exported
. . exporting table             MGR_RESTOREMANAGER          1 rows exported
. . exporting table                MGR_ROLESERVICE          1 rows exported
. . exporting table           MGR_ROOTSTATISTICLOG          1 rows exported
. . exporting table      MGR_RULESENGINEPROPERTIES          1 rows exported
. . exporting table               MGR_RULESMANAGER          1 rows exported
. . exporting table  MGR_SCHEDULABLETASKPROPERTIES          8 rows exported
. . exporting table                     MGR_SERVER          2 rows exported
. . exporting table MGR_SERVERCLUSTERSTATEDOWNEVEN         19 rows exported
. . exporting table  MGR_SERVERCLUSTERSTATEUPEVENT         15 rows exported
. . exporting table MGR_SERVERDISCONNECTERROREVENT         32 rows exported
. . exporting table    MGR_SERVERDISCOVERSCANEVENT        162 rows exported
. . exporting table           MGR_SERVERERROREVENT          3 rows exported
. . exporting table         MGR_SERVERNOTIFICATION         26 rows exported
. . exporting table         MGR_SERVEROFFLINEEVENT         25 rows exported
. . exporting table                 MGR_SERVERPOOL          1 rows exported
. . exporting table MGR_SERVERPOOLMASTERMISSINGEVE          5 rows exported
. . exporting table         MGR_SERVERRUNNINGEVENT         49 rows exported
. . exporting table     MGR_SERVERSELECTIONMANAGER          1 rows exported
. . exporting table        MGR_SERVERSTARTINGEVENT         25 rows exported
. . exporting table         MGR_SERVERSTOPPEDEVENT         51 rows exported
. . exporting table        MGR_SERVERSTOPPINGEVENT          1 rows exported
. . exporting table MGR_SERVERYUMREPOSITORYINFORMA          1 rows exported
. . exporting table        MGR_SEVERITYCHANGEEVENT          9 rows exported
. . exporting table           MGR_STATISTICMANAGER          1 rows exported
. . exporting table        MGR_STATISTICSUBJECTLOG          3 rows exported
. . exporting table           MGR_STATISTICTYPELOG         41 rows exported
. . exporting table         MGR_STORAGEARRAYPLUGIN          1 rows exported
. . exporting table             MGR_STORAGEELEMENT         13 rows exported
. . exporting table    MGR_STORAGESELECTIONMANAGER          1 rows exported
. . exporting table       MGR_TASKENGINEPROPERTIES          1 rows exported
. . exporting table                MGR_TASKMANAGER          1 rows exported
. . exporting table                    MGR_TREEMAP        195 rows exported
. . exporting table                  MGR_TREESTORE       1077 rows exported
. . exporting table                       MGR_USER          4 rows exported
. . exporting table                MGR_USERACCOUNT          4 rows exported
. . exporting table                  MGR_USERSTORE          1 rows exported
. . exporting table               MGR_VIRTUALCDROM          3 rows exported
. . exporting table                MGR_VIRTUALDISK          1 rows exported
. . exporting table             MGR_VIRTUALMACHINE          1 rows exported
. . exporting table      MGR_VIRTUALMACHINECFGFILE          1 rows exported
. . exporting table MGR_VIRTUALMACHINEDISCONNECTER          7 rows exported
. . exporting table MGR_VIRTUALMACHINEOFFLINEEVENT          5 rows exported
. . exporting table MGR_VIRTUALMACHINERUNNINGEVENT         15 rows exported
. . exporting table MGR_VIRTUALMACHINESTARTINGEVEN         12 rows exported
. . exporting table MGR_VIRTUALMACHINESTOPPEDEVENT         16 rows exported
. . exporting table MGR_VIRTUALMACHINESTOPPINGEVEN          6 rows exported
. . exporting table              MGR_VMDISKMAPPING          2 rows exported
. . exporting table         MGR_VMSELECTIONMANAGER          1 rows exported
. . exporting table                       MGR_VNIC          5 rows exported
. . exporting table                MGR_VNICMANAGER          1 rows exported
. . exporting table      MGR_VNICMANAGERPROPERTIES          1 rows exported
. . exporting table                MGR_VOLUMEGROUP          4 rows exported
. . exporting table              MGR_XENHYPERVISOR          2 rows exported
. . exporting table                ODOF_ID_TO_TYPE       4537 rows exported
. . exporting table                ODOF_NOT_TABLED          0 rows exported
. . exporting table            ODOF_SYS_PROPERTIES          2 rows exported
. . exporting table             ODOF_TYPE_TO_CLASS        123 rows exported
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.

Una vez terminado ya tenemos el backup. Cerramos la shell de oracle y volvemos a root para arrancar de nuevo ovmm:

[root@oraclevmm]# /etc/init.d/ovmm start
Starting Oracle VM Manager                                 [  OK  ]

En este otro artículo podéis ver el proceso de restauración de este backup:

Cómo restaurar un backup de Oracle VM Manager 3.1.1

Instalar Oracle VM Manager en una máquina virtual

Oracle VMPara consolidar la infraestructura de virtualización, tener alta disponibilidad, reducir el uso de recursos y servidores físicos así como beneficiarnos de todo lo que nos ofrece la virtualización (HA, migraciones en caliente, backups, etc) podemos evitar la instalación de Oracle VM Manager en un servidor físico y hacerlo en una máquina virtual.

Este punto es algo muy consultado para las instalaciones de Oracle VM, ya que no queda claro al principio pero sí que es algo especificado en la documentación. El procedimiento requiere instalar previamente, y de forma temporal, Oracle VM en un servidor físico u otro sistema de virtualización (como Virtualbox de Oracle por ejemplo…) y luego, una vez creado el Pool de servidores en el VM Manager temporal, crear una nueva máquina virtual dentro del Pool con Oracle VM Manager (manteniendo el UUID original) que sustituirá al VM Manager temporal

Los pasos, tal y como indica la documentación son los siguientes:

  1. Instalar Oracle VM Manager en un servidor físico u otro sistema de virtualización como Oracle VM VirtualBox, seguir las instrucciones de la documentación oficial: “Installing Oracle VM Manager“.
  2. Añadir/descubrir los nodos físicos de Oracle VM Server que serán usados en la plataforma a través de este Oracle VM Manager. Posteriormente crear el Pool de servidores (normalmente en Cluster) y configurar los recursos mínimos necesarios (almacenamiento, repositorios, redes, etc) para el funcionamiento básico de la infraestructura. Ver la documentación oficial: Oracle VM User’s Guide.
  3. Ahora procedemos a crear una máquina virtual dentro del Pool en Cluster que hemos creado en el paso anterior. Este máquina virtual será la que tenga el Oracle VM Manager definitivo. Activaremos la alta disponibilidad (HA) para la máquina virtual.
  4. Ahora instalamos el sistema operativo (Oracle Linux) en la máquina virtual.
  5. Una vez terminada la instalación del sistema operativo, toca instalar Oracle VM Manager. Básicamente la instalación es igual que en el punto 1, en este caso sobre la máquina virtual definitiva. El punto clave es saber que hay que utilizar un parámetro durante la instalación (–uuid), que tiene que ser el mismo que el de nuestro Oracle VM Manager temporal. Los pasos al detalle:
      • Copiamos el UUID del Oracle VM Manager temporal, se encuentra en el fichero the file:
    /u01/app/oracle/ovm-manager-3/.config
      • Procedemos a la instalación de Oracle VM Manager en la máquina virtual definitiva, mantenemos el UUID de la temporal con el siguiente comando:
    /runinstaller.sh --uuid <uuid_oracle_vm_manager_temporal>
  6. Una vez instalado, paramos el Oracle VM Manager temporal.
  7. Finalmente, desde el Oracle VM Manager definitivo, hacemos un “rediscover” tanto de los servidores como del storage/repositorios. Deberían aparecer todos los recursos que teníamos en el anterior (repositorios, servidores físicos, pools de servidores…)
  8. A partir de aquí podemos trabajar en el Oracle VM Manager definitivo, que está integrado en la infraestructura de virtualización dentro de una VM.

Oracle VM Manager: diferencia instalación Demo-Production

Oracle VM

A la hora de instalar Oracle VM Manager lo primero que vemos es la opción de instalarlo en modo “demo” o “production“:

# sh runInstaller.sh
Please select an installation type:
   1: Demo
   2: Production
   3: Uninstall
   4: Help

De primeras, sin saber las diferencias entre cada uno de ellos elegiríamos uno u otro según el entorno de instalación, pero conviene saber las diferencias entre ambos. A nivel de interfaz (UI) no existe ninguna diferencia entre la versión Demo y Production. La diferencia se encuentra en el backend, concretamente en la base de datos que utiliza cada uno de ellos.

La versión Demo utiliza la base de datos Oracle XE (Oracle Database Express Edition) cuyo uso es gratuito pero cuenta con recursos limitados y no tiene soporte, debido a ello no se recomienda en entornos productivos.

La versión Production en cambio permite la utilización de Oracle SE (Oracle Database 11g Standard Edition) u Oracle EE (Oracle Database 11g Enterprise Edition). Es necesario en este caso instalar manualmente la elegida antes de comenzar la instalación de el VM Manager ya que la instalación solicitará los datos de conexión a la base de datos:

Please enter the database hostname or ip address(Default: hostname):
Specify a port that will be used for the database listener [1521]
Please specify the database SID(Default: orcl)
Please enter the password for database account 'SYS':
Set default database schema to 'OVS'.
Please enter the password for account 'OVS':
Confirm the password:

Respecto al licenciamiento, existe una licencia gratuita de uso limitado que permite utilizar SE o EE únicamente con Oracle VM Manager, no pudiendo usarla para nada más.