Oracle espacio ocupado por tabla y objetos relacionados

En ocasiones debemos obtener un detalle suficiente del espacio ocupado por un tabla de la BD y sus objetos relacionados.Database_Icon_256

Para conocer el espacio ocupado por una tabla debemos acceder básicamente a:

  • dba_indexes, para obtener los nombres de los índices relacionados con la tabla.
  • dba_logs, aquí podemos conocer si existe algún segmento de tipo lob relacionado con la tabla.
  • dba_segments, finalmente obtenemos cada uno de los tamaños utilizando los datos anteriores

Por ejemplo, la tabla SCOTT.TABLE_TEST, la consulta sobre dba_indexes:

Continue reading

Instalar MongoDB Linux, una primera instalación sencilla

Instalar MongoDB en Linux es realmente sencillo.

MongoDB es un motor de BD noSQL, es una solución Big Data que merece una mención especial, en otra entrada veremos las diferencias conceptuales respecto a un motor SQL, pero hoy vamos a ver como arrancar una instalación básica y algunos conceptos iniciales.entrada mongodb instalación sencilla

Lo primero que vamos a hacer es obtener el software desde la URL:

https://www.mongodb.org/downloads

Seleccionamos el Sistema Operativo y descargamos, en este caso la instalación la haremos sobre CentOS 6.4 Linux.

Continue reading

Oracle 12c instalación en linux sobre CentOS 6

Vamos a realizar una instalación de Oracle 12c sobre CentOS 6 de 64 bits, la documentación oficial se puede encontrar en:

Quick Installation Guide 12c Release 1 (12.1) for Linux x86-64

Esta documentación es extensa, no demasiado clara y contiene información parcial para las instalaciones sobre RedHat 6 o CentOS 6, por tanto me he decidido a escribir esta guía.

Sólo vamos a tratar la instalación de los binarios, la creación de la base de datos ya lo trataremos en otro momento.

Para realizar la instalación cumpliendo los prerrequisitos, se ha utilizado una máquina con:

En lineas generarles, partiendo de una instalación nueva, lo que vamos a hacer es:

  • Desactivar selinux e iptables, para evitar simplificar la configuración.
  • Instalar paquetería necesaria.
  • Configurar parámetros del kernel
  • Crear usuario y grupos
  • Límites de usuario
  • Creación de directorios y permisos
  • Definición de entorno de ejecución
  • Instalación propiamente, para este he puesto un video que sinó es pesadísimo.

Continue reading

Oracle obtener DDL de objetos

En ocasiones es muy útil obtener la instrucción DDL de un objeto de base de datos determinado.base_datos_objetos

Podemos por ejemplo recrear un usuario de un entorno a otro sin ni siquiera conocer la contraseña.

Las instrucciones DDL las podemos obtener llamando a la función:

Source   
DBMS_METADATA.GET_DDL (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;

Continue reading

Optimizador Oracle, activar y desactivar características (Oracle DB)

Con cada versión o release de Oracle Database, se añaden nuevas funcionalidades y correcciones de bugs en el optimizador, esto en principio es bueno pero cualquier modificación de código puede incluir nuevos bugs.

Right Decision, Wrong Decision Road SignCuando actualizamos de una versión de Oracle a otra superior es posible que algunas consultas funcionen realmente mal, esto se puede solucionar con un workaround del tipo (si hemos migrado a 11gr2 desde 10.2.0.4 por ejemplo):

 

Source   
ALTER session SET optimizer_features_enabled='10.2.0.4';

o para hacerlo permanente:

Continue reading

Oracle reconstruir índices y estado

En tablas donde hay cambios constantemente como un mantenimiento más de la BD, hay que reconstruir los índices B-TREE de forma periódica, por ejemplo (la sintaxis es más compleja):

Source   
ALTER INDEX SCOTT.PK_EMP REBUILD;

Un B-TREE ideal tiene todas las ramas perfectamete equilibradas, un B-TREE degradado puede ofrecer tiempos de búsqueda lineales en lugar de logarítmicos debido a un fuerte desequilibrio.

Para determinar si un índice debe ser reconstruido:

Continue reading

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

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

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