Oracle estadísticas base de datos, generación, velocidad y actividad redolog (Oracle DB)

Cada nueva versión del optimizador cada vez es más dependiente de las estadísticas, la calidad de ellas puede ser suficiente para una versión anterior pero para la actual no.

Como regla general se ha de analizar una tabla (en casacada, es decir incluyendo índices) cuando se realizan modificaciones importantes sobre ella. Por ejemplo:

  • truncates
  • Insert into .. select …
  • Cualquier inserción, actualización y borrado masivo (se entiendo por masivo que afecte a más de un 20% del total de los registros)

Las estadísticas se pueden obtener de muchas maneras, algunas más rápidas que otras (estimaciones parciales, completas, etc…) y con más o menos generación de redologs.

Por ejemplo si usamos el paquete DBMS_STATS (https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS059) concretamente el subprograma GATHER_TABLE_STATS (https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68582), la sintaxis es muy similar para los subprogramas:

Continue reading

Pasar redologs de sistema de ficheros a RAW

No es una cosa que me guste especialmente, pero es posible que nos encontremos con personas que digan que si el rendimiento de la BD mejora mucho con los redolog en raw, frente a un sistema de ficheros (ext4 por ejemplo).

Para salir de dudas podemos trabajar con los redologs en modo RAW de forma muy sencilla. Vamos a poner un ejemplo hecho en Red Hat 4, con una BDD de pruebas con 3 redologs de 51 MB cada uno:

Source   
[oracle@clu01 DBU]$ ls -l
total 1502076
-rw-r-----  1 oracle oinstall   9748480 Jun 25 20:38 control01.ctl
-rw-r-----  1 oracle oinstall   9748480 Jun 25 20:38 control02.ctl
-rw-r-----  1 oracle oinstall   7061504 Jun 12 11:36 control03.ctl
-rw-r-----  1 oracle oinstall  52429312 Jun 25 11:06 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Jun 25 10:39 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Jun 25 10:39 redo03.log
-rw-r-----  1 oracle oinstall 545267712 Jun 25 20:38 sysaux01.dbf
-rw-r-----  1 oracle oinstall 744497152 Jun 25 20:38 system01.dbf
-rw-r-----  1 oracle oinstall  20979712 Jun 23 21:22 temp01.dbf
-rw-r-----  1 oracle oinstall  36708352 Jun 25 20:38 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072 Jun 25 20:38 users01.dbf

Continue reading

OpenLDAP checksum error, slapcat y mensaje «ldif_read_file: checksum error»

OpenLDAP ha evolucionado permitiendo cambios dinámicos en la configuración (muy bueno en principio), algo que normalmente es almacenado en:

Source   
/etc/ldap/slapd.d

La recomendación es usar comandos del estilo: ldapadd, ldapmodify o ldapdelete.

Pero la realidad es que muchas veces estaría bien realizar modificaciones de forma manual que terminamos antes, esto es algo que se puede hacer. Simplemente hay que reiniciar el servicio después, reinicio bastante rápido normalmente.

La sorpresa viene cuando hacemos un:

Continue reading

Consulta LDAP filtrando por grupo

Si estamos integrando aplicaciones sobre un LDAP (en nuestro caso sobre un OpenLDAP), seguramente hayamos visto la utilidad de poder obtener los usuarios que pertenecen aun grupo en una sola consulta LDAP, porque la aplicación que queremos integrar soporta solo una única consulta.

Además si buscamos documentación sobre este tema habremos encontrado cosas del estilo, «para obtener los usuarios que pertenecen al grupo grp_prueba ejecutamos la consulta»:

Source   
memberOf=cn=grp_prueba,ou=Groups,dc=zentyal

Continue reading

Jobs en MySQL

Esta vez vamos a ver la forma de realizar una tarea programada dentro de MySQL (salvando las distancias, un job de Oracle).

Primero tenemos que asegurarnos de que tenemos el scheduler arrancado esto lo vemos con un:

Source   
mysql> SHOW processlist;
+----+------+-----------------+------------+---------+------+-------+------------------+
| Id | User | Host            | db         | Command | Time | State | Info             |
+----+------+-----------------+------------+---------+------+-------+------------------+
|  6 | root | localhost:49987 | assets_pru | Sleep   |  299 |       | NULL             |
|  8 | root | localhost       | assets_pru | Query   |    0 | NULL  | SHOW processlist |
+----+------+-----------------+------------+---------+------+-------+------------------+
2 rows IN SET (0.00 sec)

No está arrancado, para esto tenemos que modificar un parámetro de my.cnf en la seccion mysqld:

Continue reading

Apache SSL certificado cliente, configurar Apache para permitir solo accesos SSL con certificado instalado en cliente

Vamos a configurar Apache (sobre un Ubuntu 12) para permitir el acceso de clientes que tengan un certificado SSL personal instalado, primero tenemos que crear algunas estructuras para poder más tarde trabajar con listas de revocación.

Lo primero es tener instalado openssl:

ubuntu@ip-10-112-31-82:~$ sudo aptitude install openssl

Crearemos una estructura de directorios que se ajuste a las rutas esperadas por el fichero de configuración openssl.cnf:

Source   
ubuntu@ip-10-112-31-82:~$ mkdir -p /vol/apache2_certs
ubuntu@ip-10-112-31-82:~$ cd /vol/apache2_certs/
ubuntu@ip-10-112-31-82:/vol/apache2_certs$ sudo cp /etc/ssl/openssl.cnf .

El fichero openssl.cnf define una estructura de directorios para poder trabajar entre otras cosas con listas de denegación de certificados, vamos a editarlo y moficicar la linea:

Continue reading

Rescan scsi linux, forzar rescan de unidades SCSI en Linux

Si añadimos discos en caliente (desde cualquier sistema de virtualización) es posible que el SO no se entera hasta que hagamos un rescan del bus scsi, esto se puede hacer con la herramienta:

Source   
rescan-scsi-bus.sh -a

Para instalarla en RedHat/Centos:

Source   
yum install sg3_utils

Continue reading

LVM external drive, aceder a datos en HDs con particiones LVM (por ejemplo un HD USB)

Los volúmenes LVM tienen muchas ventajas pero cuando pinchamos un disco duro (con LVM) a un sistema operativo (mediante USB por ejemplo) y queremos acceder a los datos, vemos que no es algo automático.

Para acceder a los datos podemos montar directamente el volumen porque el device simplemente no existe, esto se puede solucionar fácilmente. La secuencia de acciones es:

1- Pinchar el HD (lógicamente)
2- Realizar un vgscan
3- Realizar un lvscan
4- Activar el volumen LVM deseado
5- Montar el device y acceder a los datos

Para extraer el HD hay que:

Continue reading

MySQL tuning variables, parámetros para el motor INNODB

Continuando con el tuning MySQL ahora vamos a tocar de forma específica el motor INNODB.

Esta entrada está relacianada con la «MySQL, tuning de parámetros para cualquier motor«, vamos a trabajar a partir de estados y según el resultado ver que variables podemos modificar para mejorar los resultados.

En la entrada «Variables y estados en MySQL» ya se trató el tema de las variables y estados del servidor.

La documentación de todos las variables la podemos encontrar en:
http://dev.mysql.com/doc/refman/5.5/en/dynamic-system-variables.html

Continue reading

Gestión de memoria para Oracle 10g y >=Oracle 11g

En las versiones 10g y 11g de Oracle Database, se ha simplificado la configuración de las estructuras de memoria tanto para el SGA como el PGA de forma notable.

Oracle versión >=10g

A partir de la versión 10g se introducen 2 nuevos parámetros de gestión de memoria que simplifican enormente esta tarea.

SGA_TARGET, simplemente se fija un valor y redimensiona a demanda los valores (siempre y cuando sean=0):

  • Buffer cache (DB_CACHE_SIZE)
  • Shared pool (SHARED_POOL_SIZE)
  • Large pool (LARGE_POOL_SIZE)
  • Java pool (JAVA_POOL_SIZE)
  • Streams pool (STREAMS_POOL_SIZE)

Continue reading