martes, octubre 26, 2010

Mapa Mental 1: Oracle 10g RAC en Linux

En la instalación de un RAC sobre Linux es preciso tener en cuenta las características de la plataforma a los siguientes niveles:

1.- Red. ¿Existen tarjetas de red para conexiones privadas y públicas en todos los nodos? Es preciso configurarlas correctamente para que el cluster pueda manejar las tres direcciones (pública, privada y virtual). ¿Hay redundancia en las tarjetas? ¿está configurado correctamente el bonding?

2.- Almacenamiento. ¿ASM o OCFS2? O uno, u otro. Nunca los dos o una combinación de ambos en el mismo sistema, ya que puede llevar a conflictos. ¿Hay multipath? El almacenamiento con controladoras redundantes debe configurarse correctamente para evitar desastres.

3.- Sistema. ¿Todos los parches están instalados? ¿los parámetros de kernel y límites de sesión están definidos de forma persistente? ¿los privilegios sobre los dispositivos de almacenamiento tienen privilegios sobre root y oracle como corresponde?

Mapa mental 1: estrella
Quizás en estos casos pueda ayudar el siguiente mapa mental, a modo de guía paso a paso, adaptándolo a la plataforma y las características del entorno a instalar.

Mapa mental 2: vertical


Los procesos del mapa al detalle

·  Verificar red public y privada
o Ejecutar /sbin/ifconfig
El resultado debe ser dos tarjetas de red visibles, una con la dirección publica y otra con la privada (mas el tcploopback)
§ Configuración Bonding
Cuando hay redundancia de tarjetas es importante conocer la configuración de bonding para hacer referencia a las tarjetas virtuales y no a las físicas.
§ Configuración interconnect
El interconnect debe estar configurado correctamente para las pruebas de caída de servidores. Los switches deben contemplar las posibles caídas y sus enrutamientos.
o Registrar entradas /etc/hosts
Hay que añadir las direcciones IP para publica, privada y virtual.

La ip virtual no será visible hasta que los servicios de cluster se inicien con el vipca al final de la instalación del clusterware.
o Ping entradas /etc/hosts
Ping a los alias públicos y privados, con y sin nombre de dominio
·  Configurar storage
o Crear particiones con /sbin/fdisk
Crear particiones para OCR, voting y rawdevices para ASM.

Minimo:
120 Mb para OCR x 2
20 Mb para voting x 3

Si no se crean particiones, los discos deben estar preparados, así como sus dispositivos.
o Editar /etc/sysconfig/rawdevices
o Asignar privilegios a los rawdevices
Los dispositivos deben pertenecer al usuario Oracle y tener 660 (ocr) y 664 (voting)

Una vez creado el clusterware, los ocr pasaran a ser de root, y será necesario hacer persistentes los permisos al arranque en el fichero /etc/rc.d/rc.local
o Habilitar rawdevices nodo 1
o Propagar configuración nodo 2-3-x
El fichero /etc/sysconfig/rawdevices ha de propagarse al resto de nodos.

Una vez copiado el fichero, hay que actualizar la tabla de partición y habilitar los rawdevices en ese nodo.

services rawdevices start
o Los rawdevices están habilitados en todos los nodos
·  Crear grupos y usuarios
o Crear grupos dba y oinstall
o Crear usuario oracle
o chmod y chown a usuario
o Definir .bash_profile
o Configurar secure shell
Generar claves rsa y dsa para concatenar en todos los ficheros authorized_keys de los diferentes nodos.
o Comprobar ssh transparente entre nodos
·  Configuración OS
o Configuración Secure Shell
El usuario Oracle debe poder hacer ssh entre nodos sin necesidad de contraseña.
§ Crear claves rsa y dsa
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa

Los ficheros de $HOME/.ssh id_dsa.pub y id_rsa.pub de todos los nodos han de unirse en uno nuevo llamado authorized_keys, que se copiará a los directorios .ssh del usuario oracle para cada nodo.
§ Añadir hosts a known_hosts
En cada ssh el sistema preguntará para añadir ese nodo a la lista de know_hosts. Solo se preguntará esta vez y las siguientes conexiones serán transparentes.
§ Test ssh nodos /etc/hosts
o Configuración hangcheck-timer
Según notas 811306.1 y 726833.1
Es necesario añadir la línea

/sbin/modprobe hangcheck-timer hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1

Y hacer este cambio permanente al reinicio del servidor en /etc/rc.d/rc.local
o Configurar hugepages
Según nota 361468.1
Es necesario añadir la siguiente línea a /etc/security/limits.conf

* hard memlock 5243000
* soft memlock 5243000
o Configurar kernel
o Configurar limites shell
Los limites de shell han de hacerse permanentes en el inicio de sesión. Para ello, hay que añadir la siguiente línea a /etc/pam.d/login

session required /lib/security/pam_limits.so

o rda hcve para cada nodo
o Cluvfy
§ Chequeo hardware y OS
./runcluvfy.sh stage -post hwos -n nodo1,nodo2,nodoN - verbose
§ Chequeo conectividaf
./runcluvfy.sh comp nodecon -n nodo1,nodo2,nodoN - verbose
§ Chequeo usuario
./runcluvfy.sh comp admprv -n nodo1,nodo2,nodoN - verbose -o user_equiv
§ PreCheck configuración servicios de cluster
./runcluvfy.sh stage -pre crsinst -n nodo1,nodo2,nodoN -r 10gR2
·  Ejecutar runInstaller clusterware software
Definir variables de entorno para ORA_CRS_HOME
o Seguir nota 414163.1 en RHL5 para errores conocidos
Existen tres errores conocidos en la instalación de RAC 10.2.0.1 en RHL5

- ejecutar el runinstaller con -ignoreSysPrereqs
- editar vipca y svrctl para añadir la línea "unset LD_ASSUME_KERNEL"
- La ejecución de root.sh fallará en el ultimo nodo y habrá que ejecutar el vipca manualmente tras configurar las tarjetas de red con

/bin # ./oifcfg setif -global eth0/192.168.1.0:public
/bin # ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
/bin # ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect
o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados.
o Instalar patchset 10.2.0.5 clusterware
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB's que deban pararse y parchearse.
·  Ejecutar runInstaller ASM software
Definir variables de entorno para ORA_ASM_HOME
o Instalar asmlib
Instalar librerias asmlib
o Configurar multipath para ASM
Seguir nota 564580.1 si hay redundancia de controladores de disco por multipath
o Creación de diskgroups
Crear dos diskgroups: uno para DATA y el otro para FRA

DG_DATA_1
DG_FRA_1
o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados incluyendo los de ASM.
o Instalar patchset 10.2.0.5 ASM
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB's que deban pararse y parchearse.
·  Ejecutar runInstaller DB software
Definir variables de entorno para ORACLE_HOME
o Crear bbdd RAC usando asm
Seguir nota 564580.1 si hay redundancia de controladores de disco por multipath
o Chequeo servicios
Ejecutar crs_stat -t

Los servicios de cluster deben estar arrancados incluyendo los de ASM y los de base de datos.
o Instalar patchset 10.2.0.5 ASM
Instalar la versión mas reciente del patchset.
Mucho mejor antes de que haya ASM y DB's que deban pararse y parchearse.



5 comentarios:

Anónimo dijo...

Hola Javier, necesito instalar Oracle en mi computadora personal para practicar consultas por que recien estoy aprendiendo, que version free existe de oracle, y donde la puedo bar y que limitaciones tiene

Javier Morales dijo...

Si buscas "Oracle11g download" en google te dirige a la página oficial de Oracle (http://otn.oracle.com)

Ahí están todos los productos para descargar, con licencia de aprendizaje (permiso de uso).

Diego dijo...

Hola Javier

Tengo un problema con Distinct

ejecuto este query y se duplican los registros y si le quito el distinct sucede lo mismo, que estoy haciendo mal
select distinct a.codi_aduan||'-'||a.ano_prese||'-'||a.nume_corre Nro_DSEER,a.fech_ingsi Fec_Numeracion,a.nume_serie Serie,b.tipo_aforo Canal,
case when(a.Codi_agent <> ' ') then (a.Codi_agent||'-'||c.Dnombre) else ' ' end Agente,
b.libr_tribu RUC,b.fech_manif||'-'||trim(b.nume_manif) Manifiesto_EER, d.numconm Doc_Transp, d.numcon Guia_EER, a.cnt_bultos_decl Bultos_Declar,
a.cant_bulto Bultos_Recib, a.cnt_peso_decl Peso_declar, a.peso_bruto Peso_Recib, a.cod_produc Cod_prod, a.part_nandi SPN, trim(a.desc_comer) Mercancia,
a.fob_dolpol FOB, a.fle_dolar Flete, a.seg_dolar Seguro, a.cif_dolpol CIF row_number()
from seriesdc a, polizadc b, directo c, mcdeta d
where b.fech_ingsi between to_number('20101101') and to_number('20101103') and b.codi_aduan='235' and b.CODI_ADUAN=a.codi_aduan
and b.ano_prese=a.ano_prese and b.nume_corre=a.nume_corre and b.poli_anula <> 'A' and b.via_transp='5' and c.tagente ='A'
and c.cagente=b.codi_agent and c.cjurisdicc in ('235','992','983') and a.seri_elim <> 'S' and nvl(to_number(d.nume_mc),0)=b.nume_manif and
d.anno(+)=substr(b.fech_manif,3,2) and d.via_trans(+)=to_char(b.via_transp) and d.codi_aduan(+)=b.cadu_manif and d.numcon=a.cono_embar
and b.codi_agent='0091' order by 1,2,3

Javier Morales dijo...

@Diego: El CASE te está tratando registros distintos a visualizar el mismo resultado.

shirley dijo...

Muy interesante.. sabes instale mi oracle rac 10g.. y ya esta en produccion, ahora me indican q se tiene que cambiar de dominio en el /etc/resolv.conf name.com.pe cambiarlo x otro nombre distinto name2.com ... yo anteriormente he cambiado ips del oracle rac sin problemas pero dominio no lo he hecho y quisiera saber si esto afectaria mi oracle rac.. lo has hecho?? puedes ayudarme?