Instalación y Configuración de Oracle RAC sin usar modo grafico, Manoss a la Obraaa!!!

 

ORACLE RAC 11GR2 (2 Nodes) Completamente en modo Silencioso, sin usar interfaz grafica.

San Salvador, 25 de Marzo de 2023

#OracleACE

#OracleTipsSV

Hace algún tiempo, me enfrente a una situación de instalación de un producto Oracle llamado OAS, para los que lo conocieron fue el Servidor de Aplicaciones Caballo de Batalla de Oracle Corp, malo para mi modo de ver, Weblogic le gana por mucho.

Centrándose en la situación vivida, estaba instalando via VPN (2011), con un acceso a internet algo lento, y recuerdo que cuando lanzaba el modo gráfico de la instalación demoraba mucho tiempo en hacerme caso, y el proceso era lento en su totalidad, quede frustrado, después de horas y horas de búsqueda y nada.

Tiempo después, cuando me dio curiosidad el Examen de OCM, lei un tópico o requisito, saber Instalar todo producto Oracle involucrado en el examen en modo silencioso, sin uso de interfaz gráfica, y pensé que ser eso, y comencé a investigar y descubrí eso que tiempo tras me pudo haber permitido instalar el OAS sin complicación.

Oracle Corp, para todo producto, permite instalarlo de 2 formas, en modo interactivo en sus típicos instaladores bajo el estándar Oracle Universal Installer, que es un Tool creado en Java con toda una pila de subutilerias internas y scripts que se ejecutan cuando una persona lo esta utilizando, no es particularmente lento pero, al cargarlo de forma remota se complica la existencia.

El otro modo, el modo silencioso, particularmente complejo dado que la persona que lo use, debe saber rellenar las respuestas a las preguntas que el Wizard de Instalación o OUI realiza para poder completar una instalación. Todo producto Oracle viene con una plantilla que puede ser rellenada, en la mayoría de los mismos viene una sección de explicación para cada item a completar su valor.

Entrando en materia, vamos a ver los comandos necesarios para instalar un Oracle RAC de 2 nodos en version 11g( en realidad todas las versiones en esencia son iguales), usando el modo silencioso.

Vamos a asumir algunas consideraciones:

  • Tenemos el Hardware adecuado y correctamente configurado
  • Sistema operativo adecuado y correctamente configurado en los nodos involucrados
  • La mayoría o todos los elementos requisitos correctamente configurados, esto porque nunca es correcto dejando elementos con warning (para producción esto puede provocar fallas posteriores), o Error ( error ni siquiera se puede terminar la instalación)
  • Tenemos el Software correcto descargando y copiado al nodo inicial , también desempacado.

Hay que definir una variable para evitar errores durante la instalación:

export IGNORE_PREADDNODE_CHECKS=Y

Configuramos la equivalencia de usuarios entre los nodos:

./sshUserSetup.sh -user oracle  -hosts "racprod01 racprod02" -advanced -noPromptPassphrase
./sshUserSetup.sh -user grid  -hosts "racprod01 racprod02" -advanced -noPromptPassphrase

Validamos la correcta ejecución del túnel entre equipos con el usuario oracle y grid

con ssh racpro01 date; ssh racprod02 date

Si no solicita contraseña, la  configuración es correcta, de o contrario debemos hacerlo de nuevo corrigiendo fallas.

Iniciamos el instalador, moviéndonos al folder donde desempacamos el producto:

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -ignoreInternalDriverError -force use_prereq_checker=false        \

-responseFile $HOME/grid/response/grid_install.rsp        \

INVENTORY_LOCATION=/u01/app/oraInventory         \

SELECTED_LANGUAGES=en                                   \

oracle.install.option=CRS_CONFIG                        \

ORACLE_BASE=/u01/app/oracle/                             \

ORACLE_HOME=/u01/11.2.0/grid/                      \

oracle.install.asm.OSDBA=asmdba                            \

oracle.install.asm.OSOPER=asmoper                           \

oracle.install.asm.OSASM=asmadmin                            \

oracle.install.crs.config.gpnp.scanName=mvascan \

oracle.install.crs.config.gpnp.scanPort=1521            \

oracle.install.crs.config.clusterName=mvcluster            \

oracle.install.crs.config.gpnp.configureGNS=false       \

oracle.install.crs.config.clusterNodes=racprod01:racprod01-vip,racprod02:

racprod02-vip \

oracle.install.crs.config.networkInterfaceList=xnf1:172.16.10.0:1,xnf0:10

.10.10.0:2 \

oracle.install.crs.config.storageOption=ASM_STORAGE     \

oracle.install.crs.config.useIPMI=false                 \

oracle.install.asm.SYSASMPassword=oracle01              \

oracle.install.asm.diskGroup.diskDiscoveryString=/u01/oradata/* \

oracle.install.asm.diskGroup.name=CRS                  \

oracle.install.asm.diskGroup.disks=/u01/oradata/crs1,/u01/oradata/crs2,/u

01/oradata/crs3       \

oracle.install.asm.diskGroup.redundancy=EXTERNAL        \

oracle.install.asm.monitorPassword=oracle01

$GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME="/u01/app/11.2.0.2/grid" CRS=true


Al iniciar nos indica el log donde se ve el avance, el mismo log nos indica que hay que ejecutar los scripts de root ( 2 el del inventario y el del OracleHome),  también nos indicara cualquier error que haya que corregir, etc.

El mismo nos indicara cuando el proceso haya finalizado.

El OUI inicial solo crea y configura el diskgroup de ASM donde el OCR y los voting files son creados por lo cual cualquier diskgroup de ASM adicional debe configurarse posterior a dicho paso, aqui creamos un diskgroup de ASM:

asmca -silent -createDiskGroup \

-diskGroupName DATA \

-diskList '/u01/oradata/asm1,/u01/oradata/asm2' \

-redundancy external \

-au_size 4  \

-sysAsmPassword oracle01

Creamos otro diskgroup, uno para el FRA

asmca -silent -createDiskGroup \

-diskGroupName FRA \

-diskList '/u01/oradata/asm6,/u01/oradata/asm7' \

-redundancy external \

-au_size 4  \

-sysAsmPassword oracle01

Una vez el GI ha sido configurado de forma correcta, validamos su funcionamiento, apagando, encendiendo, reiniciando equipos, podemos parcharlo, etc , etc.

En este ejemplo usamos, separación de soles, por lo cual el Software de RDBMS se ejecuta con usuario oracle, solo instalaremos el RDBMS, no crearemos la BD, eso sera en un paso posterior:

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -ignoreInternalDriverError \

-force use_prereq_checker=false \

-responseFile /u01/stage/database/response/db_install.rsp      \

oracle.install.option=INSTALL_DB_SWONLY             \

CLUSTER_NODES=racprod01,racprod02                     \

UNIX_GROUP_NAME=oinstall                            \

INVENTORY_LOCATION=/u01/app/oraInventory     \

SELECTED_LANGUAGES=en                               \

ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1   \

ORACLE_BASE=/u01/app/oracle                         \

oracle.install.db.InstallEdition=SE                 \

oracle.install.db.isCustomInstall=false             \

oracle.install.db.DBA_GROUP=dba                     \

oracle.install.db.OPER_GROUP=dba                    \

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false          \

DECLINE_SECURITY_UPDATES=true


En caso de ser necesario, puede actualizarse el inventario con este comando:

./runInstaller -updateNodeList ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1" CRS=true

El proceso  de instalación completo la instalación y al finalizar debió ejecutarse el script de root del mismo Home, con esto podríamos crear la BD del mismo modo silencioso:

dbca -silent -createDatabase -templateName 'General_Purpose.dbc' -adminManaged \

-emConfiguration NONE -gdbName 'mvadb'  -sysPassword oracle01 -systemPassword oracle01 \

-asmSYSPassword oracle01  -storageType ASM -diskGroupName DATA \

-datafileJarLocation /u01/app/oracle/product/11.2.0/db_1/assistants/dbca/templates \

-nodelist 'racprod01,racprod02' -characterset WE8ISO8859P1 -obfuscatedPasswords false -sampleSchema false


Incluyo el output:

Copying database files

1% complete

3% complete

9% complete

15% complete

21% complete

27% complete

30% complete

Creating and starting Oracle instance

32% complete

36% complete

40% complete

44% complete

45% complete

48% complete

50% complete

Creating cluster database views

52% complete

70% complete

Completing Database Creation

73% complete

76% complete

85% complete

94% complete

100% complete

Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/mvadb/mvadb.log" for further details.

Validación del listener

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Solaris: Version 11.2.0.3.0 - Production

Start Date                12-APR-2014 23:53:51

Uptime                    0 days 2 hr. 50 min. 10 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/11.2.0/grid/network/admin/listener.ora

Listener Log File         /u01/11.2.0/grid/log/diag/tnslsnr/racprod01/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.102)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.105)(PORT=1521)))

Services Summary...

Service "+ASM" has 1 instance(s).

Instance "+ASM1", status READY, has 1 handler(s) for this service...

Service "mvadb" has 1 instance(s).

Instance "mvadb1", status READY, has 1 handler(s) for this service...

Service "mvadbXDB" has 1 instance(s).

Instance "mvadb1", status READY, has 1 handler(s) for this service...

The command completed successfully







------------------------

Alias                     LISTENER

Version                   TNSLSNR for Solaris: Version 11.2.0.3.0 - Production

Start Date                12-APR-2014 23:53:51

Uptime                    0 days 2 hr. 50 min. 26 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/11.2.0/grid/network/admin/listener.ora

Listener Log File         /u01/11.2.0/grid/log/diag/tnslsnr/racprod02/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.104)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.10.106)(PORT=1521)))

Services Summary...

Service "+ASM" has 1 instance(s).

Instance "+ASM2", status READY, has 1 handler(s) for this service...

Service "mvadb" has 1 instance(s).

Instance "mvadb2", status READY, has 1 handler(s) for this service...

Service "mvadbXDB" has 1 instance(s).

Instance "mvadb2", status READY, has 1 handler(s) for this service...

The command completed successfully


Validación completa del cluster:

-bash-3.2$ crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.CRS.dg     ora....up.type ONLINE    ONLINE    racprod01

ora.DATA.dg    ora....up.type ONLINE    ONLINE    racprod01

ora.FRA.dg     ora....up.type ONLINE    ONLINE    racprod01

ora....ER.lsnr ora....er.type ONLINE    ONLINE    racprod01

ora....N1.lsnr ora....er.type ONLINE    ONLINE    racprod02

ora....N2.lsnr ora....er.type ONLINE    ONLINE    racprod01

ora....N3.lsnr ora....er.type ONLINE    ONLINE    racprod01

ora.asm        ora.asm.type   ONLINE    ONLINE    racprod01

ora.cvu        ora.cvu.type   ONLINE    ONLINE    racprod01

ora.gsd        ora.gsd.type   OFFLINE   OFFLINE

ora.mvadb.db   ora....se.type ONLINE    ONLINE    racprod01

ora....network ora....rk.type ONLINE    ONLINE    racprod01

ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    racprod01

ora.ons        ora.ons.type   ONLINE    ONLINE    racprod01

ora....SM1.asm application    ONLINE    ONLINE    racprod01

ora....01.lsnr application    ONLINE    ONLINE    racprod01

ora....d01.gsd application    OFFLINE   OFFLINE

ora....d01.ons application    ONLINE    ONLINE    racprod01

ora....d01.vip ora....t1.type ONLINE    ONLINE    racprod01

ora....SM2.asm application    ONLINE    ONLINE    racprod02

ora....02.lsnr application    ONLINE    ONLINE    racprod02

ora....d02.gsd application    OFFLINE   OFFLINE

ora....d02.ons application    ONLINE    ONLINE    racprod02

ora....d02.vip ora....t1.type ONLINE    ONLINE    racprod02

ora....ry.acfs ora....fs.type ONLINE    ONLINE    racprod01

ora.scan1.vip  ora....ip.type ONLINE    ONLINE    racprod02

ora.scan2.vip  ora....ip.type ONLINE    ONLINE    racprod01

ora.scan3.vip  ora....ip.type ONLINE    ONLINE    racprod01







--------------------------------------------------------------------------------

NAME           TARGET  STATE        SERVER                   STATE_DETAILS

--------------------------------------------------------------------------------

Local Resources

--------------------------------------------------------------------------------

ora.CRS.dg

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.DATA.dg

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.FRA.dg

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.LISTENER.lsnr

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.asm

ONLINE  ONLINE       racprod01                Started

ONLINE  ONLINE       racprod02                Started

ora.gsd

OFFLINE OFFLINE      racprod01

OFFLINE OFFLINE      racprod02

ora.net1.network

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.ons

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

ora.registry.acfs

ONLINE  ONLINE       racprod01

ONLINE  ONLINE       racprod02

--------------------------------------------------------------------------------

Cluster Resources

--------------------------------------------------------------------------------

ora.LISTENER_SCAN1.lsnr

1        ONLINE  ONLINE       racprod02

ora.LISTENER_SCAN2.lsnr

1        ONLINE  ONLINE       racprod01

ora.LISTENER_SCAN3.lsnr

1        ONLINE  ONLINE       racprod01

ora.cvu

1        ONLINE  ONLINE       racprod01

ora.mvadb.db

1        ONLINE  ONLINE       racprod01                Open

2        ONLINE  ONLINE       racprod02                Open

ora.oc4j

1        ONLINE  ONLINE       racprod01

ora.racprod01.vip

1        ONLINE  ONLINE       racprod01

ora.racprod02.vip

1        ONLINE  ONLINE       racprod02

ora.scan1.vip

1        ONLINE  ONLINE       racprod02

ora.scan2.vip

1        ONLINE  ONLINE       racprod01

ora.scan3.vip

1        ONLINE  ONLINE       racprod01


Podemos agregar servicios:

srvctl add service -d mvadb -s mvaha -r mvadb1,mvadb2 -P basic -e select -m basic -z 10 -w 2

Agregar mas nodos:

Primero el GI

cd $ORACLE_HOME/oui/bin

export IGNORE_PREADDNODE_CHECKS=Y

./addNode.sh -silent "CLUSTER_NEW_NODES={tcigesdb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={tcigesdb2-vip}"


Si fuera necesario alguna manipulación del inventario en el mismo modo:

$./runInstaller -silent -detachHome -invPtrLoc </etc>/oraInst.loc ORACLE_HOME="/u01/app/11.2.0/grid"
./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/11.2.0/grid" ORACLE_HOME_NAME="Ora11g_gridinfrahome1" LOCAL_NODE="tcigesdb1" CLUSTER_NODES="tcigesdb1" CRS=true

Agregamos el RBDMS al nuevo nodo:

##oracle

cd $ORACLE_HOME/oui/bin

./addNode.sh -silent "CLUSTER_NEW_NODES={sa-midbn2}”

Espero les sea de Utilidad.