Instalación de Oracle Clusterware y Oracle RDBMS 19c en modo Silent

#OracleACEAssociate

#OracleTIPSSV

10 de Agosto de 2023

Raúl Antonio Molina Alvarenga

El objetivo de este articulo no es preparar todos los pasos previos para instalar un cluster, en realidad lo enfoque solo los comandos importantes en la instalación siguiendo el modo que mas me provoca al momento de instalar: MODO NO INTERACTIVO o MODO SILENT.

Procedamos con una hojeada al concepto de Modo Silencioso.

Todos conocemos el famoso instalador de los productos Oracle, el OUI u Oracle Universal Installer, un Software integrado construido en JAVA y con un complemento de scripts en otras lenguajes de programación que Oracle ocupa que permite instalar los productos Oracle en cualquier plataforma; este software permite realizar dicha tarea en forma interactiva.

Ese Instalador puede considerarse pesado o lento en algunas circunstancias, como por ejemplo usarlo via VPN , desde sitios remotos.

La alternativa a dichas situaciones o escenarios, el modo No Interactivo o Silencioso, este modo utiliza el mismo Instalador, solo que no de forma interactivo si no que requiere que se provean todas las respuestas que el programa requiere.

Las respuestas pueden ser puestas en lote en la linea de comandos (lo cual no recomiendo), o usando un archivo de respuesta, o responseFile ( recomendado).

El archivo de respuesta puede obtenerse de 2 formas, el propio instalador tiene algunas plantillas ya incluidas, por ejemplo propio OUI, DBCA, NETCA.

Otra forma es generarlo ejecutando el propio instalador y guardarlo como se muestra en la imagen:

Nuestro archivo de respuesta quedaría de la siguiente forma:

oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0

INVENTORY_LOCATION=/u01/app/oraInventory

oracle.install.option=CRS_CONFIG

ORACLE_BASE=/u01/app/grid

oracle.install.asm.OSDBA=oinstall

oracle.install.asm.OSOPER=

oracle.install.asm.OSASM=asmadmin

oracle.install.crs.config.scanType=LOCAL_SCAN

oracle.install.crs.config.gpnp.scanName=rac-scan

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

oracle.install.crs.config.ClusterConfiguration=STANDALONE

oracle.install.crs.config.configureAsExtendedCluster=false

oracle.install.crs.config.clusterName=rac-cluster

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

oracle.install.crs.config.autoConfigureClusterNodeVIP=false

oracle.install.crs.config.clusterNodes=nodo1:nodo1-vip,nodo2:nodo2-vip

oracle.install.crs.config.networkInterfaceList=eno16780032:192.168.51.0:1,eno33559296:10.20.0.0:5

oracle.install.crs.configureGIMR=false

oracle.install.asm.configureGIMRDataDG=false

oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE

oracle.install.asm.SYSASMPassword=Oracle123

oracle.install.asm.diskGroup.name=OCR

oracle.install.asm.diskGroup.redundancy=NORMAL

oracle.install.asm.diskGroup.AUSize=4

oracle.install.asm.diskGroup.disksWithFailureGroupNames=ORCL:ASM1,,ORCL:ASM2,,ORCL:ASM3,

oracle.install.asm.diskGroup.disks=ORCL:ASM1,ORCL:ASM2,ORCL:ASM3

oracle.install.asm.diskGroup.diskDiscoveryString=ORCL:*

oracle.install.asm.monitorPassword=Oracle123

oracle.install.asm.gimrDG.AUSize=1

oracle.install.asm.configureAFD=false

oracle.install.crs.configureRHPS=false

oracle.install.crs.config.ignoreDownNodes=false

oracle.install.config.managementOption=NONE

oracle.install.crs.rootconfig.executeRootScript=false

Una vez tenemos definido su contenido, podemos preparar la equivalencia de usuarios en una capa o dos , si vamos a tener Separación de usuarios ( Role Separation Duties).

./sshUserSetup.sh -user grid -hosts “nodo1 nodo2” -noPromptPassphrase

./sshUserSetup.sh -user oracle -hosts “nodo1 nodo2” -noPromptPassphrase

Para ejecutar el instalador:

./gridSetup.sh -silent -waitForCompletion -ignorePrereqFailure -ignoreInternalDriverError -responseFile /home/grid/gi.rsp

Luego hay que estar atentos a las salidas, archivos de logs, salida en pantalla , etc etc.

Después prosigue instalar la capa de rdbms ( Proceder solo si la capa de GI fue satisfactoria).

La muestra de nuestro archivo de respuesta:

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0

oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/u01/app/oraInventory

ORACLE_HOME=/u01/app/oracle/product/19.0.0/db_1

ORACLE_BASE=/u01/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.OSDBA_GROUP=oinstall

oracle.install.db.OSOPER_GROUP=oinstall

oracle.install.db.OSBACKUPDBA_GROUP=oinstall

oracle.install.db.OSDGDBA_GROUP=oinstall

oracle.install.db.OSKMDBA_GROUP=oinstall

oracle.install.db.OSRACDBA_GROUP=oinstall

oracle.install.db.rootconfig.executeRootScript=false

oracle.install.db.CLUSTER_NODES=nodo1,nodo2

Y como ultimo paso el lanzamiento del instalador:

./runInstaller  -silent -ignoreInternalDriverError -ignorePrereqFailure -responseFile /home/oracle/db_install.rsp 

Espero les sea de Utilidad.

Saludos!!

Mover Agente de Cloud (OH) de un folder a otro ( o Filesystem).

Raúl Antonio Molina Alvarenga

07 de Agosto de 2023

#OracleACEAssociate

Hola, un día me enfrente a la siguiente situación: Instale un agente de Cloud Control en la ruta equivocada.

Y se nos viene la idea, fácil, lo remueve y lo reinstalo.

Esto podrá ser fácil, pero si puede complicarse si la red es lenta, es un sitio remoto, etc etc.

Y si existe una forma mas fácil, porque no la ejecutamos?, bueno aquí veremos algo que para mi criterio resulta, más fácil.

Usaremos el DOCID:

Que nos provee el script:

ConvertToStandalone.pl

Hay que tener algunas consideraciones con la nota, hay que definir estas 2 variables de SO:

El Home no es el agent_inst es el $OH/core/Version12c
export OLD_AGENT_HOME=/oracle/agent12c/core/12.1.0.5.0
export ORACLE_HOME=/oracle/agent12c/core/12.1.0.5.0

Generamos el plugin list

$OLD_AGENT_HOME/perl/bin/perl /tfs/oracle/agent12c/core/12.1.0.5.0/sysman/install/create_plugin_list.pl -instancehome /tfs/oracle/agent12c/core/12.1.0.5.0

The agent Base Dir is /oracle/agent12c

 Creating file : /oracle/agent12c/rwFile

Removed the /oracle/agent12c/rwFile file.

oracle.sysman.xa|12.1.0.6.0||discoveryPlugin

oracle.sysman.db|12.1.0.8.0||discoveryPlugin

oracle.sysman.emas|12.1.0.8.0||discoveryPlugin

oracle.sysman.oh|12.1.0.5.0||discoveryPlugin

oracle.sysman.oh|12.1.0.5.0||agentPlugin
oracle.sysman.db|12.1.0.8.0||agentPlugin
/oracle/agent12c/plugins.txt
[oracle@nodo ~]$ 

Cambiar archivo agent12c/agentimage.properties  la ultima  linea

SBIN_MODIFIED_VERSION=12.1.0.5.0

$OLD_AGENT_HOME/perl/bin/perl  ConvertToStandalone.pl -instanceHome /oracle/agent12c/agent_inst -newAgentBaseDir /export/home/oracle/agent12c

OUTPUT

Migrating the agent home to different home

Validating the arguments

The log file is /oracle/agent12c/agent_inst/install/logs/convert/convertingtostandalone_2023-07-05_16-29-55.log

The agent image file Exists : /oracle/agent12c/agentimage.properties. Check for value of : VERSION

The current home is /oracle/agent12c/core/12.1.0.5.0Software only install of the agent bits

Home : /home/oracle/agent12c/core/12.1.0.5.0 already exist. Do you want to overwrite the home? Confirm (y/n)y

User confirmed for overwrite.

 The command is cp -r /oracle/agent12c/core /oracle/agent12c/plugins /oracle/agent12c/agentimage.properties /oracle/agent12c/plugins.txt /home/oracle/agent12c 

The command exitcode 0

The command is cp -r /oracle/agent12c/sbin /home/oracle/agent12c 

cp: cannot open ‘/oracle/agent12c/sbin/nmo’ for reading: Permission denied

cp: cannot open ‘/oracle/agent12c/sbin/nmhs’ for reading: Permission denied

cp: cannot open ‘/oracle/agent12c/sbin/nmb’ for reading: Permission denied

The command exitcode 256

Copying of /oracle/agent12c/sbinto /home/oracle/agent12c Failed

The command is /home/oracle/agent12c/core/12.1.0.5.0/oui/bin/runInstaller -clone -forceClone -silent -waitForCompletion -nowait ORACLE_HOME=/home/oracle/agent12c/core/12.1.0.5.0 -noconfig -force EM_PROTOCOL=https ORACLE_HOME_NAME=agent12c -invPtrLoc /oracle/agent12c/core/12.1.0.5.0/oraInst.loc AGENT_BASE_DIR=/home/oracle/agent12c 

The command exitcode 0

The command is /home/oracle/agent12c/core/12.1.0.5.0/oui/bin/runInstaller -attachHome -force -silent ORACLE_HOME=/home/oracle/agent12c/sbin ORACLE_HOME_NAME=sbin12c -waitForCompletion -invPtrLoc /oracle/agent12c/core/12.1.0.5.0/oraInst.loc 

The command exitcode 0

The command is /home/oracle/agent12c/core/12.1.0.5.0/oui/bin/runInstaller -updateHomeDeps -waitForCompletion HOME_DEPENDENCY_LIST={/home/oracle/agent12c/sbin:/home/oracle/agent12c/core/12.1.0.5.0} -invPtrLoc /oracle/agent12c/core/12.1.0.5.0/oraInst.loc  

The command exitcode 0

Converting the agent to standalone

The command is /oracle/agent12c/agent_inst/bin/emctl start blackout AGT_CNT_BLK_OUT -nodeLevel 

The command exitcode 0

The command is /oracle/agent12c/agent_inst/bin/emctl stop agent 

The command exitcode 0

The command is cp -r /oracle/agent12c/agent_inst/* /home/oracle/agent12c/agent_inst 

The command exitcode 0

The command is /home/oracle/agent12c/core/12.1.0.5.0/jdk/bin/java -jar /home/oracle/agent12c/core/12.1.0.5.0/jlib/updateStateDirectory.jar -migrateBase -emStateDir /home/oracle/agent12c/agent_inst -oldAgentHome /oracle/agent12c/core/12.1.0.5.0 -newAgentHome /home/oracle/agent12c/core/12.1.0.5.0 -oldAgentBase /oracle/agent12c -newAgentBase /home/oracle/agent12c 

The command exitcode 0

The command is /home/oracle/agent12c/agent_inst/bin/emctl setproperty agent -name agentStateDir -value /home/oracle/agent12c/agent_inst 

The command exitcode 0

The command is /home/oracle/agent12c/core/12.1.0.5.0/perl/bin/perl /home/oracle/agent12c/core/12.1.0.5.0/bin/AgentPluginDeploy.pl -oracleHome /home/oracle/agent12c/core/12.1.0.5.0 -agentDir /home/oracle/agent12c -pluginIdsInfoFile /home/oracle/agent12c/plugins.txt -action upgrade -emStateDir /home/oracle/agent12c/agent_inst -ignoreUnzip -dont_restart   

The command exitcode 0

The command is /home/oracle/agent12c/agent_inst/bin/emctl update_inventory plugin 

The command exitcode 0

The command is /home/oracle/agent12c/core/12.1.0.5.0/jdk/bin/java -jar /home/oracle/agent12c/core/12.1.0.5.0/jlib/upgradeCollections.jar -emStateDir /home/oracle/agent12c/agent_inst -newPluginXml /home/oracle/agent12c/core/12.1.0.5.0/sysman/admin/agentLib.xml -oldPluginXml /oracle/agent12c/core/12.1.0.5.0/sysman/admin/agentLib.xml 

log4j:ERROR No appenders could be found for category (oracle.sysman.gcagent.util.logging.ODLLogging).

log4j:ERROR Please initialize the log4j system properly.

The command exitcode 0

The command is /home/oracle/agent12c/agent_inst/bin/emctl start agent 

The command exitcode 0

The command is /home/oracle/agent12c/agent_inst/bin/emctl stop blackout AGT_CNT_BLK_OUT  

The command exitcode 0

The command is mv /oracle/agent12c/agent_inst/bin/emctl /oracle/agent12c/agent_inst/bin/emctl_converted 

The command exitcode 0

Move of File :  /oracle/agent12c/agent_inst/bin/emctl to File : /oracle/agent12c/agent_inst/bin/emctl_converted is successfully done

Modifying the oragchomelist to include the current agent home with the instancehome

The migration is completed Successfully. Run /home/oracle/agent12c/core/12.1.0.5.0/root.sh as root user manually.

Deinstall agent home /oracle/agent12c/core/12.1.0.5.0 manually.

[oracle@nodo ~]$ exit

logout

Ejecutamos el script de root de nuevo:

[root@nodo ~]# /home/oracle/agent12c/core/12.1.0.5.0/root.sh

Con esto el agente de movio de folder a un nuevo directorio.

Espero les sea de Utilidad

Saludos

Adenda de despliegue, cuando se debe forzar el HOSTNAME

EM 12c: Agent installation reports failure for Hostname pre-requisite check – “The host name specified for the installation or retrieved from the system is incorrect” (Doc ID 1488737.1)
/agentDeploy.sh AGENT_BASE_DIR=<Agent Base Directory Path> OMS_HOST=<OMS Host Name> EM_UPLOAD_PORT=<OMS Upload Port> ORACLE_HOSTNAME=mypc.oracle.com

Agregar o desplegar agente de Cloud Control desde el servidor destino.

#OracleACEAssociate

#OracleTipsSV

Raul Antonio Molina Alvarenga

1 de Agosto de 2023.

 

En una situación normal, el despliegue de un agente de Cloud Control 12c o 13c, se realiza desde la propia consola, desde donde comúnmente se realiza dicha tarea , inclusive para despliegues masivos.

Varias situaciones puede complicar dicho proceso,

  • No tener el password del usuario destino dueño del software a monitorear, o dueño del software del agente
  • No tener habilitado la regla de comunicación al puerto ssh del servidor destino
  • y algunas mas que se les ocurra

El procedimiento es como se observa en la figura, y se describe como método PUSH.

Installing Oracle Management Agent - 12c Release 2 (12.1.0.2)

Si esto no es posible, eso existe otra alternativa para desplegar el agente e incorporarlo a la infraestructura de Cloud Control 12c: Generación de Imagen e Instalación desde el destino.

Generación

Como generar la imagen de agente para instalación  en silent mode desde el propio destino.

Conectarse al emcli con credenciales , y sincronizar , hay que proporcionar el password de sysman.

emcli login -username=sysman

emcli sync

Consultar si se cuenta con la imagen de software de la respectiva plataforma cargada a la biblioteca de software del Cloud Control (SWLIB).

emcli get_supported_platforms

Mostrara algo como:

Si la version de imagen no existe, debemos descargarla de MyOracleSupport con el procedimiento estándar para dicha actividad ( Podemos hacer un video para documentar dicho proceso).

Identificando la version de la y la plataforma  procedemos a generar el ZIP de instalación desatendida.

emcli get_agentimage -destination=/tmp/agentinstaller -platform="Linux x86-64" -version="12.1.0.4.0" 

Trasladar la imagen en zip y desempacar en el target

Instalación de agentes usando metodo

En el cloud agregar en el /etc/hosts  el host e ip del target de BD(HOST) ( pude lograrse mediante DNS).

En el target debemos agregar el HOST del cloud nuevo asi:

#Nuevo OEM

OMSIP OEMHOSTNAME

Debemos generar el archivo de respuesta asi:

respuesta.rsp

OMS_HOST=OMSIP

EM_UPLOAD_PORT=4899

AGENT_REGISTRATION_PASSWORD=PASS

AGENT_PORT=3872

Ejecutamos luego el script agentDeploy.sh, así:

/export/home/oracle/agente/agentDeploy.sh AGENT_BASE_DIR=/export/home/oracle/agent12c RESPONSE_FILE=/export/home/oracle/agente/respuesta.rsp PROPERTIES_FILE=/export/home/oracle/agente/agentimage.properties -ignorePrereqs

Update home dependency completed successfully.

Executing command: /oracle/agent12c/core/12.1.0.5.0/oui/bin/runConfig.sh ORACLE_HOME=/oracle/agent12c/core/12.1.0.5.0 RESPONSE_FILE=/oracle/agent12c/core/12.1.0.5.0/agent.rsp ACTION=configure MODE=perform COMPONENT_XML={oracle.sysman.top.agent.11_1_0_1_0.xml} RERUN=true

ERROR: Agent Configuration Failed SEVERE:emctl secure agent command has failed with status=1SEVERE:emctl secure agent command has failed with status=1SEVERE:emctl secure agent command has failed with status=1

Agent Deploy Log Location:/oracle/agent12c/core/12.1.0.5.0/cfgtoollogs/agentDeploy/agentDeploy_2023-06-16_16-00-42-PM.log

Si da error el aseguramiento, 

se corrige el error probable el hosts, puede seguirse los pasos sin error y el siguiente apartado no sera necesario:

emctl secure agent

bash-3.2$ /oracle/agent12c/agent_inst/bin/emctl secure agent

Oracle Enterprise Manager Cloud Control 12c Release 5  

Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.

Agent is already stopped...   Done.

Securing agent...   Started.

Enter Agent Registration Password : 

Securing agent...   Successful.

emctl upload 


Ejecutamos el paso de configuracion interna( solo si fallo el aseguramiento en el párrafo anterior)

emctl config  agent addinternaltargets

luego

emctl status agent 

emctl upload agent

bash-3.2$ /oracle/agent12c/agent_inst/bin/emctl status agent

Oracle Enterprise Manager Cloud Control 12c Release 5  

Copyright (c) 1996, 2015 Oracle Corporation.  All rights reserved.

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

Agent Version          : 12.1.0.5.0

OMS Version            : 12.1.0.5.0

Protocol Version       : 12.1.0.1.0

Agent Home             : /oracle/agent12c/agent_inst

Agent Log Directory    : /oracle/agent12c/agent_inst/sysman/log

Agent Binaries         : /oracle/agent12c/core/12.1.0.5.0

Agent Process ID       : 13929

Parent Process ID      : 13833

Agent URL              : https://TARGET:3882/emd/main/

Local Agent URL in NAT : https://TARGET:3882/emd/main/

Repository URL         : https://OMSHOSTNAME:4899/empbs/upload

Started at             : 2023-06-16 17:20:48

Started by user        : oracle

Operating System       : SunOS version 5.10 (sparcv9)

Last Reload            : (none)

Last successful upload                       : 2023-06-16 17:22:33

Last attempted upload                        : 2023-06-16 17:22:33

Total Megabytes of XML files uploaded so far : 0.07

Number of XML files pending upload           : 0

Size of XML files pending upload(MB)         : 0

Available disk space on upload filesystem    : 22.42%

Collection Status                            : Collections enabled

Heartbeat Status                             : Ok

Last attempted heartbeat to OMS              : 2023-06-16 17:21:56

Last successful heartbeat to OMS             : 2023-06-16 17:21:56

Next scheduled heartbeat to OMS              : 2023-06-16 17:22:56

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

Agent is Running and Ready

bash-3.2$ 

Y con eso tendremos un agente instalado de forma correcta, no olvidar ejecutar el script de root.sh dentro del OracleHOME del agente, descubrir los demás componentes en el HOST y a poder usar el agente totalmente funcional

Espero les sea de utilidad

saludos.