Posts etiquetados ‘Oracle’

Hace algún tiempo se nos pidió apoyar en una integración no certificada por Oracle, pero que sin embargo, se solicitaba como necesaria y obligatoria, por lo que había que hacerla Sí o Sí.

La solicitud era hacer que Beehive se integrará con un Directorio Externo. Al día de hoy Beehive se puede integrar con los siguientes servicios de Directorio:

  • Oracle Internet Directory
  • IBM Tivoli Directory Server
  • Microsoft Active Directory Server
  • OpenLDAP Directory Server
  • Oracle Directory Server Enterprise

Novell eDirectory no es un servicio de Directorio que este certificado, sin embargo haciendo uso del perfil de OpenLDAP, y haciendo los mapeos necesarios en el archivo XML e importandolo mendiante beectl (beectl add_directory_profile –file openldapMapping.xml) o gestionando el perfil desde la consola de Beekeeper es posible comenzar la integración.

El paso anterior sin embargo presenta el problema que no sincroniza usuario alguno. De hecho si desde la línea de comandos ejecutamos un beectl download_ldap_user_data –file UsersFromLDAP.xml –profile NovellProfile, obtenemos un mensaje de error como el siguiente:
Generando XML de usuarios entre 0 y 100.

Número de entradas de LDAP en las bases de búsqueda de LDAP especificadas: 1000.
Número de entradas de LDAP que se han leído correctamente desde el
servidor LDAP: 0.
Fallo al leer 1000 entradas de LDAP desde el servidor LDAP.
Número de entradas de LDAP que cumplen la asignación de reglas de
sincronización de LDAP: 1000.
Número de usuarios generados correctamente en el archivo XML: 0.

Buscando en los logs, podemos notar que no se encuentra algún mensaje de error suficientemente claro que indique cual es el problema.

Búscando el Origen del Problema
Primeramente, había que encontrar que era lo que provocaba el error, para ello lo primero es hacer uso de un sniffer, Wireshark salió al rescate. Al ejecutar el comando de sincronización, se generan muchas peticiones LDAP para la obtención de información:

Peticiones

Como podemos observar, solo había necesidad de buscar la petición que solicitaba a los diferentes usuarios para determinar cual era el problema, por intuición, buscamos la última solicitud cuya operación sea “Buscar”:

Petición de Búsqueda

Petición de Búsqueda

Finalmente dentro del request, podemos ver que se solicitan diferentes atributos, y en especial debemos prestar atención a uno de ellos entryUUID:

El atributo entryUUID

entryUUID

Desgraciadamente en eDirectory no existe el atributo. Así que la solución como podemos observar se torna sencilla (claro… después de determinar cual fue el error, solucionarlo es mas fácil):

  1. Crear mediante el ConsoleONE, el atributo entryUUID, las características es que dicho atributo debe ser del tipo Case Ignore String y tener activada la bandera de Single Value
  2. Asignar el atributo entryUUID a la clase Person, esto lo heredará al usuario
  3. Se debe rellenar el atributo de forma que a cada usuario le toque un valor diferente, esto es importante porque este es el campo que se asocia al atributo Directory Locator en Beehive y actua como campo clave para las sincronizaciones posteriores. Un ejemplo de como obtener un UUID válido es ejecutar desde linea de comandos: uuidgen -t

Finalmente podemos ejecutar nuevamente el comando de descarga de usuarios, o simplemente habilitar el perfil para que periódicamente sincronice los usuarios.

De esta forma, tenemos una integración “Nativa” entre eDirectory y Beehive sin hacer tanto circo, maroma y teatro.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio

Anuncios

No existe un día en el que no escuchemos al menos una par de ataques a diferentes sitios. Como podemos suponer en general los administradores de sistemas tienen que estar al pendiente de todas las posibles vulnerabilidades para tratar de subsanarlas (XSS, SQLi, Bugs, CVE’s, etc). Un atacante solo necesita una. Al día de hoy que se escribe este artículo, el 25% de los ataques a los sistemas web, y el robo de información se produce mediante SQL Injection (SQLi).

Un ataque de SQLi, sucede generalmente cuando se hace un chequeo incorrecto de las variables usadas en los formularios o los campos de entrada de texto de las diferentes aplicaciones (por lo general Aplicaciones WEB). Un ataque de SQLi, puede ir desde lo más simple (obtener accesos a una aplicación), hasta obtener un dump completo de la base de datos o información restringida, en general se puede hacer un simple query como:
' HAVING 'x'='x'--
hasta un
a' AND (SELECT CAST(CHAR(10) + COUNT + CHAR(10) AS INT) FROM (SELECT CAST(COUNT(name) AS VARCHAR) AS COUNT FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'clientes' ) ) NataS ) = 1 OR 'perro' = 'gato' AND ID_Cliente = 'a (por decir poco).

Database Firewall es la primer linea de defensa de Oracle para protección de las Bases de datos (es una solución heterogénea). Su aparición se debe a que las actuales herramientas de aseguramiento no son funcionales contra ataques de este tipo.

Database firewall, funciona como un firewall de redes normal… a diferencia que únicamente se encarga de validar las sentencias SQL que pasan por la caja. Que es lo que hace a DBFW diferente:

  • Implementación medianta listas blancas, listas negras y de excepción. A diferencia de otras herramientas que trabajan mediante listas negras para bloquear sentencias que no son válidas, lo que vuelve complejo la protección debido a que existen miles de formas de generar el mismo resultado.
  • Puede trabajar inline y offline, ademas de generar monitoreo y bloqueo.
  • Alertas en tiempo real
  • Soporte para múltiples bases de datos: Oracle, MSSQL, Sybase y DB2
  • Es un software que se instala en equipo común, y que para que este soporte mayor cantidad de TPS, solo necesita mayor cantidad de RAM y CPU

A diferencia de otros proveedores de seguridad de bases de datos que identifican eventos fuera de la política de seguridad mediante expresiones regulares, DBFW entiende el significado y las intenciones de las sentencias.

DBFW implementa un enfoque basado en whitelists que sólo permite que se envíen a la base de datos las sentencias SQL correctas, y aprende de las sentencias SQL que desea controlar. El algoritmo de DBFW va más allá de la sintaxis y se acerca al significado antes de que se envíe a la base de datos. Cuando la sentencia se analiza, se clasifica en un “cluster” según la estructura de la sentencia y se proporciona un valor hash único que identifica de manera eficiente si el SQL se ha registrado o puesto en la whitelist. Mediante la comprensión de la gramática, el ataque de inyección y otras sentencias que no cumplan con las políticas se detectan como anomalías.

DBFW esta compuesto por tres partes:

  • DBFW Server, es el encargado de aplicar las políticas, generar el monitoreo, accionar las alertas, etc. Si lo vemos en una infraestructura de red común, este se convierte en el FW que filtra todas las peticiones de red (solo que en este caso únicamente son sentencias SQL).
  • DBFW Management Server, es el servidor que guarda los reportes sobre la base de datos, y aplica las configuraciones a los diferentes DBFW Servers que tengamos en la infraestructura. También genera los reportes que se le soliciten
  • DBFW Analyzer, se encarga de analizar el conjunto de sentencias inicial y de gestionar las diferentes políticas, crearlas, generar las listas negras, blancas, etc

En las siguientes entradas, aprenderemos a instalar, configurar, gestionar y crear un sizing adecuado en base a nuestra infraestructura.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio

Oracle VM 3.0 Released

Publicado: noviembre 17, 2011 de NataS en OpenSource, Oracle, OVM, OVM Server, Virtualización, XEN
Etiquetas:, , , ,

Hace no mucho tiempo que Oracle liberó una nueva versión de su hypervisor para mantenerse en la linea y competir contra VMWare en su hegemonía de la virtualización empresarial (Si tienen dudas pueden consultar el último reporte que saco Gartner en Junio del 2011 ).

Pues bien, con este nuevo release, se vienen diferentes mejoras, asociadas al uso de las últimas versiones en casi todos sus componentes (la versión 2.2, aun usaba Xen 2.X #LOL):

  • High performance, high scalability, creo que es una de las características mas interesante. Oracle esta apostando mucho al “Cloud Computing”, sus nuevas versiones se denominan 12c en honor al cloud, así que con esta nueva versión de OVM, se sorporta hasta 160 CPU físicos y 2TB de RAM, además que podrán asignar a sus máquinas virtuales hasta 128 vCPU’s y 1TB de memoria.
  • Manejo Avanzado por ningún costo adicional, gracias a su nueva interfaz con ADF, se tiene una UI mas intuitiva y limpia. Además tiene integración directa con Enterprise Manager. Entre otras cosas esta nueva versión cuenta con soporte para administrar, maquinas virtuales basadas en políticas, Dynamic Resource Scheduling, Dynamic Capacity y finalmente Power Management.
  • Configuración y administración central del almacenamiento, lo que permite manejar el almacenamiento de forma autómatica, de hecho una de las nuevas características del OVM 3.0, es que ya detecta el almacenamiento en automático para cada OVM Server.
  • Configuración y Administración Central de la Red, ahora toda la configuración lógica de la red es realizada desde la consola de administración (OVM Manager), permitiendo generar desde una amigable interfaz gráfica port bounding, bridges y VLAN’s
  • Soporte OVF, la estandarización se da en OVM dando soporte a software basado en OVF (Open Virtualization Format), para acelerar el despliegue de máquinas generados por terceros.
  • Rápido provisionamiento y clonado de VM’s, el soporte de archivos SPARSE en OCFS, permite una ganancia en performance al crear y clonar máquinas virtuales. Ademas gracias a las nuevas características de OCFS, ahora se puede clonar cualquier maquina virtual e iniciarla en cualquier servidor del Pool al momento gracias a su copy-on-write.
  • Soporte para Solaris, OpenSolaris, Linux y Windows
  • XEN 4.0
  • OCFS 1.6, gracias a la nueva versión de OCFS y su característica denominada REFLINK es posible hacer snapshots de la maquina virtual en caliente. Para más información de las nuevas mejoras con este sistema de archivos pueden revisar La Guia de Usuario de OCFS

El producto sigue siendo gratuito, con opción de soporte. Este último tiene algunas ventajas muy significativas, como el hecho que cualquier OEL instalado como guest va sin licencia con soporte.

Sinceramente y a nivel personal tiene muy buena pinta, de hecho la interfaz ya es tan intuitiva como Proxmox y las capacidades para niveles empresariales son bastante aceptables.

Como nota curiosa, el CERN, ha implementado Oracle VM en sus equipos. Y si quieren conocer todos los clientes de Oracle que cuentan con Oracle VM y como han realizado su implementación pueden visitar Este Sitio.

Finalmente recuerden que a pesar de que los productos de Oracle están soportados en otros hypervisor, estos no están certificados… así que es un arriesgue.

Cualquier duda, queja o sugerencia, es bienvenida.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio

Los cambios introducidos en la arquitectura de IDM11g nos llevan a atacar de otra forma los diferentes problemas que se pueden tener. De igual forma, el corto tiempo que lleva la versión en el mercado y su dependencia con otras herramientas, hacen difícil para quienes van empezando, que puedan detectar por donde atacar los problemas. Es por ello que en esta entrada, analizaremos diferentes errores en el arranque de nuestro dominio de IDM, las causas y su solución.

  1. Error en la inicialización de MDS
    Mensaje de Error:
    oracle.mds.config.MDSConfigurationException: MDS-01330: no se ha podido cargar el documento de configuración de MDS
    MDS-01329: no se ha podido cargar el elemento "persistence-config"
    MDS-01370: Configuración de almacén de datos para metadata-store-usage "ApmRoot" no válida.
    ORA-06550: línea 1, columna 12:
    PLS-00201: identifier 'MDS_INTERNAL_SHREDDED.GETREPOSITORYVERSION' must be declared
    ORA-06550: línea 1, columna 7:

    Causa: Posible mala configuración en el datasource que conecta a la base de datos, en específico del username.
    Solucion: Modificar el archivo $IDM_DOMAIN/config/jdbc/apm-server-mds-jdbc.xml, en específico la propiedad “user”, de forma que quede algo como:
    <property>
    <name>user</name>
    <value>DEV_MDS</value>
    </property>
  2. Error en la inicialización del clúster coherence
    Mensaje de Error:
    ####<20/04/2011 12:24:32 AM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@251282735 3.5.3/465p2> <<anonymous>> <> <> <1303277072116> <BEA-000000> <2011-04-20 00:24:32.116/300.434 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=Cluster, member=n/a): Node /192.168.58.1:9095 is not allowed to create a new cluster; WKA list: [alien-natas.nekasys.com/127.0.0.1:9095]>
    ####<20/04/2011 12:24:32 AM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@251282735 3.5.3/465p2> <<anonymous>> <> <> <1303277072156> <BEA-000000> <2011-04-20 00:24:32.155/300.473 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)', member=n/a): Error while starting cluster: java.lang.RuntimeException: Failed to start Service "Cluster" (ServiceState=SERVICE_STOPPED, STATE_ANNOUNCE)

    Causa: OAM 11g utiliza Coherence para mantener las sesiones. Coherence a su vez utiliza dos métodos para inicializar el clúster cache: Multicast Unicast. La libreria de coherence sobre OAM11g usa unicast para establecer el clúster, y únicamente permite a la propia maquina iniciarlo (hostname y localhost). Este problema se puede por tanto presentar en dos casos:

    1. OAM en H-A
    2. Maquina con múltiples direcciones IP

    Solucion: Editar la lista de WKA para OAM, por ello es necesario:

    1. Copiar a alguna ruta temporal la libreria de coherence para OAM, $IDM_DOMAIN/config/fmwconfig/mbeans/oam/coherence.jar
    2. Descomprimir el jar que copiamos: jar xf coherence.jar, una vez descomprimido eliminarlo
    3. Abrir el archivo tangosol-coherence.xml
    4. Editar el archivo donde esta la configuración de la WKA, acorde al número de nodos, interfaces o direcciones IPs que queramos permitir, el siguiente es un ejemplo:
      <well-known-addresses>
      <socket-address id="1">
      <address system-property="tangosol.coherence.wka"></address>
      <port system-property="tangosol.coherence.wka.port">9095</port>
      </socket-address>
      <socket-address id="2">
      <address system-property="tangosol.coherence.wka2"></address>
      <port system-property="tangosol.coherence.wka2.port">9095</port>
      </socket-address>
      <socket-address id="3">
      <address system-property="tangosol.coherence.wka3"></address>
      <port system-property="tangosol.coherence.wka3.port">9095</port>
      </socket-address>
      <socket-address id="4">
      <address system-property="tangosol.coherence.wka4"></address>
      <port system-property="tangosol.coherence.wka4.port">9095</port>
      </socket-address>
      <socket-address id="5">
      <address system-property="tangosol.coherence.wka5"></address>
      <port system-property="tangosol.coherence.wka5.port">9095</port>
      </socket-address>
      </well-known-addresses>
    5. Generar el jar, con el archivo ya modificado.
    6. Copiar y sobreescribir el jar en las siguientes rutas:
      $IDM_DOMAIN/config/fmwconfig/mbeans/oam/
      $IDM_DOMAIN/servers/AdminServer/tmp/_WL_user/oam_admin_11.1.1.3.0/g5iha/APP-INF/lib (Aqui el nombre depende de la aleatoriedad asi que deben validarlo en su instalacion).
    7. Por último debemos agregar las siguientes opciones a la variable EXTRA_JAVA_PROPERTIES en el archivo $IDM_DOMAIN/bin/setDomainEnv.sh (como sugerencia, que este en la misma línea donde el instalador hizo las modificaciones para agregar la configuración de coherence):
      -Dtangosol.coherence.wka=home.nekasys.com -Dtangosol.coherence.wka2=clon.nekasys.com -Dtangosol.coherence.wka3=vmnet1.nekasys.com -Dtangosol.coherence.wka4=vmnet8.nekasys.com -Dtangosol.coherence.wka5=ipad.nekasys.com -Dtangosol.coherence.wka.port=9095 -Dtangosol.coherence.wka2.port=9095 -Dtangosol.coherence.wka3.port=9095 -Dtangosol.coherence.wka4.port=9095 -Dtangosol.coherence.wka5.port=9095

      En el ejemplo previo se puede notar que se agregaron seis interfaces, la configuración variara según el numero de interfaces de la máquina o nodos que se agreguen en el clúster. A modo de ejemplo, la variable quedaría definida como:
      EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES} -Dsoa.archives.dir=${SOA_ORACLE_HOME}/soa -Dsoa.oracle.home=${SOA_ORACLE_HOME} -Dsoa.instance.home=${DOMAIN_HOME} -Dtangosol.coherence.clusteraddress=227.7.7.9 -Dtangosol.coherence.clusterport=9778 -Dtangosol.coherence.log=jdk -Dtangosol.coherence.wka=home.nekasys.com -Dtangosol.coherence.wka2=clon.nekasys.com -Dtangosol.coherence.wka3=vmnet1.nekasys.com -Dtangosol.coherence.wka4=vmnet8.nekasys.com -Dtangosol.coherence.wka5=ipad.nekasys.com -Dtangosol.coherence.wka.port=9095 -Dtangosol.coherence.wka2.port=9095 -Dtangosol.coherence.wka3.port=9095 -Dtangosol.coherence.wka4.port=9095 -Dtangosol.coherence.wka5.port=9095 -Djavax.xml.soap.MessageFactory=oracle.j2ee.ws.saaj.soap.MessageFactoryImpl -Djava.protocol.handler.pkgs=${PROTOCOL_HANDLERS} -Dweblogic.transaction.blocking.commit=true -Dweblogic.transaction.blocking.rollback=true -Djavax.net.ssl.trustStore=${WL_HOME}/server/lib/Nekasys.jks"
    8. Listo, pueden iniciar normalmente su dominio sin excepciones de coherence ni en el OAM
  3. Error en el refresh de sockets al iniciar Coherence
    Mensaje de Error:
    ####<21/04/2011 09:18:23 PM CDT> <Error> <Coherence> <alien-natas> <AdminServer> <Logger@9267279 3.5.3/465p2> <<anonymous>> <> <> <1303438703399> <BEA-000000> <2011-04-21 21:18:23.398/274.616 Oracle Coherence GE 3.5.3/465p2 <Error> (thread=PacketSpeaker, member=1): Stopping cluster due to unhandled exception: com.tangosol.net.messaging.ConnectionException: Unable to refresh sockets: [UnicastUdpSocket{State=STATE_OPEN, address:port=192.168.2.251:9095}, TcpSocketAccepter{State=STATE_OPEN, ServerSocket=192.168.2.251:9095}]; last failed socket: UnicastUdpSocket{State=STATE_OPEN, address:port=192.168.2.251:9095}

    Causa: Una de las interfaces de red del equipo esta activa, sin embargo no tiene asociada una dirección IP.
    Solucion: Asignar una dirección IP a la interfaz, o desactivar la misma.

Esos fueron algunos de los issues con los que nos hemos topado, y las soluciones a los mismos.
De igual forma si tienen alguna duda y/o comentario no duden en escribirnos.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>

Soy un amante a utilizar eficientemente los recursos de las computadoras. En general nunca instalalo cosas que puedan ocupar mas RAM de lo debido solo porque se ven “bonitas”, por ejemplo, el reproductor de audio que tiene la Laptop del trabajo es vía comandos y funciona por un demonio (MPD), mi entorno gráfico usa IceWM y en general para cada aplicación trato de usar lo necesario y solo eso. Dicho eso pasemos al tema en cuestion.

Si bien las máquinas virtuales nos permiten portar de un lado a otro todo un ambiente, también es cierto que implican un desperdicio en recursos, más aun cuando estamos hablando de que se montan en computadoras con “moderados” recursos. Citado lo anterior y puesto que me disponía a realizar toda una demo de lo que es Oracle IDM11g, sus características e integración en un todo (para más información visita aquí), me ví en la tarea de realizar la instalación sobre mi sistema Operativo (AKA Debian GNU/Linux). Las siguientes son las características del entorno y de lo que instale:

  • Procesador: 2 Intel i7
  • RAM: 8GB
  • Sistema Operativo: Debian GNU/Linux sid-experimental
  • Base de datos: Oracle Database 11.2.0.1.0
  • Weblogic: Weblogic 10.3.3
  • SOA Suite: Ver. 11.1.1.3
  • IDM: Ver. 11.1.1.3
  • IAM: Ver. 11.1.1.3

Sin más preámbulos vamos a los pasos necesarios:

  1. Preparación del Entorno, debemos hacer algunas configuraciones previas en nuestro sistema para albergar la instalación, las siguientes son los comandos y/o modificaciones que se deben realizar:
    • Crear el archivo que marca el release de Redhat en el que estamos (estaríamos):
      echo "Red Hat Enterprise Linux Server release 5.4 (Tikanga)" > /etc/redhat-release
    • Ejecutar el siguiente comando para instalar las dependencias necesarias:
      aptitude install pdksh odbcinst1debian2 unixodbc-dev unixodbc unixodbc-bin libaio1 libaio-dev sysstat isag elfutils libelf1 binutils-dev binutils libstdc++5 cpp-4.1 gcc-4.1 gcc-4.1-multilib
    • Agregar las siguientes líneas en el archivo de configuración de /etc/sysctl.conf (o generar algún archivo dentro de /etc/sysctl.d):
      ###############################3
      # Oracle Parameters
      kernel.shmall = 2097152
      kernel.shmmax = 2147483648
      kernel.shmmni = 4096
      kernel.sem = 250 32000 100 128
      fs.file-max = 6815744
      net.ipv4.ip_local_port_range = 9000 65500
      net.core.rmem_default = 4194304
      net.core.rmem_max = 4194304
      net.core.wmem_default = 262144
      net.core.wmem_max = 1048576
      fs.aio-max-nr = 1048576

      Finalmente para que el sistema tome los cambios ejecutamos: sysctl -p
    • Crear los grupos de sistema necesarios para la base de datos:
      addgroup --system oinstall
      addgroup --system dba
    • Obviamente debemos agregar a nuestro usuario a los grupos generados:
      usermod -a -G dba,oinstall $USER
    • Ejecutar los siguientes comandos para generar los enlaces necesarios por el instalador de Oracle:
      ln -s /usr/bin/awk /bin/awk
      ln -s /usr/bin/rpm /bin/rpm
      ln -s /usr/bin/basename /bin/basename
    • Agregar las siguientes líneas al archivo /etc/security/limits.conf:
      @dba soft nproc 2047
      @dba hard nproc 16384
      @dba soft nofile 1024
      @dba hard nofile 65536
    • Asegurarnos de usar (de preferencia) el compilador de C (AKA gcc4.1)
    • Reiniciar sesión con el usuario para que tome los cambios.
  2. Instalación de la base de datos. Notaremos que saltarán varios errores respecto a las dependencias de paquetes, podemos omitirlos y seleccionar las opciones de instalación de la base de datos.
  3. Crearemos una base de datos que tenga una distribución asignada de 2.5GB (SGA), ademas de ampliar a 500 el numero de procesos y cursores abiertos.
  4. Utilizamos el RCU para crear los esquemas que necesitemos. En este caso se ocuparon todos los de Identity Management, lo que en automático instalo algunos otros como el de SOA.
  5. Instalamos el servidor de weblogic (debe ser exactamente la versión 10.3.3).
  6. Instalamos la SOA Suite 11.1.1.2, esto creará el home $SOA_HOME
  7. Instalamos el Patch-Set 11.1.1.3 de SOA Suite
  8. Instalamos IDM 11.1.1.2, esto creara el home $IDM_HOME
  9. Instalamos el Patch-Set de IDM 11.1.1.3
  10. Instalamos la IAM 11.1.13, esto creará el home $IAM_HOME
  11. Configuramos las opciones de Identity Management según las necesitemos, para ello usamos el script $IDM_HOME/bin/config.sh, cabe destacar que debemos seleccionar la opción de crear un nuevo dominio, puesto que no lo hemos creado hasta este momento.
    El script creará y extenderá el dominio, además de configurar una instancia de OID, OVD, ODSM y OIF.
  12. Ahora es el turno de configurar el IAM, para ello ejecutaremos el script $IAM_HOME/common/bin/config.sh, y puesto que queremos instalar todo sobre el mismo dominio, solo es necesario extenderlo.
    Finalizado el script, deberemos reiniciar todo el Weblogic (osea el dominio generado en el paso anterior), para que tome los cambios.

Les recomiendo generar el archivo boot.properties para no depender de introducir manualmente el password y el usuario del administrador de weblogic (esto claro excepto la primer vez que es obligatorio para que se generen los directorios de los servidores nuevos). Como se pueden dar cuenta, los pasos estan explicados a grandes rasgos, esto es porque prácticamente la instalación en un escenario donde se usarán todos los productos en un solo dominio, sin H-A, etc, sigue un esquema siguiente-siguiente y no es necesario deternos a explicar algún paso intermedio.

Finalmente, para arrancar los servicios, pueden usar cualquiera de las siguientes opciones:

  1. Método usando Enterprise Manager:
    #Arrancar el listener de la base de datos
    lsnrctl start
    sqlplus "/as sysdba" < ../servers/$ADMINSVR_NAME/logs/consoleAdmin.log 2>&1 &

    #Arrancar el nodeManager:
    cd $WLS_HOME/server/bin
    nohup ./startNodeManager.sh > $DOMAIN_HOME/logs/nodeManager.log 2>&1 &

    #Iniciar los diferentes ManagedServers desde el EM
    http://$HOST:$PORT/em

    #Si instalaron todo IDM, notarán que deben levantar los siguientes: oaam_admin_server1, oaam_server_server1, oam_server1, oim_server1, soa_server1, wls_ods1, wls_oif1.

  2. Método usando linea de comandos:
    #Arrancar el listener de la base de datos
    lsnrctl start
    sqlplus "/as sysdba" < ../servers/$ADMINSVR_NAME/logs/consoleAdmin.log 2>&1 &

    #Arrancar los managed Servers, si instalaron todo IDM, notarán que deben levantar los siguientes: oaam_admin_server1, oaam_server_server1, oam_server1, oim_server1, soa_server1, wls_ods1, wls_oif1.:
    cd $WLS_HOME/server/bin
    nohup ./startManagedWebLogic.sh $SERVER_NAME http://$HOST:$PORT > ../servers/$SERVER_NAME/logs/console.log 2>&1 &

Y listo, tenemos todo #IDM11g instalado y configurado en nuestro flamante Debian GNU/Linux. Consumiendo solo los recursos necesarios para ello.
Dudas, quejas y/o aclaraciones son bien recibidas.

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>

Debido a una modificación en la arquitectura inicial, se nos solicito mover unas maquinas virtuales (creadas con OVM) de su repositorio local hacia un “Storage” de SAN.
Esto porque mediante otro software se iban a replicar todos los cambios de un servidor a otro para tener un ambiente DRP. Debido a que “se queria” simplificar la administración no se hizo uso de las capacidades de H-A de OVM.
La siguiente guía puede ser aplicada en los siguientes escenarios (ya sea directa o indirectamente):

  1. Cuando se requiere migrar del storage local hacia un storage de Fibra Optica
  2. Cuando se copia bit a bit las VM’s y estas llegan a un servidor OVM que no fue configurado para ello
  3. Cuando se configuro un servidor con un repositorio inicial y los discos fueron cambiados lo que modifico a su vez los UUID’s

Los siguientes son los pasos necesarios para lograr la migración de la VM’s:

  1. Instalar y configurar los drivers de la tarjeta de fibra. Dependiendo de la marca, serán los pasos necesarios, la mayoría cuenta con sus drivers y únicamente es necesario compilarlos e instalarlos. En conjunto con este paso les recomendamos instalar las sg3-utils, las cuales les ayudarán a detectar issues con la configuración de las LUNS.
  2. Configurar el multipath, para ello deberemos editar el archivo /etc/multipath.conf y dejarlo acorde a la configuración de nuestro ambiente. El siguiente ejemplo es la configuración común de EMC y un Storage Clarion, por supuesto si leemos el manual de multipath.conf encontraremos más información al respecto.
    ## This is the /etc/multipath.conf file recommended for
    ## EMC storage devices.
    ## OS : RHEL5
    ## Arrays : CLARiiON
    ## Use user friendly names, instead of using WWIDs as names.
    defaults {
    user_friendly_names yes
    }

    ## The blacklist is the enumeration of all devices that are to be
    ## excluded from multipath control
    devnode_blacklist {
    ## Replace the wwid with the output of the command
    ## 'scsi_id -g -u -s /block/internal scsi disk name'
    ## Enumerate the wwid for all internal scsi disks.
    ## Optionally, the wwid of VCM database may also be listed here.
    # wwid 20010b9fd080b7321
    #devnode "sd[a]$"
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)0-9*"
    devnode "^hda-z"
    devnode "^cciss!c0-9d0-9*"
    }
    devices {
    ## Device attributes for EMC CLARiiON
    device {
    vendor "DGC"
    product "*"
    path_grouping_policy group_by_prio
    getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
    prio_callout "/sbin/mpath_prio_emc /dev/%n"
    hardware_handler "1 emc"
    features "1 queue_if_no_path"
    no_path_retry 300
    path_checker emc_clariion
    failback immediate
    }
    }

  3. En caso de que necesitemos re-scanear los dispositivos y/o las luns, es preciso ejecutar:
    echo “1” > /sys/class/fc_host/hostX/issue_lip
    echo “- – -” > /sys/class/scsi_host/hostX/scan
    Donde X es el ID asociado (normalmente) con cada tarjeta de fibra.
  4. Arrancar el demonio del multipath. Estó generará (en base al archivo antes descrito), los dispositivos con los cuales podremos trabajar. Para validar las configuraciones nos valdremos del comando multipath -ll el cual nos pintará los dispositivos:
    mpath1 (360060160539022006d7b78ce81b4df11) dm-1 DGC,RAID 5
    [size=52G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
    \_ round-robin 0 [prio=2][active]
    \_ 0:0:1:1 sdf 8:80 [active][ready]
    \_ 1:0:1:1 sdn 8:208 [active][ready]
    \_ round-robin 0 [prio=0][enabled]
    \_ 0:0:0:1 sdb 8:16 [active][ready]
    \_ 1:0:0:1 sdj 8:144 [active][ready]
    mpath0 (360060160539022006c7b78ce81b4df11) dm-0 DGC,RAID 5
    [size=52G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
    \_ round-robin 0 [prio=2][active]
    \_ 0:0:0:0 sda 8:0
    [active][ready]
    \_ 1:0:0:0 sdi 8:128 [active][ready]
    \_ round-robin 0 [prio=0][enabled]
    \_ 0:0:1:0 sde 8:64 [active][ready]
    \_ 1:0:1:0 sdm 8:192 [active][ready]
  5. Una vez con los dispositivos /dev/mapper/mpathX generados, procederemos a particionarlos, usando para ello el comando fdisk /dev/mapper/mpathX
  6. Ya particionadas las unidades debemos solicitar al servidor a leer la nueva tabla de particiones, para ello podemos o reiniciar o forzar la lectura de la misma. En este caso nos ocuparemos de “forzar” al servidor, usando para ello la siguiente secuencia de comandos (para más información consulta la página del manual del comando):
    kpartx -a /dev/mapper/mpathX
    kpartx -l /dev/mapper/mpathX
  7. Después se deben formatear las particiones generadas con el sistema de archivos OCFS2, una configuración aceptable es la siguiente:
    mkfs.ocfs2 -T datafiles -N 8 -L “VOL_NAME” /dev/mapper/mpathXp1
    Sin embargo, les recomendamos leer la página del manual del comando y ajustarse de acuerdo a sus necesidades específicas.
  8. Ahora es cuando debemos apagar las máquinas virtuales que estén corriendo en el OVM-server
  9. Agregamos el storage de la SAN como repositorio, para ello hacemos uso del siguiente comando que esta ubicado en /opt/ovs-agent-2.3/utils/ :
    ./repos.py -n /dev/mapper/mpathXp1
    En caso de tener diferentes storages, agregamos cada uno de ellos, y una vez que se hayan agregado todos, los inicializamos ejecutando el siguiente comando:
    ./repos.py -n /dev/mapper/mpathXp1
  10. Agregados todos los repositorios solo basta inicializarlos con el comando: ./repos.py -i

  11. Finalmente solo resta mover las maquinas virtuales a su destino, en general la ruta de destino debe ser:
    /var/ovs/mount/$PAT_UUID/running_pool/
  12. Lo único que resta es encender lás maquinas virtuales, las cuales se pueden encender desde el OVM-manager, o para los desesperados directamente desde linea de comandos con:
    xm create $PATH_TO_VM/vm.cfg

Obviamente, con sus respectivas modificaciones, se puede lograr que estos pasos funcionen para un esquema iScsi, o inclusive solo para activar la SAN para cualquier sistema GNU/Linux sin necesidad de virtualización.

Dudas y/o comentarios son bienvenidos (y requeridos)!

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>

Debido a unos adaptadores que tuve que realizar para facilitar la tarea de gestionar tareas repetitivas sobre Oracle Identity Manager (AKA OIM), me hice la tarea de abrir Jdeveloper (version 11.1.1.3) que tenía instalada, cuando mi sorpresa es que ya no se veía nada excepto una fea pantalla gris.
Las características de mi entorno gráfico son:
Display: 1600*900
Driver: ATI propietario
Xserver ver. 7.5
Distribucion: Debian GNU/Linux Sid-Experimental

Temiendo que todo se debía al nuevo driver de ATI (y puesto que no lo iba a desisntalar) hice el upgrade a la última versión del JDeveloper. Los resultados fueron similares.

Buscando en foros, recomendaban exportar la siguiente variable:
AWT_TOOLKIT=MToolkit
La cual tampoco tuvo resultados exitosos.

El problema radica en la resolución de mi monitor, que por alguna razón no es soportada por el JDeveloper, por ello, la solución se reduce en instalar xserver-xephyr de forma que podamos generar un Xserver con una menor resolución sobre la cual se ejecute JDeveloper. Para ello después de instalar Xephyr, debes agregar las siguientes lineas en el archivo <JDEVELOPER_HOME>/jdev/bin/jdev, justo antes de la ultima línea:

Xephyr :2 -ac -screen 1280x768 &
metacity --display :2 &
export DISPLAY=:2

Recomiendo iniciar con metacity, puesto que icewm no gestiona adecuadamente los bordes del jdeveloper.

Happy Hacking!

————-
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>