jueves, 24 de mayo de 2012

RAC: Clonar un Oracle Home version 11.2.0.3 en Linux 5

Hace como año y medio escribi una entrada de como clonar un ORACLE_HOME en Solaris, y ahora que ando con RAC, me tope que clonar el OH para esta tecnologia cambia un poco.

Como siempre, lo primero que te voy a decir es que cumplas con todos los prerequisitos antes de cualquier instalacion

Prerequisitos para instalar Oracle RDBMS 11gR2 Linux

Lo primero que tienes que hacer es un archivo TAR de tu OH

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /home/oracle
oracle $ cd /mount/oracle/product/11.2.0.3v1 

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /mount/oracle/product/11.2.0.3v1
oracle $tar -cvf /mount/copy01/11.2.0.3v1_GOLD.tar .

Una vez que tienes tu archivo TAR, copialo al servidor en donde vayas a hacer tu clonacion, en mi caso nada mas voy a hacerlo en el mismo servidor, pero crear un segundo OH.

Esto lo tienes que hacer para cada nodo en donde vayas a clonar tu OH, o sea que si tienes 10 nodos, en cada uno de los 10 nodos lo tienes que hacer :)

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /home/oracle
oracle $ cd /mount/oracle/product/11.2.0.3_CLONED

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /mount/oracle/product/11.2.0.3_CLONED
oracle $ tar -xvf /mount/copy01/11.2.0.3v1_GOLD.tar

Ya que descomprimiste tu OH en cada uno de los nodos, asegurate de cambiar los permisos al usuario y al grupo que pertenece la instalacion, en mi caso es oracle:oinstall

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /mount/oracle/product/11.2.0.3_CLONED
oracle $ cd /mount/oracle/product

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /mount/oracle/product
oracle $ chown -R oracle:oinstall 11.2.0.3_CLONED

No se te olvide, si es necesario, borrar los *.ora de $ORACLE_HOME/network/admin y los init/spfiles y orapw de $ORACLE_HOME/dbs

Ahora lo que tenemos que hacer es construir un pequeño archivo llamado clonar_oh.sh y correrlo, va contener lo siguiente

ORACLE_BASE=/mount/oracle
ORACLE_HOME=/mount/oracle/product/11.2.0.3_CLONED
THISNODE=`hostname -s`

cd $ORACLE_HOME/clone/bin

E01=ORACLE_HOME=/mount/oracle/product/11.2.0.3_CLONED
E02=ORACLE_HOME_NAME=ORA11g203_RDBMS_v1
E03=ORACLE_BASE=/mount/oracle
E04=OSDBA_GROUP=dba
E05=OSOPER_GROUP=oper
C01="CLUSTER_NODES={servidor1.oracleenespanol.blogspot.com,servidor2.oracleenespanol.blogspot.com}"
C02="LOCAL_NODE=$THISNODE"


echo $E01
echo $E02
echo $E03
echo $E04
echo $E05
echo $C01
echo $C02

perl $ORACLE_HOME/clone/bin/clone.pl $E01 $E02 $E03 $E04 $E05 $C01 $C02

Cuando finaliza el script clonar_oh.sh, no se te olvide correr en cada nodo el script $ORACLE_HOME/root.sh  que genera la clonacion., esto tiene que ser como el usuario root

De igual manera  tenemos que actualizar los nodos del OH en dado caso de que haya cambiado la locacion de tu OH

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /home/oracle
oracle $ cd $ORACLE_HOME/oui/bin

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /mount/oracle/product/11.2.0.3_CLONED/oui/bin
oracle $./runInstaller -updateNodeList CLUSTER_NODES=servidor1.oracleenespanol.blogspot.com,servidor2.oracleenespanol.blogspot.com ORACLE_HOME=/mount/oracle/product/11.2.0.3_CLONED

Ya para terminar, lo unico que tenemos que hacer, es cambiar los permisos y dueño para el binario "oracle" del RDBMS

oracle@servidor1.oracleenespanol.blogspot.com [TESTDB1] /home/oracle
oracle $ su -grid

grid@servidor1.oracleenespanol.blogspot.com [TESTDB1] /home/grid
grid $ $GRID_ORACLE_HOME/bin/setasmgidwrap o=/mount/oracle/product/11.2.0.3_CLONED/bin/oracle

Espero que esto te sirva para cuando quieras clonar tu ORACLE_HOME de tu RDBMS en RAC.