Renombrado las interfaces de red como ethX

En una entrada de la semana pasada vimos como el nuevo Oracle Linux 7 y RedHat 7 han decidido cambiar los servicios y las notaciones a un nuevo método con mejoras a mi entender altamente cuestionables.

Hoy vamos a ver como podemos cambiar los interfaces de red de esa notación a la notación clásica de linux ethX.

La instalacion por defecto de Oracle Linux 7 nos dejará unos interfaces de red tal que así

Captura de pantalla 2014-12-03 a las 19.50.30

Para volver a tener nuestros interfaces de red con nuestros nombres habituales deberemos de hacer:

[root@alone ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=es 
crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet "
GRUB_DISABLE_RECOVERY="true"

Y modificaremos la línea

GRUB_CMDLINE_LINUX="vconsole.keymap=es crashkernel=auto 
 vconsole.font=latarcyrheb-sun16 rhgb quiet ”

añadiéndole net.ifnames=0 biosdevname=0 para que quede:

[root@alone ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=es 
crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"

Tras esto ejecutamos la utilidad grub2-mkconfig -o /boot/grub2/grub.cfg

[root@alone ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-123.9.3.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.9.3.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.8.13-44.1.5.el7uek.x86_64
Found initrd image: /boot/initramfs-3.8.13-44.1.5.el7uek.x86_64.img
Warning: Please don't use old title `Oracle Linux Server, with Unbreakable Enterprise Kernel 3.8.13-44.1.5.el7uek.x86_64' for GRUB_DEFAULT, use `Advanced options for Oracle Linux Server>Oracle Linux Server, with Unbreakable Enterprise Kernel 3.8.13-44.1.5.el7uek.x86_64' (for versions before 2.00) or `gnulinux-advanced-533cf96e-16ad-48b4-b21f-955d13dcbf32>gnulinux-3.8.13-44.1.5.el7uek.x86_64-advanced-533cf96e-16ad-48b4-b21f-955d13dcbf32' (for 2.00 or later)
Found linux image: /boot/vmlinuz-3.8.13-35.3.1.el7uek.x86_64
Found initrd image: /boot/initramfs-3.8.13-35.3.1.el7uek.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-b231a9662b504ceb8b5883008ce1db77
Found initrd image: /boot/initramfs-0-rescue-b231a9662b504ceb8b5883008ce1db77.img

Y nos vamos al directorio /etc/sysconfig/network-scripts donde haremos:

mv ifcfg-enp0s3 a ifcfg-eht0
mv ifcfg-enp0s8 a ifcfg-eht1
mv ifcfg-enp0s9 a ifcfg-eht2

tras esto solo nos queda editar los ficheros ethX de toda la vida y ponerle los parámetros que queramos (entre ellos el parámetro «NAME») y ya tendremos los dispositivos renombrados con los nombres clásicos de Linux/Unix

Parametrizacion del kernel en linux: swappiness

Hoy vamos a ver una parámetro poco documentado de la relaccion entre Linux y Oracle.
Cuando miramos las recomendaciones de Oracle para el kernel a la hora de instalarlo en un sistema operativo Linux nos encontramos con:
Configuring Kernel Parameters and Resource Limits

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

Pero no hay ni rastro de este parámetro swappiness al que hago referencia. Si miramos en la wikipedia nos indica que :

Swappiness es una propiedad del Núcleo Linux que permite establecer un balance entre el uso del Espacio de intercambio (swap en inglés, por eso el nombre de la propiedad) y la Memoria de acceso aleatorio (RAM).
El swappiness puede tomar valores desde el 0 hasta el 100. Si se establece 0 el núcleo intentará no hacer intercambio, mientras que si se establece 100 el sistema intentará mantener la Memoria de acceso aleatorio lo más libre posible haciendo intercambio.

Este valor está configurado por defecto en las distribuciones Linux a 60 ,y como os decía no encontramos apenas referencias a el en la documentación de Oracle.Pero ¿que significa este valor del swappines a 60?

Significa que, cuando lleguemos al uso de ese 60% de memoria el proceso kswapd se lanzará a hacer su trabajo, haciendo que el rendimiento de nuestra base de datos caíga en picado por el uso de recursos del sistema del proceso kswapd.

¿Que hacer si esto ocurre?

La solucion pasa por modificar este parámetro para que el kswapd no empiece hasta un 10% de memoria libre.

echo vm.swappiness=10 >> /etc/sysctl.conf
sysctl -p

Como os comentaba, esta opcion del kernel de linux está muy poco documentada por parte de Oracle, yo solamente he encontrado referencias a ella en:

Cambios en el arranque de Linux : systemctl

En la nueva versión de Oracle Linux (y RedHat) han optado por eliminar el tradicional método de arranque de servicios de /etc/init.d por el uso de systemctl.

Esta nueva funcionalidad cambia totalmente la manera de trabajar con los ficheros de arranque y parada de los servicios y, entre las supuestas virtudes de este sistema , personalmente no ha ninguna que me convezca.

En cualquier caso En esta web Uso de services de RedHat tenemos la información del funcionamiento de los comandos.

A modo de «bookmark» hago un copy & paste de dos tablas de ese documento que pueden sernos de utilidad

Correspondencia entre service y systemctl

Comparison of the service Utility with systemctl

Correspondencia entre chconfig y systemctl

omparison of the chkconfig Utility with systemctl

Desinstalar el agente del oem12c

Una de las cosas que hay que llevar a cabo cuando se utiliza el Enterprise Manager de Oracle es el instalar/desisntalar los agentes.
Bien sea por que queremos actualizarlos, limpiar la máquina o simplemente por que decidimos hacerlo, tenemos que poder quitar los agentes de oracle.

Lo primero siempre será pararlo
parar_agente

Si el agente se ha instalado de manera correcta, no deberíamos de tener muchos problemas para desinstalarlo, ya que debe de estar contenido en el inventario y deberíamos de poder eliminarlo sin problemas.
Por ejemplo, en el caso de un equipo windows, deberíamos de poder eliminarlo desde el propio oracle installer.

desinstall_oem12c_win

En el caso de un sistema Unix, el encontrar en instalador suele ser mas complicado, por lo que lo tendremos que parar a mano.

Una de las maneras mas sencillas de encontrarlo es mirar en el fichero
 /etc/oragchomelist

/opt/app/oracle/product/oem12/agent12c/core/12.1.0.4.0:/opt/app/oracle/product/oem12/agent12c/agent_inst

/opt/app/oracle/product/oem13/agent13c/agent_13.2.0.0.0:/opt/app/oracle/product/oem13/agent13c/agent_inst

Aqui podemos ver como tenemos los agentes de la version 12 y 13.

Para eliminar el de la 12 deberiamos de

1- Parar el agente

/opt/app/oracle/product/oem12/agent12c/agent_inst/bin emctl stop agent

2- mediante el comando  AgentDeinstall.pl que nos eliminará la instalación del inventario y si se lo pedimos nos eliminará tambien el $AGENT_HOME

[server@OEM12c] export AGENT_HOME=/opt/app/oracle/product/12.1.0.3/oem12/
agent12c
core/12.1.0.4.0
[server@OEM12c] $AGENT_HOME/sysman/install/AgentDeinstall.pl -agentHome $AGENT_HOME
 Agent Oracle Home: /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0
aentHome = /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0

NOTE: The agent base directory: /opt/app/oracle/product/12.1.0.3/oem12 will be removed after successful deinstallation of agent home.


 DetachHome Command executed:/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oui/bin/runInstaller -detachHome -force -depHomesOnly -silent ORACLE_HOME=/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0 -waitForCompletion -invPtrLoc /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
The inventory pointer is located at /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
'DetachHome' was successful.
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
The inventory pointer is located at /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
The Oracle home '/opt/app/oracle/product/12.1.0.3/oem12/sbin' could not be updated as it does not exist.


Deinstall Command executed:/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oui/bin/runInstaller -deinstall -silent "REMOVE_HOMES={/opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0}" -waitForCompletion -removeAllFiles -invPtrLoc /opt/app/oracle/product/12.1.0.3/oem12/core/12.1.0.4.0/oraInst.loc
Starting Oracle Universal Installer...

Checking swap space: must be greater than 500 MB.   Actual 53247 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-03-21_09-43-48AM. Please wait ...Oracle Universal Installer, Version 11.1.0.12.0 Production
Copyright (C) 1999, 2014, Oracle. All rights reserved.

Starting deinstall


Deinstall in progress (Thursday, March 21, 2018 9:43:56 AM CET)
Configuration assistant "Agent Deinstall Assistant" succeeded
............................................................... 100%

 Done.

Deinstall successful

End of install phases.(Thursday, March 21, 2018 9:44:10 AM CET)
End of deinstallations
Please check '/opt/app/oraInventory/logs/silentInstall2018-03-21_09-43-48AM.log' for more details.

NOTE: The targets monitored by this Management Agent will not be deleted in the Enterprise Manager Repository by this deinstall script. Make sure to delete the targets manually from the Cloud Control Console for a successful deinstallation.


Deinstall successful

Como veis, no es algo a lo que debamos temer.

La información completa de como llevarlo a cabo, como siempre en la documentación de Oracle
http://docs.oracle.com/cd/E24628_01/install.121/e24089/deinstall_agent.htm#CBBJEHDI

Estado del Cluster/Rac/Grid tabulado

Nos hemos mudado a bloger!
El contenido actualizado de esta entrada lo tienes en:
http://dba.pamplona.name/2013/12/estado-del-clusterracgrid-tabulado.html

Hoy vamos a ver una entrada de esas sencillas para hacernos la vida mas fácil.

Cuando ejecutamos el comando para ver el estado de un cluster, nos solemos encontrar con esto :

grid@rac1:/opt/oracle/10.2/CRS/bin$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora....SM1.asm application ONLINE ONLINE oradb1
ora....D1.lsnr application ONLINE ONLINE oradb1
ora.oradb1.gsd application ONLINE ONLINE oradb1
ora.oradb1.ons application ONLINE ONLINE oradb1
ora.oradb1.vip application ONLINE ONLINE oradb1
ora....SM2.asm application ONLINE ONLINE oradb2
ora....D2.lsnr application ONLINE ONLINE oradb2
ora.oradb2.gsd application ONLINE ONLINE oradb2
ora.oradb2.ons application ONLINE ONLINE oradb2
ora.oradb2.vip application ONLINE ONLINE oradb2
ora....robd.db application ONLINE ONLINE oradb1
ora....dmin.cs application OFFLINE OFFLINE
ora....bd1.srv application OFFLINE OFFLINE
ora....ckup.cs application OFFLINE OFFLINE
ora....bd2.srv application OFFLINE OFFLINE
ora....atch.cs application OFFLINE OFFLINE
ora....bd2.srv application OFFLINE OFFLINE
ora....oltp.cs application OFFLINE OFFLINE
ora....bd1.srv application OFFLINE OFFLINE
ora....bd2.srv application OFFLINE OFFLINE
ora....d1.inst application ONLINE ONLINE oradb1
ora....d2.inst application ONLINE ONLINE oradb2

Realmente no nos sirve de mucho ya que queda todo apiñado,y no nos permite saber que componente está arrancado y cual eta parado.
Navegando por internet vi en un par de webs (perdón pero no recuerdo el lugar) el siguiente scipt en ksh

!/usr/bin/ksh
#
#  $GRID_HOME debe de estar definido en el entorno 
#
RSC_KEY=$1
QSTAT=-u
AWK=/bin/awk
# Table header:echo ""
$AWK \
'BEGIN {printf "%-45s %-10s %-18s\n", "HA Resource", "Target", "State";
printf "%-45s %-10s %-18s\n", "-----------", "------", "-----";}'
# Table body:
$GRID_HOME/bin/crs_stat $QSTAT | $AWK \
'BEGIN { FS="="; state = 0; }
$1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1};
state == 0 {next;}
$1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
$1~/STATE/ && state == 2 {appstate = $2; state=3;}
state == 3 {printf "%-45s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'

Este script nos devuelve una salida limpia al estilo de :

grid@rac1:/opt/oracle/10.2/CRS/bin$ ./crsstat.sh
HA Resource                         Target     State
-----------                         ------     -----
ora.oradb1.ASM1.asm                ONLINE     ONLINE on oradb1
ora.oradb1.LISTENER_oradb1.lsnr    ONLINE     ONLINE on oradb1
ora.oradb1.gsd                     ONLINE     ONLINE on oradb1
ora.oradb1.ons                     ONLINE     ONLINE on oradb1
ora.oradb1.vip                     ONLINE     ONLINE on oradb1
ora.oradb2.ASM2.asm                ONLINE     ONLINE on oradb2
ora.oradb2.LISTENER_oradb2.lsnr    ONLINE     ONLINE on oradb2
ora.oradb2.gsd                     ONLINE     ONLINE on oradb2
ora.oradb2.ons                     ONLINE     ONLINE on oradb2
ora.oradb2.vip                     ONLINE     ONLINE on oradb2
ora.rac.db                         ONLINE     ONLINE on oradb1
ora.rac_admin.cs                   OFFLINE    OFFLINE
ora.rac_admin.rac1.srv             OFFLINE    OFFLINE
ora.rac_backup.cs                  OFFLINE    OFFLINE
ora.rac_backup.rac2.srv            OFFLINE    OFFLINE
ora.rac_batch.cs                   OFFLINE    OFFLINE
ora.rac_batch.rac2.srv             OFFLINE    OFFLINE
ora.rac_oltp.cs                    OFFLINE    OFFLINE
ora.rac_oltp.rac1.srv              OFFLINE    OFFLINE
ora.rac_oltp.rac2.srv              OFFLINE    OFFLINE
ora.rac.rac1.inst                   ONLINE     ONLINE on oradb1
ora.rac.rac2.inst                   ONLINE     ONLINE on oradb2

Nota posteriormente me he encontrado con que era un script documentado por Oracle en la nota 259301.1 :
CRS and 10g/11.1 Real Application Clusters (Doc ID 259301.1)