Las llaves primarias o primary key son necesarias en una tabla para poder evitar duplicidad, es decir, identificar de manera inequívoca un registro.
Un ejemplo clásico son tablas que registran datos de personas como empleados en los que por lo general tiene una columna de documento de identidad también conocido como Cédula de Ciudadanía (CC), Tarjeta de Identidad (TI), Registro Civil (RC), Cédula de Extranjería (CE), Carné de Identidad (CI), Cédula de Identidad (CI), Documento Nacional de Identidad (DNI), Documento Único de Identidad(DUI), identificación oficial o simplemente identificación (ID).
Los siguientes países: Australia, Canadá, Dinamarca, Irlanda, Estados Unidos, Japón y Reino Unido no tienen documento nacional de identidad, sin embargo, cuando crean una tabla de personas en sus bases de datos es indispensable tener un código interno para poder relacionar los datos de la tabla de personas con las demás tablas que contengan datos relacionados a la persona a través del código interno.
DB Academia: Blog de especializado en temas de base de datos
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
domingo, 4 de octubre de 2015
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
Suscribirse a:
Entradas (Atom)