Mostrando entradas con la etiqueta Bases de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bases de datos. Mostrar todas las entradas

jueves, 14 de marzo de 2013

Oracle Drop Schema

La manera en que uno borra una base de datos en Oracle (típico DROP SCHEMA), o al menos la forma que conozco, es borrando el usuario dueño del esquema con la opción de cascada:

sqlplus "/ as sysdba";
SQL> drop user user_name cascasde;

Oracle: Importar/Exportar un dump


Una actividad muy recurrente cuando se manejan bases de datos es la de exportar algún esquema para respaldar la base de datos, y luego importarla para restaurar un esquema a un estado en particular.

En Oracle esto se puede hacer desde la línea de comandos usando "expdp" y "impdp" para exportar un dump e importar un dump.

expdp db_user/db_pass schemas=schema_name dumpfile=file_name.dmp
impdp db_user/db_pass schemas=schema_name dumpfile=file_name.dmp

El comando exporta el dump en el path donde está instalado el Oracle. En mi caso lo tira en este directorio:

/usr/lib/oracle/xe/app/oracle/admin/XE/dpdump/

A la hora de importarlo hay que colocarlo ahí tambien puesto que el comando no permite indicar el path  en el parámetro del archivo.

viernes, 19 de febrero de 2010

Herramienta de monitereo de BD: MONyog


Un compañero de trabajo me presentó esta herramienta muy útil para diagnosticar el estado de la base de datos con respecto a muchas áreas como rendimiento, seguridad, usuarios, etc.

Lo más llamativo en lo personal es el "dashboard" que hace una evaluación marcando en blanco (ninguno), amarillo (leve), y rojo (grave), los puntos que necesitan ser revisados acorde con las mejores prácticas y convenciones. Por ejemplo en el screen shot de arriba señala que está como grave el porcentaje de "full table scans" o escaneos totales de tablas. Este indicador nos dice que probablemente no haya una buena estrategia de indices en nuestras tablas que está produciendo que las consultas requieran escaneos completos.

La herramienta no es gratuita pero tiene un version de prueba que en nuestro caso nos sirvió para monitorear por un mes nuestra base de datos y descubrir las razones por las cuales teníamos un bajo rendimiento.

martes, 19 de enero de 2010

MySQL Workbench: Una opción para crear tus diagramas ER



Hace un tiempo estuve "googleando" para encontrar alguna herramienta gratuita para diseñar diagramas de entidad relación (ER) y extrañamente no pude hallar ninguna rápidamente. De hecho ni siquiera me tomé la molestia de descargar algunas de las aparentemente "freeware" que estaban disponibles porque no me daban buena espina.

Un día de estos buscando la página para descargar MySQL Admin, el cual es un cliente gestor de bases de datos MySQL, me di cuenta que existia otra herramienta de la misma gente de desarrollo: MySQL Workbench. Esta herramienta tiene varias utilidades que no he explorado bien aún pero me llamó la atención que tiene justo lo que andaba buscando. MySQL Workbench permite no solamente diseñar los diagramas desde cero, sino que también provee la posibilidad de aplicar ingenieria inversa para generar el diagrama a partir de una base de datos existente.

Esta opción de ver los diagramas actualizados con la BD era algo que resentía no tener en MySQL y que por el contrario siempre ha sido parte de MS SQL Server, al menos desde que comencé a usarlo en la versión 2000. Sin duda MySQL junto con las herramientas que lo acompañan cada vez resulta ser una opción más competitiva y robusta para el desarrollo de base de datos. Ya no es como en los tiempos en que el profesor nos decía que si necesitabamos una BD sin mucha complejidad usaramos MySQL.

miércoles, 16 de diciembre de 2009

Provincias, Cantones y Distritos

Un típico problema a resolver para los programadores de Costa Rica en aplicaciones locales ,es manejar los catálogos de provincias, cantones y distritos (PCD's). La relación de estos tres catálogos refleja una relación jerárquica donde una provincia agrupa cantones y un cantón agrupa distritos.

Así lucen los scripts para crear estas tablas en una base de datos MySQL:

Provincia:
DROP TABLE IF EXISTS `PROVINCIA_CR`;
CREATE TABLE `PROVINCIA_CR` (
  `codigo_provincia` smallint(5) unsigned NOT NULL auto_increment,
  `nombre_provincia` varchar(45) NOT NULL,
  PRIMARY KEY  USING BTREE (`codigo_provincia`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

Cantón:
DROP TABLE IF EXISTS `CANTON_CR`;
CREATE TABLE `CANTON_CR` (
  `codigo_canton` smallint(5) unsigned NOT NULL,
  `codigo_provincia` smallint(5) unsigned NOT NULL,
  `nombre_canton` varchar(45) NOT NULL,
  PRIMARY KEY  USING BTREE (`codigo_canton`),
  KEY `FK_CANTON_PROVINCIA` (`codigo_provincia`),  
  CONSTRAINT `FK_CANTON_PROVINCIA` FOREIGN KEY (`codigo_provincia`) REFERENCES `PROVINCIA_CR` (`codigo_provincia`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Distrito:


DROP TABLE IF EXISTS `DISTRITO_CR`;
CREATE TABLE `DISTRITO_CR` (
  `codigo_distrito` int(10) unsigned NOT NULL,
  `codigo_canton` smallint(5) unsigned NOT NULL,
  `nombre_distrito` varchar(45) NOT NULL,  
  PRIMARY KEY  (`codigo_distrito`),
  KEY `FK_DISTRITO_CANTON` (`codigo_canton`),
  CONSTRAINT `FK_DISTRITO_CANTON` FOREIGN KEY (`codigo_canton`) REFERENCES `CANTON_CR` (`codigo_canton`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Hace poco necesitaba crear estos catálogos y tuve que darme a la tediosa tarea de manipular una página html con el contenido de las PCD's para poder generar las inserciones a la base de datos. Así que dejo a disposición dos documentos para cualquiera que les sea útil:
  1. Documento hoja de cálculo con toda la información necesaria. Se puede editar para generar las inserciones para otro administrador de BD que no sea MySQL.
  2. Documento con los scripts para crear las tablas y las inserciones.
En este otro artículo muesto como crear la serie de selectores para una interfaz web.