Archive for the ‘Unix’ Category

Error en instalacion de Varnish-cache en CEntOS 6.5

miércoles, julio 9th, 2014

Varnish esta construido para hacer que una infraestructura responda más rápido a requerimientos de peticiones.
Es util para cachear peticiones muy recurrentes y en realidad ha sido masivamente mencionado en foros como solución, por lo que descargue varnish-cache para hacer una pruebas pero al instalar según las instrucciones para RedHat, pero al hacerlo marco un error en la instalación

Error: Package: varnish-4.0.1-1.el6.x86_64 (varnish-4.0)
           Requires: libjemalloc.so.1()(64bit)
           Available: varnish-4.0.0-0.20140328beta1.el6.x86_64 (varnish-4.0)
               libjemalloc.so.1()(64bit)
           Available: varnish-4.0.0-1.el6.x86_64 (varnish-4.0)
               libjemalloc.so.1()(64bit)
           Available: varnish-4.0.0-0.20131129tp1.el6.x86_64 (varnish-4.0)
               Not found
           Installing: varnish-4.0.1-1.el6.x86_64 (varnish-4.0)
               Not found
Error: Package: varnish-4.0.1-1.el6.x86_64 (varnish-4.0)
           Requires: jemalloc

Y ya que no viene dentro de la distribución de CEntOS 6.5 entonces instale el repositorio EPEL, y luego un simple

yum install jemalloc

y finalmente la instalacion de la documentacion funciono correctamente

rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.0.1.el6.rpm
yum install varnish

Solución a Internal Dummy Connection

domingo, julio 6th, 2014

Es posible si tienes un servidor apache corriendo con una version mayor a la 2.2.x que te aparezca una linea en el log construída de la siguiente forma

::1 - - [06/Jul/2014:22:27:48 -0400] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.2.15 (Red Hat) (internal dummy connection)"

En mi caso existian varias al punto de que se generaban en algunos casos una por segundo. Pensé que era algo que no debía pasar, pero la misma documentacion de apache dice que esto sucede para poder administrar los procesos hijos que genera apache promoviendo una solución, el establecer en el httpd.conf, donde se configura el log la línea

SetEnvIf Remote_Addr "127\.0\.0\.1" loopback

Esto no soluciona el problema, sólo logra que la linea no se escriba en el log, por lo que igual sabes que se esta administrando algo de forma que en algunos casos carga el servidor, porque se estan enviando peticiones desde loopback, o sea, desde si mismo, para si mismo. Descubri en elgunos sitios que las directivas aplicadas en un .htaccess en la raiz de /var/www/html minimizaba el problema

RewriteCond %{HTTP_USER_AGENT} ^.*internal dummy connection.*$ [NC]
RewriteRule .* - [F,L]

Finalmente encontre a alguien que comento que debiese ser que los min server y maxserver estarán mal configurados, por lo que debían incrementarse, a lo cual hice caso, y hasta el momento no he vuelto a tener el aviso, en mi caso la siguiente configuracion ayudó (verifica bien los valores antes de cambiarlos, podrías provocar en tu servidor otras situaciones derivadas del cambio):

<IfModule prefork.c>
StartServers       20
MinSpareServers    100
MaxSpareServers    200
ServerLimit     1530
MaxClients      1530
MaxRequestsPerChild  4000
</IfModule>

 

Ver
Wiki Apache Internal Dummy conection

Crear la base de datos en linea de comando

miércoles, abril 24th, 2013

Luego de la instalación de Oracle, no termina el uso de la linea de mando, debido a que la instalación de oracle en modo silencioso no crea la base de datos. Para quienes han instalado a través del modo grafico recordarán que la creación de la base de datos es parte del proceso de instalación. En este caso no, solo instalamos el software, de ahí en adelante nos toca crear la base de datos, para lo cual utilizamos el comando dbca de la siguiente forma

[root@arocl ]$su - oracle
[oracle@arocl bin]$ ./dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname oinstall -sid orcl -responseFile NO_VALUE -characterSet AL32UTF8 -memoryPercentage 30 -emConfiguration LOCAL
Introduzca la contraseña de usuario SYS: 
 
Introduzca la contraseña de usuario SYSTEM: 
 
Introduzca la contraseña de usuario DBSNMP: 
 
Introduzca la contraseña de usuario SYSMAN: 
 
Copiando archivos de base de datos
1% terminado
3% terminado
11% terminado
18% terminado
26% terminado
37% terminado
Creando e iniciando instancia Oracle
40% terminado
45% terminado
50% terminado
55% terminado
56% terminado
60% terminado
62% terminado
Terminando creación de base de datos
66% terminado
70% terminado
73% terminado
85% terminado
96% terminado
100% terminado
Para obtener información detallada, consulte el archivo log "/u01/app/oracle/cfgtoollogs/dbca/oinstall/oinstall.log".

Instalando Oracle 11G/12c a línea de mando (Silent Mode)

miércoles, abril 24th, 2013

La verdad es que desde hace un tiempo las instalaciones de Oracle se pueden hacer en modo gráfico «como en Windows» pero para aquellos que estamos acostumbrados al modo texto o lisa y llanamente solo podemos utilizar un terminal a línea de mando, es util tener el conocimiento de co mo instalar Oracle de esta forma.

Preparación

Bien es cierto que la linea para ejecutar en modo silent es conocida, es necesario crear los usuarios y las carpetas necesarias para una instalación adecuada. Para ello debes primer crear los usuarios que se requieren para la instalación y ejecución de la base de datos.

groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle

Aunque es obvio, si estas leyendo esto es porque tienes los archivos de instalación

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip


Actualizacion (24-09-2015)
Por mi parte encuentro conveniente mover la carpeta descomprimida a /tmp, este articulo presume que los archivos de instalación estan en esta carpeta, por lo tanto en la carpeta que se descomprimió oracle debes aplicar

mv database/ /tmp
cd /tmp

Esto te genera una carpeta database/ en la ruta en donde descomprimiste. Para ejecutar el instalador como el usuario oracle es necesario dar los permisos necesarios

chown -R oracle.oinstall database/ 

Debes además crear las carpetas necesarias que utiliza inicialmente el instalador de Oracle, luego de crearlas en comando creará todas las subcarpetas, obviamente si se le dan los permisos adecuados.

mkdir /u01
chown -R oracle.oinstall /u01 
mkdir -p /u01/app
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

Asegurarse que estan instalados los paquetes necesarios que utiliza Oracle

yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel  mksh

En este punto la unica discrepancia que tengo con el instalador es que igual, en un ambiente 64bits te reclama como necesarias ciertas librerías i386, que en rigor si estan instalados pero para 64bits.

Establecer los requerimientos mínimos exigidos por oracle (en su instalador de 64bits). Estas lineas las puedes establecer al final del archivo, fijandote previamente que alguna de estas variables no este establecida con anterioridad.

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

Para volcar estos parametros sin reiniciar (¡gracias Linux!) ejecutar

/sbin/sysctl -p

Editar adicionalmente 3 archivos, uno para establecer los limites de archivos

vi /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536

Editar la seguridad para el logeo de usuarios de la máquina

vi /etc/pam.d/login
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so

Editar profile (añadir al final) para establecer ciertos limites necesarios.

vi /etc/profile
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi

Instalar Oracle

Y ahora instalar oracle

Crea un archivo en /etc o en /var/opt/oracle

[root@arocl ~]# vi /etc/oraInst.loc
inventory_loc=/tmp/oraInventory
inst_group=oinstall
su - oracle

y correr (situate en la carpeta donde descomprimiste oracle)

Actualizacion (24-09-2015)

cd /tmp/database


Actualizacion (12-04-2016)
Para el caso que estes instalando Oracle 12c entonces debes agregar

oracle.install.db.BACKUPDBA_GROUP=dba \
oracle.install.db.DGDBA_GROUP=dba \
oracle.install.db.KMDBA_GROUP=dba \

./runInstaller -silent -force -ignoreSysPrereqs -ignorePrereq \
FROM_LOCATION=/tmp/database/stage/products.xml \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/tmp/oraInventory \
ORACLE_HOME=/u01/app/oracle/product/11.2/db_1 \
ORACLE_HOME_NAME="OraDb11g_Home1" \
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 \
DECLINE_SECURITY_UPDATES=true

Y finaliza ejecutando

/u01/app/oracle/product/11.2/db_1/root.sh


Actualizacion (24-09-2015)
Pasos siguientes
Luego de instalar la base de datos deben seguirse ciertos pasos para completar la generación y conexión a una instancia:
Establecer la variables de entorno para Oracle
Crear una base de datos
Crear el listener

Problemas

[INS-06101] No se ha podido determinar la dirección IP del host local

Para esto debes fijarte si en el archivo /etc/hosts y en el archivo /etc/sysconfig/network este establecido el nombre del hostname

En mi caso

[root@arocl ~]# vi /etc/hosts
127.0.0.1   arocl localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         arocl localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@arocl ~]more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=arocl

[INS-32035] No se ha podido crear un nuevo inventario central en la ubicación especificada

Crea un archivo en /etc o en /var/opt/oracle

[root@arocl ~]# vi /etc/oraInst.loc
inventory_loc=/home/oracle/oraInventory
inst_group=oinstall

[INS-13013] El entorno de destino no cumple algunos requisitos obligatorios

Este es el error que no me gusta el log señala

	
INFO: Error Message:PRVF-7573 : El tamaño de intercambio suficiente no está disponible en el nodo "arocl" [Se necesita = 15,56GB (1.6316164E7KB) ; Se ha encontrado = 8GB (8388600.0KB)]
INFO: Error Message:PRVF-7543 : El parámetro del núcleo del sistema operativo "ip_local_port_range" no tiene un valor adecuado en el nodo "arocl" [Se esperaba = "between 9000 & 65500" ; Se ha encontrado = "between 9000 & 65000"]
INFO: Error Message:PRVF-7532 : Falta el paquete "libaio-0.3.105 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "glibc-2.3.4-2.41 (i686)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "compat-libstdc++-33-3.2.3 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "libaio-devel-0.3.105 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "libgcc-3.4.6 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "libstdc++-3.4.6 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "unixODBC-2.2.11 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "unixODBC-devel-2.2.11 (i386)" en el nodo "arocl"
INFO: Error Message:PRVF-7532 : Falta el paquete "pdksh-5.2.14" en el nodo "arocl"

Esto para mi es raro, debido a que estoy en un ambiente 64bits, por lo cual nota que este comando esta aplicado con los parametros -ignoreSysPrereqs -ignorePrereq, esto se salta cualquier validacion de sistema y de librerías.

En este caso es justificado.


Actualizacion (12-04-2016)

[FATAL] [INS-35344] No se ha especificado el valor para Database Backup and Recovery (OSBACKUPDBA) group.


Para el caso que estes instlanmdo Oracle 12c y te aparezca este error implica que debes adicionar a la linea de instalacion

Cambiando algoritmo de encriptamiento de la password en linux

viernes, abril 12th, 2013

En algunos casos, si requieres cambiar o actulizar el algoritmo de encriptamiento de la password de linux, debes aplicar lo siguiente para saber que algoritmo tienes

authconfig --test | grep hashing

Respuesta

password hashing algorithm is sha512

Para cambiarlo aplicar

authconfig --passalgo=md5 --update

Es «downgrade» de password (debido a que MD5 es masinseguro que sha512) lo necesite hacer debido a Error SQL30082N Reason Code 15 (o 24) en DB2

Esto afecta a todos los usuarios por lo que ellos deben cambiar su password despues del proximo ingreso. Para obligarlos

chage -d 0 nombre_de_usuario

Error SQL30082N Reason Code 15 (o 24) en DB2

viernes, abril 12th, 2013

Si ya estas trabajando con DB2 9.1 o superior pero en los últimos sistemas operativos de linux, puede aparecer el error

SQL30082N Security processing failed with Reason Code 15
"Security processing at the server failed "

o

SQL30082N Security processing failed with Reason Code 24
"USERNAME AND/OR PASSWORD INVALID "

La razon la encontre aquí y tiene que ver con el algoritmo de encriptación de la password. Recordemos que DB2 utiliza el usuario de sistema operativo, a él es quién tu le asignas los permisos para accesar a una base de datos o a un esquema de DB2.

El problema es que actualmente los sistemas operativos Linux vienen con el algoritmo sha512 implementado para encriptar la password, siendo que DB2 sólo trabaja con MD5 o SHA1, por lo tanto tienes que cambiar el algoritmo de encriptamiento de la password.

Actualización: Aquí explico como cambiar el algoritmo de encriptamiento en linux