RMAN por entorno de red de windows (ORA-27040 )

Hoy veremos un error bastante comun cuando intentamos hacer un rman remoto en un entorno windows

Supongamos tenemos un servidor windows A y queremos hacer un backup de RMAN depositado en otro servidor windows B

rman target / nocatalog cmdfile rman_windows.cmd

Donde el fichero rman_windows.cmd es

run {
  allocate channel c1 type disk format '\\B\BCKORACLE\rman_pruebas%U';
  backup database;
}

En función de los permisos que tengamos en el servidor B, obtendremos un error:

canal c1: iniciando parte 1 en 18/08/13
canal liberado: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: fallo del comando backup en el canal c1 en 08/18/2013 09:12:55
ORA-19504: fallo al crear el archivo "\\B\BCKORACLE\rman_pruebas08OH_1"
ORA-27040: error de creacion de archivo, no se ha podido crear
OSD-04002: no se ha podido abrir el archivo
O/S-Error: (OS 5) Acceso denegado.
Recovery Manager terminado.

Como podemos ver en el error, leyendo siempre de abajo a arriba es un error de acceso de sistema operativo, tal y como indica la nota (Doc ID 145843.1) How to Configure RMAN to Write to Shared Drives on Windows NT/2000/2003 , Oracle necesita tener permisos de SYSTEM sobre el punto de red en el que va a escribir, por tanto tendremos que dar full control al usuario con el que se este ejecutando la base de datos ( o el script de lanzamiento) sobre el recurso remoto.

Un consejo para los windows 2003 en adelante es el no utilizar nombres locales de redes mapeadas, sino que es mas conveniente el uso de nombres de red genérico.

NOTA: En caso de ser una carpeta compartida por entorno de red de windows habrá que dar control total a el system de la máquina donde se ejecuta el Oracle, esto se puede haer con permisos a MI_DOMINIO\A$ donde MI_DOMINIO es el dominio y A el nombre del servidor

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.

Encontrar el proceso que se come la CPU en windows

Una de las principales diferencias de oracle para Unix y Windows radica en que, debido a el tipo de sistema operativo, en Windows tenemos un proceso monolítico oracle.exe, y no la multitud de procesos que nos encontramos en los sistemas Unix. Así pues, cuando queremos saber cual es el proceso que se nos come la CPU, siempre vamos a tener una misma respuesta oracle.exe y, además de eso, probablemente no podamos enlazarlo con los procesos de sistema operativo.

¿Como solucionamos este problema?

Para empezar, mi recomendación es tener en el servidor uno de estos dos programas

  • Pprocess explorer
  • QSlice

Los dos programas son gratuitos y se pueden descargar desde soporte de microsoft, y nos permitirán ver con mayor facilidad el origen de nuestro problema.

Si abrimos el process explorer , veremos algo similar a esto:
process explorer

Aquí podemos ver como uno de los procesos oracle se esta comiendo el 100% de la CPU , si hacemos boton derecho «propiedades», el process explorer nos indicará en una ventana independiente la informacion de este proceso, si vamos a la pestaña «threads» y ordenamos por CPU, tendremos:
proceso oralce.exe

Aqui vemos como los treads que mas CPU están consumiendo son

  • 3076 con el 23%
  • 4976 con el 19,95%

Ahora, teniendo estos dos número de thread, si que podremos ir a nuestra ventana de sql y enlazar este numero de thread con el proceso/sesion de Oracle que está causando la carga


select proc.spid ThreadNO,  
sess.username Usuario,  
sess.osuser OSUser,
sess.machine Maquina,  
sess.status Estado,  
sess.sid SessionID,  
sess.program Program  
from v$process proc, v$session sess, v$bgprocess bg  
where sess.paddr = proc.addr  
and bg.paddr(+) = proc.addr  
and proc.spid in (3076)

Esta informacion tambien puede obtenerse con qslice.exe, solamente que la información del thread está en exadecimal, y habremos de pasarla a decimal, por otra parte, la ventaja del qslice.exe es que es más ligero que el process explorer, con lo que, como decía al principio, mi recomendación es tener los dos en el servidor

Problemas con los requerimientos del cliente 11gr2 en windows

Volvemos tras las vacaciones navideñas con una pequeña entrada de esas tremendamente simples, pero que pueden ser evitarnos una gran pérdida de tiempo.

Una de las cosas mas engorrosas de las instalaciones de Oracle es la instalación del cliente, en primer lugar, porque pocas veces nos especifican que es exactamente los componentes del cliente que necesitan, y en segundo lugar, por que, hasta estas últimas versiones la instalación ( especialmente la desinstalación) del cliente de windows era muy engorrosa.

Pues bien, el otro día en la instalación de un cliente 11gr2 en windows me encontré con un error nuevo:

error_instalacion_XP

Mi windows XP detectaba un error en los requerimientos de la instalacion del cliente (no instantclient), cuando, todos los requerimientos eran correctos.

La solución es tan sencilla como el habilitar el uso compartido de C$. Parece ser que el instalador utiliza «\\< servidor >\C$\temp» , con lo que si no está habilitado el recurso, la instalación falla.

La información completa del caso está (como siempre) en metalink, en la nota «Installation of 11gR2 on Windows Fails Checking Requirements [ID 1133495.1]»