Diferencia entre revisiones de «Oracle»

De Ardemans Wiki
Saltar a: navegación, buscar
Línea 10: Línea 10:
  
 
* También me manda Marcos, un compañero, el siguiente enlace a otro blog que explica como instalar un cluster ware y además tambien pone algunas notas de referencia [http://oracleracnotes.wordpress.com http://oracleracnotes.wordpress.com]
 
* También me manda Marcos, un compañero, el siguiente enlace a otro blog que explica como instalar un cluster ware y además tambien pone algunas notas de referencia [http://oracleracnotes.wordpress.com http://oracleracnotes.wordpress.com]
 +
 +
* Otra más que he encontrado casi al final de la instalacion: [http://www.oracle.com/technology/pub/articles/smiley_rac10g_install.html http://www.oracle.com/technology/pub/articles/smiley_rac10g_install.html]
  
  
Línea 176: Línea 178:
  
 
y además he añadido esta línea en los dos nodos en el fichero /etc/rc.d/rc.local para que lo ejecute en el arranque de la máquina.
 
y además he añadido esta línea en los dos nodos en el fichero /etc/rc.d/rc.local para que lo ejecute en el arranque de la máquina.
 +
 +
==Instalación de la librería ASM==
 +
 +
He ido a la siguiente página de oracle:
 +
 +
[http://otn.oracle.com/tech/linux/asmlib/ http://otn.oracle.com/tech/linux/asmlib/]
 +
 +
y he buscado el driver correspondiente para mi distribucion de linux, rhel4, en la lista, fijandome en el kernel que tengo. Me he bajado los siguientes paquetes:
 +
 +
oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686.rpm
 +
oracleasmlib-2.0.2-1.i386.rpm
 +
oracleasm-support-2.1.1-1.el4.i386.rpm
 +
 +
y los he instalado con el siguiente comando tal y como pone en la documentación de oracle:
 +
 +
rpm -Uvh oracleasm-support-2.1.1-1.el4.i386.rpm oracleasmlib-2.0.2-1.i386.rpm oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686.rpm
 +
 +
Ahora, tenemos que configurar el oracleasm con el siguiente comando
 +
 +
/etc/init.d/oracleasm configure
 +
 +
que nos hará las siguientes preguntas y he respondido tal y como aparece abajo:
 +
 +
[root@orapru02 asm]# /etc/init.d/oracleasm configure
 +
Configuring the Oracle ASM library driver.
 +
 +
This will configure the on-boot properties of the Oracle ASM library
 +
driver.  The following questions will determine whether the driver is
 +
loaded on boot and what permissions it will have.  The current values
 +
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
 +
answer will keep that current value.  Ctrl-C will abort.
 +
 +
Default user to own the driver interface []: oracle
 +
Default group to own the driver interface []: dba
 +
Start Oracle ASM library driver on boot (y/n) [n]: y
 +
Scan for Oracle ASM disks on boot (y/n) [y]: y
 +
Writing Oracle ASM library driver configuration: done
 +
Initializing the Oracle ASMLib driver:                    [  OK  ]
 +
Scanning the system for Oracle ASMLib disks:              [  OK  ]
 +
 +
Todo esto en ambas máquinas.
 +
 +
Después, en una de las máquinas tenemos que crear un disco asm, en mi caso de la siguiente forma:
 +
 +
/etc/init.d/oracleasm createdisk DISK1 /dev/sdb1
 +
 +
donde /dev/sdb1 es una partición que he creado en el disco compartido de iscsi.
 +
 +
y para que lo vea el otro nodo ejecutamos en él el siguiente comando:
 +
 +
/etc/init.d/oracleasm scandisks
 +
 +
y podemos ver que ha visto el disco ejecutando lo siguiente:
 +
 +
[root@orapru02 asm]# /etc/init.d/oracleasm listdisks
 +
DISK1

Revisión de 09:46 3 dic 2008

Me dispongo a instalar un rac de oracle en máquians virtuales

Tengo las siguientes direcciones interesantes donde consultar para hacer dicha instalación:

  • Para instalar un oracle sobre una Ubuntu:

http://ubuntulife.wordpress.com/2007/02/11/instalar-oracle-10g-release-2-en-ubuntu-edgy/

  • Y web donde explican detalladamente como configurar las máquinas virtuales para un clusterware:

http://www.dbasupport.com/oracle/ora10g/RACingAhead0901.shtml

  • También me manda Marcos, un compañero, el siguiente enlace a otro blog que explica como instalar un cluster ware y además tambien pone algunas notas de referencia http://oracleracnotes.wordpress.com


Preparando las máquinas virtuales

Tengo dos máquinas virtuales ya creadas en nuestro entorno de vmware esx, a las que he instalado dos redhat enterprise linux 4, con lo mínimo. Cada una de las dos máquinas tiene dos interfaces de red instalados:

  • orapru01 - 10.90.1.45 - 10.90.63.45
  • orapru02 - 10.90.1.46 - 10.90.63.45

Lo primero que he abordado es la configuración de una unidad iscsi común para las dos máquinas. Para ello he instalado el paquete iscsi-initiator-utils-4.0.3.0-7.

He de señalar que para hacer la instalacion de paquetes adicionales los estoy cogiendo de un repositorio de centos 4, exactamente este: http://sunsite.rediris.es/mirror/CentOS/4/os/i386/CentOS/RPMS/

Creacion de usuarios y grupos necesarios

Creamos varios grupos en cada uno de los nodos

# groupadd dba
# groupadd oper
# groupadd oinstall

y creamos el usuario oracle

# useradd -g oinstall -G dba,oper -d /home/oracle -s /bin/bash -c "Usuario Oracle" oracle

y le ponemos un password, que en mi caso para este oracle de pruebas será "oracle"

# passwd oracle

Tenemos que asegurarnos de que en todos los nodos tanto los grupos como el usurio oracle tienen el mismo ID.

Configuración de ssh

Después pasamos a configurar el SSH, ya que con este usuario el proceso de instalación lanzará algunos comandos con ssh a los otros nodos y tambien usará el scp. Para ello nos logamos con el usuario oracle y creamos el directorio ~/.ssh, dandole permisos para que solo pueda acceder el usuario oracle

# su - oracle
# mkdir ~/.ssh
# chmod 700 ~/.ssh

Después creamos una identificación para que cuando tenga que conectarse a los otros nodos no necesite password

# /usr/bin/ssh-keygen -t rsa

le diremos el directorio por defecto donde irá la llave y le pnodremos una contraseña difernte a la clave del usuario oracle, en mi caso he puesto "oraclepassphrase". Esto lo hago en los dos nodos.

# /usr/bin/ssh-keygen -t dsa

le pondremos una contraseña diferente a la del usuario Oracle y tambien lo haremos en los dos nodos

Despues tendremos que añadir estas claves que hemos creado en el fichero "authorized_keys" que debe estar en el directorio .ssh (si no está lo creamos). Lo podemos hacer de la siguiente forma tal y como aconseja el manual de pre-instalación de rac de oracle:

# ssh orapru01 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
# ssh orapru01 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
# ssh orapru02 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
# ssh orapru02 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys

Esto mismo lo he hecho en los dos nodos, y despues al fichero authorized_keys le hemos dado permisos

# chmod 600 /home/oracle/.ssh/authorized_keys

Una vez hecho esto, cada vez que queramos hacer ssh desde el usuario oracle al otro de los nodos sin que nos pida el passphrase habrá que ejecutar lo siguiente:

# ssh-agent $SHELL
# ssh-add 

y nos pedirá el passphrase, pero solo durante esta vez y hasta que nos salgamos de esta sesión.


Instalación del paquete CVUQDISK

Ahora tenemos que instalar el paquete cvuqdisk-1.0.1-1.rpm que viene con la propia instalación de clusterware y que podemos encontrar en el directorio rpm, en mi caso yo lo tengo todo en /opt/src/oracle/clusterware/ y ahí dentro está el directorio rpm. Para ellos antes de hacer la instalacion tendremos que exportar la variable CVUQDISK_GRP

# export CVUQDISK_GRP=oinstall

y despues ejecutar la instalación del rpm

# rpm -iv cvuqdisk-1.0.1-1.rpm

Esto sirve para que el cvu sepa encontrar discos compartidos

Configuración de red

Al parecer cada nodo ha de tener dos interfaces de red, uno para la red privada y otro para la red pública, además, estos interfaces han de corresponder en los dos nodos, esto es, que si en orapru01 el interface eth0 es la red pública así debe ser tambien en orapru02

También habrá que crear una ip virtual para cada nodo.

En mi caso, tengo los dos interfaces de red creados en los dos nodos y se corresponden:

  • orapru01
   orapru01.prisacom.int 10.90.1.45
   orapru01priv.prisacom.int 10.90.63.45
   orapru01vip.prisacom.int 10.90.1.145
  • orapru02
   orapru02.prisacom.int 10.90.1.46
   orapru02priv.prisacom.int 10.90.63.46
   orapru02vip.prisacom.int 10.90.1.146

Preparando parametros del kernel

Echando un vistazo a los parametros de kernel necesarios para oracle hago las siguientes modificaciones:

Añado al sysctl.conf

kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.core.rmem_default = 1048576
net.core.wmem_default = 262144

y ejecuto el siguiente comando para aplicar los cambios

# sysctl -p

Tambien editamos el fichero /etc/security/limits.conf para añadir lo siguiente

oracle              soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536

y el fichero /etc/pam.d/login para añadir la siguiente linea

session    required     pam_limits.so

y en el /etc/profile añadimos lo siguiente:

if [ $USER = "oracle" ]; then
       if [ $SHELL = "/bin/ksh" ]; then
             ulimit -p 16384
             ulimit -n 65536
       else
             ulimit -u 16384 -n 65536
       fi
fi


Después de todo esto he pasado la comprobación y todo está correcto, salvo la red, que parece ser que hay un problema de comunicación en el interface eth1, con la red 10.90.63.x. Esto ya lo miro la proxima semana.

Software adicional

Hay que asegurarse de que los siguientes paquetes de red hat están instalados en las máquinas

binutils-2.15.92.0.2-10.EL4
compat-db-4.1.25-9
control-center-2.8.0-12
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
glibc-2.3.4-2
glibc-common-2.3.4-2
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-9.EL4
libstdc++-devel-3.4.3-9.EL4
make-3.80-5

y además el openmotif21-2.1.30-11.RHEL4.6

Los que he marcado con negrita no me vienen instalados por defecto en la distro que he puesto yo, rhel 4. Pero tampoco los he instalado. Control center tiene muchas dependencias de servidor de X y las librerías de gnome no se muy bien para que las quiere. Seguro que lo veré más adelante.

Modulo Hangcheck

He cargado el modulo hangcheck del kernel, para lo cual he ejecutado:

insmod /lib/modules/2.6.9-42.ELsmp/kernel/drivers/char/hangcheck-timer.ko hangcheck_tick=1 hangcheck_margin=10

y además he añadido esta línea en los dos nodos en el fichero /etc/rc.d/rc.local para que lo ejecute en el arranque de la máquina.

Instalación de la librería ASM

He ido a la siguiente página de oracle:

http://otn.oracle.com/tech/linux/asmlib/

y he buscado el driver correspondiente para mi distribucion de linux, rhel4, en la lista, fijandome en el kernel que tengo. Me he bajado los siguientes paquetes:

oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686.rpm
oracleasmlib-2.0.2-1.i386.rpm
oracleasm-support-2.1.1-1.el4.i386.rpm

y los he instalado con el siguiente comando tal y como pone en la documentación de oracle:

rpm -Uvh oracleasm-support-2.1.1-1.el4.i386.rpm oracleasmlib-2.0.2-1.i386.rpm oracleasm-2.6.9-42.ELsmp-2.0.3-1.i686.rpm

Ahora, tenemos que configurar el oracleasm con el siguiente comando

/etc/init.d/oracleasm configure

que nos hará las siguientes preguntas y he respondido tal y como aparece abajo:

[root@orapru02 asm]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]

Todo esto en ambas máquinas.

Después, en una de las máquinas tenemos que crear un disco asm, en mi caso de la siguiente forma:

/etc/init.d/oracleasm createdisk DISK1 /dev/sdb1

donde /dev/sdb1 es una partición que he creado en el disco compartido de iscsi.

y para que lo vea el otro nodo ejecutamos en él el siguiente comando:

/etc/init.d/oracleasm scandisks

y podemos ver que ha visto el disco ejecutando lo siguiente:

[root@orapru02 asm]# /etc/init.d/oracleasm listdisks
DISK1