DB Academia es blog especializado en temas de base de datos, programación en base de datos con SQL y lenguajes nativos como el PL/SQL de Oracle, Big Data y Data Analytics. Creado por: Carlos Alberto Morales Mestanza Lima-Peru
martes, 21 de enero de 2014
Arquitectura de una solución de Alta Disponibilidad de base de datos Oracle con RAC (Real Application Clusters).
La gráfica anterior muestra la arquitectura de una solución de alta disponibilidad de BD Oracle con RAC:
En términos simples, una solución RAC nos permite no solo balancear la carga sino también nos asegura la disponibilidad ante una falla en uno de los nodos o servidores de base de datos a tal punto que puede llegar a ser transparente al usuario, es decir, la caída de un nodo o servidor de base de datos puede no implicar cortes en el aplicativo o interrupciones al usuario.
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;
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;
Etiquetas:
espacio asignado,
espacio libre,
espacio usado,
tablespace
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:
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.
sábado, 5 de noviembre de 2011
Análisis del rendimiento (performance) de una base de datos
Para realizar un correcto análisis del rendimiento (performance) de una base de datos debemos primero conocer el entorno donde se encuentra. Necesitamos por tanto, conocer lo siguiente:
Asimismo, necesitamos contar con información estadística de los siguientes datos del comportamento del servidor en el intervalo de tiempo que se requiere analizar:
- El sistema operativo (S.O.) del servidor
- La versión de la base de datos
- Distribución de disco y tipo de RAID usado por las unidades, file system o volumn groups segun corresponda
- Mapa de la RED a donde esta conectado el servidor
- El tipo de uso que tiene la BD, es decir, si es transaccional (OLTP), es es un dataware (DSS) o una combinación de ambos.
- Qué otros servicios corren en el servidor de base de datos
Asimismo, necesitamos contar con información estadística de los siguientes datos del comportamento del servidor en el intervalo de tiempo que se requiere analizar:
- Uso de RED
- Uso de CPU
- Uso de Memoria
- Uso de swap, paginación según corresponda.
domingo, 2 de mayo de 2010
Cómo subir/bajar el dbconsole (aplica para Oracle 10g, 11g)
Si estamos trabajando en un entorno UNIX/Linux debemos de saber con qué shell estamos trabajando. (Nota El simbolo # indica es un comentario)
INSTRUCTIVO
Abrir un terminal al servidor con el usuario propietario de la instalación (puede usar putty, telnet desde una ventana DOS, vnc u otra interface)
# Con el siguiente comando averiguo
echo $SHELL
# Si el servidor UNIX/Linux donde estamos trababajando tiene mas de una BD
# entonces debemos de asegurarnos que estamos en la instancia que corresponde a
# la BD sobre la cual queremos levantar el dbconsole.
# visualizar la variable de entorno ORACLE_SID
echo $ORACLE_SID
# asignar un valor a la variable de entorno
export ORACLE_SID=NOMBINST
echo $ORACLE_HOME
echo $PATH
which emctl
# Para subir el dbconsole puede usar el siguiente comando
emctl start dbconsole
# Para bajar el dbconsole puede usar el siguiente comando
emctl stop dbconsole
INSTRUCTIVO
Abrir un terminal al servidor con el usuario propietario de la instalación (puede usar putty, telnet desde una ventana DOS, vnc u otra interface)
# Con el siguiente comando averiguo
echo $SHELL
# Si el servidor UNIX/Linux donde estamos trababajando tiene mas de una BD
# entonces debemos de asegurarnos que estamos en la instancia que corresponde a
# la BD sobre la cual queremos levantar el dbconsole.
# visualizar la variable de entorno ORACLE_SID
echo $ORACLE_SID
# asignar un valor a la variable de entorno
export ORACLE_SID=NOMBINST
echo $ORACLE_HOME
echo $PATH
which emctl
# Para subir el dbconsole puede usar el siguiente comando
emctl start dbconsole
# Para bajar el dbconsole puede usar el siguiente comando
emctl stop dbconsole
lunes, 7 de mayo de 2007
Analizando sentencias SQL con base de datos Oracle
Para analizar las sentencias SQL con bases de datos Oracle contamos con las siguientes herramientas propias del Oracle, sin embargo, también es necesario conocer de mejores prácticas de programación y diseño para poder recomendar cambios para optimizar una sentencia SQL.
EXPLAIN PLAN
AUTOTRACE
SQL Trace
TKPROF
EXPLAIN PLAN
AUTOTRACE
SQL Trace
TKPROF
domingo, 6 de mayo de 2007
Backups o Respaldos de base de datos
Es necesario que los backups o respaldos de las base de datos esten acordes con las necesidades de negocio de la empresa u organización a la que pertenecen.
Los backups en frio (off-line) de bases de datos Oracle se usan en empresas/negocios que hacen uso de la BD solo en horarios de oficina o solo en días laborables por ejemplo lo que permite aprovechar las horas de la madrugada o fines de semana para bajar los servicios de los sistemas que trabajan con la BD y la BD misma para poder tomar el backup en frio (off-line). A este tipo de backup tambien se le conoce como backup CONSISTENTE porque todos los archivos estan sincronizados (tiene la misma hora de actualización) y en caso de una restauración no requieren de archivos de cambios (archivos) para que puedan ser abierta la base de datos.
-- SQL para obtener un listado de archivos de la base de datos Oracle que necesita incluir en un backup en frio (off-line)
SELECT 'DATAFILE' AS TIPO, NAME
FROM V$DATAFILE
UNION ALL
SELECT 'TEMPFILE' AS TIPO, NAME
FROM V$TEMPFILE
UNION ALL
SELECT 'CONTROLFILE' AS TIPO, NAME
FROM V$CONTROLFILE
UNION ALL
SELECT 'ONLINE REDO LOG FILE' AS TIPO, MEMBER
FROM V$LOGFILE;
Los backups en caliente (on-line) de bases de datos Oracle se usan en empresas/negocios que no pueden detener sus base de datos, es decir, que operan las 24 horas de día sin interrupción. A este tipo de backup tambien se le conoce como backup INCONSISTENTE porque los archivos no estan sincronizados (no tiene la misma hora de actualización) y en caso de una restauración requieren de archivos de cambios (archives) para que pueda ser abierta la base de datos.
-- SQL para obtener un listado de archivos de la base de datos Oracle que necesita incluir en un backup en caliente (on-line)
SELECT 'DATAFILE' AS TIPO, NAME
FROM V$DATAFILE;
-- Adicionalmente es necesario contar con un respaldo de los archivos de cambios (archives)
Los backups en frio (off-line) de bases de datos Oracle se usan en empresas/negocios que hacen uso de la BD solo en horarios de oficina o solo en días laborables por ejemplo lo que permite aprovechar las horas de la madrugada o fines de semana para bajar los servicios de los sistemas que trabajan con la BD y la BD misma para poder tomar el backup en frio (off-line). A este tipo de backup tambien se le conoce como backup CONSISTENTE porque todos los archivos estan sincronizados (tiene la misma hora de actualización) y en caso de una restauración no requieren de archivos de cambios (archivos) para que puedan ser abierta la base de datos.
-- SQL para obtener un listado de archivos de la base de datos Oracle que necesita incluir en un backup en frio (off-line)
SELECT 'DATAFILE' AS TIPO, NAME
FROM V$DATAFILE
UNION ALL
SELECT 'TEMPFILE' AS TIPO, NAME
FROM V$TEMPFILE
UNION ALL
SELECT 'CONTROLFILE' AS TIPO, NAME
FROM V$CONTROLFILE
UNION ALL
SELECT 'ONLINE REDO LOG FILE' AS TIPO, MEMBER
FROM V$LOGFILE;
Los backups en caliente (on-line) de bases de datos Oracle se usan en empresas/negocios que no pueden detener sus base de datos, es decir, que operan las 24 horas de día sin interrupción. A este tipo de backup tambien se le conoce como backup INCONSISTENTE porque los archivos no estan sincronizados (no tiene la misma hora de actualización) y en caso de una restauración requieren de archivos de cambios (archives) para que pueda ser abierta la base de datos.
-- SQL para obtener un listado de archivos de la base de datos Oracle que necesita incluir en un backup en caliente (on-line)
SELECT 'DATAFILE' AS TIPO, NAME
FROM V$DATAFILE;
-- Adicionalmente es necesario contar con un respaldo de los archivos de cambios (archives)
Suscribirse a:
Entradas (Atom)
