Restaurar el fichero de registro del cluster/GRID

Hoy vamos a ver una entada bastante sencilla que nos puede librar de algun susto que otro.

Uno de los componentes que pueden darnos problemas a la hora de arrancar un GRID es el fichero de configuración del cluster.
En el caso de un GRID control donde no hay mas miembros del cluster, esta información solamente está en el nodo de la base de datos, y , si esta información se daña o se pierde no podremos arrancar el ASM y la Base de datos
El fichero de configuración local del cluster/grid puede ubicar mirando en el fichero /etc/oracle/ocr.loc

  bash-3.2# cat /etc/oracle/ocr.loc
ocrconfig_loc=/opt/app/oracle/product/11.2.0/grid/cdata/localhost/local.ocr
local_only=TRUE

El GRID control tiene dos ficheros de configuración que deben de estar disponibles, el Oracle Cluster Registry configuration y el Oracle Local Registry configuration
Podemos ver su ubicación con el comando ocrconfig

root@gridalone:$ $GRID_HOME/bin/ocrcheck -config
Oracle Cluster Registry configuration is :
 Device/File Name: /opt/app/oracle/product/11.2.0/grid/cdata/localhost/local.ocr

root@gridalone:$ $GRID_HOME/bin/ocrcheck -local -config
Oracle Local Registry configuration is :
 Device/File Name: /opt/app/oracle/product/11.2.0/grid/cdata/localhost/sidora.olr

Estos dos ficheros no son ficheros de texto, con lo que no podremos salvaguardarlos ni restaurarlos de manera normal mediante los softwares de backup convencionales.
Para poder restaurarlos, deberemos de hacerlo mediante la opcion ocrconfig -restore

La sintaxsis para restaurarlos es :

Oracle Cluster Registry configuration

$GRID_HOME/bin/ocrconfig  -restore /opt/app/oracle/product/11.2.0/grid/cdata/localhost/backup_XXXXX.ocr 
 

Oracle Local Registry configuration

$GRID_HOME/bin/ocrconfig -local -restore /opt/app/oracle/product/11.2.0/grid/cdata/localhost/backup_XXXXX.olr 
 

Algunas notas importantes sobre el comando ocrconfig son :

  • No se le indica en ningún sitio donde ha de restaurarlos, esto lo coge de la configuración del cluster
  • Los ficheros que se indican son los ficheros DE BACKUP
  • Necesita que el fichero destino exista, en caso de no existir habría que crearlos con un touch

Hemos de tener en cuenta que, tal y como decíamos en la entrada Oracle cluster registry OCR (componentes del grid) en la version 11gR2 se guardan automáticamene, pero no debemos de confiarnos y es recomendable el comprobar si exsisten backups con la opcion ocrconfig -showbackup para activarlos en caso de que no estén activos

Como siempre, mas información en la web de oracle http://docs.oracle.com/cd/E11882_01/rac.112/e16794/ocrsyntax.htm#CWADD92022

Uso de mayúsculas/minúsculas en ASM

Vamos a ver una entrada muy cortita sobre el uso del ASM.

¿Son los ficheros/directorios del ASM sensibles a las mayúsculas y minúsculas?

Si miramos la documentación del ASM de Oracle nos dice una frase algo enigmática
«Only the forward slash (/) is supported by ASMCMD. Filenames are not case sensitive, but are case retentive. If you type a path name as lowercase, ASMCMD retains the lowercase. «

Lo que quiere decir es que, los nombres de los ficheros (y directorios) de ASM no son case sensitive, pero, las cadenas de texto con la que nos lo muestra si.

Vamos a verlo con un ejemplo:

Supongamos tenemos ASM con una base de datos llamada SID.
He creado dos tablespaces con datafiles en SID y siD y no me ha dado error en ninguno de los dos

create tablespace prueba1 datafile '+DATA/SID/prueba1.dbf' size 3m;
create tablespace prueba2 datafile '+DATA/siD/prueba2.dbf' size 3m;

Sin embargo, si intento crear

create tablespace prueba3 datafile '+DATA/SID/prueba2.dbf' size 3m;

Me da error por que ya existe el mismo fichero con el directorio siD

Conclusión: ASM no es «case sensitive», pero hemos de ser muy cuidadosos a la hora de elegir una política para la notación de los ficheros ya que el uso indiscriminado de unos y otros puede provocarnos errrores.

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

El equivalente a CONSISTENT=Y con expdp

Hoy vamos a ver otra de esas entradas sumamente sencillas que nos ahorrarán un montón de tiempo.

Si intentamos hacer un exdp de una base de datos grande que hace un uso muy intensivo de secuencias, podemos encontrarnos problemas a la hora de la importación con las claves ajenas, esto es debido a que el export que hemos llevado a cabo no es consistente.

En la versión antigua del export (exp) teníamos una opción llamda CONSISTENT=Y que nos permitía congelar la base de datos en el momento del export de manera que, la exportacion de nuestra base de datos era totalmente consistente. Sin embargo, la nueva funcionalidad expdp no lo tiene ¿hemos dado un paso atrás?

Afortunadamente, la respuesta es no, lo único que pasa, es que (como siempre) Oracle nos ha puesto algo mas dificil acertar con el nombre.

Lo que haremos con el expdp será el hacer un expdp con la opción FLASHBACK_TIME ó FLASHBACK_SCN

La nueva sintaxsis será :

  • Para hacer un export en el momento 15-05-2014 a las 21:00
    expdp user/pass ... FLASHBACK_TIME="TO_TIMESTAMP('15-05-2014 21:00:00', 'DD-MM-YYYY HH24:MI:SS')" ...
    
  • Para hacer un export en el momento que lo lanzas
    expdp user/pass ... FLASHBACK_TIME=systimestamp  ...
    
  • O bien, para lanzar un export en un determinado SCN
    expdp user/pass ... FLASHBACK_SCN=7782903
    

Hay que tener en cuenta dos cosas cuando lanzamos un expdp con FLASHBACK

  • Las dos opciones TIME y SCN son excluyentes: No se pueden poner las dos claúsulas en el mismo script de export
  • Es necesario contar con un UNDO suficiente para albergar los datos durante todo el export: Lo que estamos haciendo con esto, es mantener la base de datos congelada en ese punto, si el export dura 7 horas, deberemos de contar con un UNDO capaz de mantener todos los datos que se llevan a cabo durante estas 7 horas, de lo contrario ,el export fallará con el error típico de UNDO insuficiente

Como siempre, la información completa en la Documentación de oracle

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.