viernes, 10 de agosto de 2012

Sentencia SQL para conocer el espacio asignado, usado y libre de los tablespaces de una base de datos Oracle

La siguiente sentencia SQL nos permite conocer cuál es el espacio usado, el espacio asignado y el espacio libre de los tablespaces de una base de datos Oracle que no son temporary. Estoy seguro le va a ser útil a  todo DBA Oracle para alertar problemas de espacio en la base de datos.


SELECT A.TABLESPACE_NAME, A.MB_ASIGNADOS, B.MB_USADOS, A.MB_ASIGNADOS - B.MB_USADOS AS MB_LIBRES, (B.MB_USADOS / A.MB_ASIGNADOS) *100 PORCENTAJE_USADO
FROM
(
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS MB_ASIGNADOS, COUNT(1) AS CANT_DATAFILES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) A,
(
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS MB_USADOS, COUNT(1) AS CANT_SEGMENTOS
FROM DBA_SEGMENTS
GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME;

martes, 10 de julio de 2012

Por qué es imprescindible para un DBA conocer SQL

Los nuevos DBA Oracle son reacios de aprender el  lenguaje de consulta de base de datos SQL. Esto probablemente es consecuencia de haber publicitado que partir de la versión Oracle Database 10g un DBA solo necesita de las interfaces gráficas de la consolas (OEM o dbconsole) haciendo aparentemente "prescindible" elaborar una sentencia SQL para realizar nuestro trabajo.

La realidad nos demuestra lo contrario pues un DBA necesita:
  • Consultar las vistas DBA_*, ALL_*, USER_*, V$*, GV$* para recolectar información de estados, los objetos, cruzar información, etc.
  • Comunicarse en el mismo lenguaje de los desarrolladores de consultas SQL, sentencias SQL, código PL/SQL
  • Analizar los planes de ejecución de las sentencias SQL para plantear alternativas de optimización.  
  • Elaborar sentencias SQL para automatizar validaciones.
  • Controlar los cambios (pases) en los objetos de base de datos que se dan con sentencias DDL
  • Otorgar privilegios de objetos o privilegios de sistema.
  • Orientar a los usuarios de la BD en mejores practicas de codificación SQL o PL/SQL.
  • Explicar a los usuarios por qué una sentencia genera un alto costo de CPU, I/O Disk, etc.