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.