You are on page 1of 8

PRACTICA CALIFICADA DE BASE DE DATOS DISTRIBUIDOS ORACLE (WINDOWS), MySQL (CENTOS)

Una empresa de supermercados tiene un sistema de base de datos distribuidos de almacenes. En un nodo se tiene instalado un sistema operativo de Microsoft, y sobre este la base de datos Oracle. En el otro, un sistema operativo Linux (Centos) y sobre el, la base de datos de MySQL. La figura siguiente muestra algunas caractersticas necesarias para las consultas distribuidas.

Adems, se sabe que en cada una de las bases de datos de los nodos se tiene las siguientes tablas.

ALMACENES PK codigo lugar capacidad number(2) varchar(10) number FK PK

CAJAS numreferencia contenido valor almacen char(5) varchar(50) number number(2)

1) Crear un usuario almacen1 y password almacen1 en la base de datos Oracle. Dar roles de DBA y activar todos los privilegios del sistema de base de datos al nuevo usuario. Asignar con el mismo nombre, el password o clave del nuevo usuario. Crear un usuario almacen2 en la base de datos MySQL.

a. Con el VMWare abrir el nucleo del sistema operativo Linux (Centos) b. Ingresar como usuario root y password: 123456 c. Abrir un Terminal o Shell. En el prompt #:

d. # mysql e. En el prompt mysql: f. mysql > show databases;

g. mysql > connect test; h. mysql > grant all on test.* to almacen2;

2) Hacer login con el nuevo usuario y crear las dos tablas: ALMACENES Y CAJAS. EN ORACLE: create table almacenes (codigo number(2) primary key, lugar varchar(10), capacidad number); create table cajas (numreferencia char(5) primary key, contenido varchar(50), valor number, almacen number(2) references almacenes(codigo)); EN MySQL: create table almacenes (codigo int(2) primary key, lugar varchar(10), capacidad int); create table cajas (numreferencia char(5) primary key, contenido varchar(50), valor int, almacen int(2) references almacenes(codigo));

3) Insertar las siguientes filas en las tablas ALMACENES Y CAJAS. EN ORACLE: insert into almacenes values(1,'sector1',400); insert into almacenes values(2,'sector2',100); insert into almacenes values(3,'sector2',200); insert insert insert insert insert into into into into into cajas cajas cajas cajas cajas values('f58','impresora ink jet',2000,1); values('pq54','tv',100,2); values('t302','grabadora',5000,2); values('e55','licuadora',2255,3); values('zx21','plancha',149,3);

EN MySQL: insert into almacenes values(4,'sector4',500); insert into almacenes values(5,'sector5',3); insert into almacenes values(6,'sector4',900);
2

insert into almacenes values(7,'sector7',106); insert insert insert insert insert into into into into into cajas cajas cajas cajas cajas values('lx66','aspiradora',1010,5); values('ss25','lustradora',3001,6); values('ss26','radios',302,5); values('ss27','cocinas',35,4); values('ss28','videograbadora',38,5);

4) Desactivar el firewall de Windows. 5) Identificar el IP de la PC y el de la Maquina Virtual, utilizando el CMD (Consola del MS-DOS) y el comando PING. 6) Elaborar las consultas distribuidas utilizando la plataforma IDE (Integrated Development Environment) del Neatbeans. 6.1) Obtener todos los datos de los almacenes? select * from almacenes; 6.2) Obtener todas las cajas cuyo contenido tenga un valor superior a 200 soles? select * from cajas where valor > 200; 6.3) Obtener el valor medio de las cajas de cada almacen? select almacen, avg(valor) from cajas group by almacen; 6.4) Obtener los codigos de los almacenes en los cuales el valor medio de las cajas sea superior a 100 soles? select almacen, avg(valor) from cajas group by almacen having avg(valor) > 100; 6.5) Obtener el numero de cajas que hay en cada almacen? select almacen, count(*) from cajas group by almacen; 6.6) Obtener los codigos de los almacenes que estan saturados (los almacenes donde el numero de cajas es superior a la capacidad)? select codigo from almacenes where capacidad < (select count(*) from cajas where almacen = codigo); 6.7) Obtener los numeros de referencia de las cajas que estan en el sector7? select numreferencia from cajas where almacen in (select codigo from almacenes where lugar = 'sector7'); 6.8) Insertar un nuevo almacen en el sector5 con capacidad para 3 cajas? insert into almacenes(codigo, lugar,capacidad) values(8,'sector5',3); 6.9) Insertar una nueva caja, con numero de referencia h5rt, con contenido papel, valor 200, y situada en el almacen 2? insert into cajas values('h5rt','papel',200,2); CODIGO DE CONEXION package javaapplication7; import java.sql.*; public class Main { public static void main(String[] args) { String n = ""; int c = 0, c1 = 0; try{ DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); Connection conexion DriverManager.getConnection("jdbc:oracle:thin:@PC:XE","almacen1","almacen1"); System.out.println("Conexion Hecha"); } catch(SQLException error){ System.out.println("Existe un ERROR: "+error);
3

} try{ DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); Connection conexion = DriverManager.getConnection("jdbc:oracle:thin:@PCVM:1521:XE","almacen2","almacen2"); System.out.println("Conexion Hecha"); } catch(SQLException error){ System.out.println("Existe un ERROR: "+error); } } } CODIGO DE CONSULTA DISTRIBUIDA package javaapplication7; import java.sql.*; public class programa_consulta { public static void main(String[] args) { int c = 0, c1 = 0; String n = ""; try{ DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); Connection conexion DriverManager.getConnection("jdbc:oracle:thin:@PC:1521:XE","almacen1","almacen1"); Statement sentenciaSQL = conexion.createStatement(); ResultSet p=sentenciaSQL.executeQuery("select * from almacenes");

while( p.next()){ c = p.getInt("CODIGO"); n = p.getString("LUGAR"); c1 = p.getInt("CAPACIDAD"); System.out.println("CODIGO: "+c+" LUGAR: "+n+" CAPACIDAD: "+c1); } p.close(); conexion.close(); sentenciaSQL.close(); } catch(SQLException error){ System.out.println("Existe un ERROR: "+error); } try{ DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); Connection conexion = DriverManager.getConnection("jdbc:oracle:thin:@PCVM:1521:XE","almacen2","almacen2"); Statement sentenciaSQL = conexion.createStatement(); ResultSet p=sentenciaSQL.executeQuery("select * from almacenes "); while( p.next()){ c = p.getInt("CODIGO"); n = p.getString("LUGAR"); c1 = p.getInt("CAPACIDAD"); System.out.println("CODIGO: "+c+" LUGAR: "+n+" CAPACIDAD: "+c1); } p.close(); conexion.close(); sentenciaSQL.close(); } catch(SQLException error){ System.out.println("Existe un ERROR: "+error); } } }
4

Aadir el Driver de Java-Oracle Escoger la opcin Libraries del men Tools del Netbeans y oprimir el botn New Library... En Library Name darle el nombre MiOracle y dar clic en Ok.

Escoger de Libraries la nueva librera MiOracle y en Classpath escoger Add JAR/Flder...

Desplegar la ventana Projects y seleccionar el proyecto donde se va a desarrollar el programa. Dar clic derecho en Libraries y escoger la opcin Add Library... Cuando aparezca la ventana Add Library, seleccionar MiOracle y LISTO!!!!

VERIFICAR LA CONEXIN Primero, antes de desarrollar un programa en forma, se debe verificar si se logra la conexin de Java Netbeans con respecto al driver de Oracle.

Y AHORA UNA CONSULTA Y LA IMPRESIN DE SUS RESULTADOS

PARA MySQL

You might also like