PRÁCTICA DE SISTEMAS GESTORES DE BASES DE DATOS

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PRÁCTICA DE SISTEMAS GESTORES DE BASES DE DATOS"

Transcripción

1 PRÁCTICA DE SISTEMAS GESTORES DE BASES DE DATOS UNIVERSIDAD DE LAS ISLAS BALEARES SISTEMAS GESTORES DE BASES DE DATOS 2006 / 2007 Alumno:

2 Índice de contenido 1.Instalación de Oracle Acontecimientos Soluciones Práctica Apartado (a) Crear usuario SGBD Crear usuario SGBD Creación de tablas Ficheros de control Apartado (b) Tablas Restricciones Esquemas de secuencia y disparadores Apartado (c) Rellenar la tabla Cliente de SGBD2 a partir de Clientes de SGBD Rellenar la tabla Fondo de SGBD2 a partir de Valores de SGBD Rellenar la tabla Cuenta de SGBD2 a partir de Clientes de SGBD Rellenar la tabla Contratar de SGBD2 a partir de Clientes de SGBD Rellenar la tabla Valor de SGBD2 a partir de Valores de SGBD Rellenar la tabla Venta de SGBD2 a partir de Ventas de SGBD Rellenar la tabla Generar de SGBD2 a partir de Ventas de SGBD Apartado (d) Plan de ejecución Práctica Organización física propuesta Atributos físicos de cada una de las tablas Cláusula de Almacenamiento Estimación del tamaño de los índices Creación de los dos tablespaces Creación del usuario SGBD Creación de las tablas para SGBD Crear las restricciones Cuenta Contratar Valor Compra Venta Generar

3 3.9.Crear los esquemas de secuencia y disparadores Compra Venta Cargar los datos Problema Optimización de la consulta Nuevo plan de ejecución ANEXO 1: Logs arrojados por SQL Loader control.log de la tabla CLIENTES control.log de la tabla VALORES control.log de la tabla COMPRAS control.log de la tabla VENTAS

4 1. Instalación de Oracle 1.1. Acontecimientos Seguidos todos los pasos indicados en el PDF colgado en la web de la asignatura. Instalado en un disco auxiliar. Funciona correctamente aunque existen problemas con el listener. He tratado de configurar el fichero tsnames.ora y el listeners.ora; estoy convencido de que se trata de problemas con el nombre del host. Durante la instalación obtuve dos mensajes de aviso sobre posibles problemas con el acceso por red y efectivamente los pronósticos se han cumplido. Cómo consecuencia de ello: No puedo acceder al Enterprise Database Manager. No puedo acceder a isql *Plus Soluciones Documentación consultada: file:///d:/oracle%2010g%20r2/database/doc/install.102/b14316/reqs.htm#b ABGHEFB La dirección IP se obtiene mediante DHCP, en el manual de instalación se propone instalar un adaptador de bucle invertido, solución adoptada, desactivar el DHCP para hacer la práctica. Se necesita un mínimo de 256 MB de RAM, y mi PC únicamente tiene 239 MB ya que la restante la usa la tarjeta gráfica cómo memoria compartida. Tras la reinstalación los problemas parecen haberse resuelto, ya tengo acceso vía http. Al iniciar el sistema y tratar de conectarme al enterprise manager aparece un mensaje de página no encontrada en el explorador. Tras buscar información en Google llego a la conclusión de que debo ejecutar el comando <emctl start dbconsole>, el resultado inmediato es un mensaje de error indicando que la variable de entorno oracle_sid no está definida, por lo tanto tras ejecutar <set ORACLE_SID=SGBD> ejecuto de nuevo el comando anterior y el problema desaparece. No entiendo porque las dos primeras veces funcionó, iniciándose automáticamente, y luego dejo de hacerlo. A veces es necesario inicial e listener nualmente mediante el comando <lsnrctl start>. 4

5 2. Práctica Apartado (a) Crear usuario SGBD1 Documentación consultada: file:///d:/b19306_01/server.102/b14196/users_secure004.htm#sthref Conectarse al Enterprise Manager cómo SYSTEM. 2. Ir a Administración -> Usuarios (en Esquema, Usuarios y Privilegios) -> Crear. 3. Sentencia SQL: CREATE USER "SGBD1" PROFILE "DEFAULT" IDENTIFIED BY "*******" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON "USERS" ACCOUNT UNLOCK GRANT CREATE TABLE TO "SGBD1" GRANT "CONNECT" TO "SGBD1" CONNECT es el rol que tiene asignado todos los privilegios necesarios para iniciar una sesión en Oracle (es decir únicamente el privilegio de sistema CREATE SESSION). CREATE TABLE nos permitirá crear tablas en nuestro tablespace así cómo llenarlas. Se le asigna una cuota ilimitada sobre su tablespace por defecto (si no se indicara cuota no podría crear objetos). Documentación para asignar permisos (privilegios): file:///d:/b19306_01/network.102/b14266/authoriz.htm#dbseg5000 file:///d:/b19306_01/network.102/b14266/authoriz.htm#i Crear usuario SGBD2 CREATE USER "SGBD2" PROFILE "DEFAULT" IDENTIFIED BY "*******" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON "USERS" ACCOUNT UNLOCK 5

6 GRANT CREATE TABLE TO "SGBD2" GRANT CREATE TRIGGER TO "SGBD2" GRANT "CONNECT" TO "SGBD2" Ahora conectándose con SGBD1 le asignamos permisos al recien creado SGBD2 para consultar sus tablas: grant select on clientes to sgbd2; grant select on valores to sgbd2; grant select on compras to sgbd2; grant select on ventas to sgbd2; Creación de tablas Nota: los valores numéricos tienen cómo mucho 5 decimales en aquellos casos en que sea necesario. Crear tabla CLIENTES create table clientes ( dni varchar2(9) not null, nombre varchar2(15) not null, apellido1 varchar2(20) not null, apellido2 varchar2(20), numero varchar2(20) not null, isin varchar2(12) not null, fechaapertura date not null, fechabaja date, constraint clientes_pk primary key (dni) ); Al importar los datos se ve que la clave primaria no se cumple por tanto la eliminamos -> alter table clientes drop constraint clientes_pk; Crear tabla VALORES create table valores( isin varchar2(13) not null, nombre varchar2(51) not null, fecha date not null, cotizacion number(38,5) not null, constraint valores_pk primary key (isin,fecha) ); 6

7 Al importar los datos se ve que la clave primaria no se cumple por tanto la eliminamos -> alter table valores drop constraint valores_pk; Crear tabla COMPRAS Para ser coherentes con las demás tablas suponemos: DNIs de 9 caracteres. Identificadores de fondo de 12 caracteres. Números de cuenta de 20 caracteres. create table compras( dni varchar2(9) not null, nombre varchar2(20) not null, apellido1 varchar2(20) not null, apellido2 varchar2(20), isin varchar2(12) not null, fondo varchar2(50) not null, cuenta varchar2(20) not null, fecha date not null, participaciones number(38,5) not null, precio number(38,5) not null, constraint compras_pk primary key (dni,fecha) ); Una operación cómo máximo al día (repercute en la clave primaria elegida) -> Esta regla no se cumple por lo que se eliminará la restricción; -> alter table compras drop constraint compras_pk; Crear tabla VENTAS Para ser coherentes con las demás tablas suponemos: DNIs de 9 caracteres. Identificadores de fondo de 12 caracteres. Números de cuenta de 20 caracteres. create table ventas( dni varchar2(9) not null, nombre varchar2(20) not null, apellido1 varchar2(20) not null, apellido2 varchar2(20), isin varchar2(12) not null, fondo varchar2(50) not null, cuenta varchar2(20) not null, fecha date not null, 7

8 precio number(38,5) not null, participaciones number(38,5) not null, fechacompra date not null, constraint ventas_pk primary key (dni,fecha) ); Una operación cómo máximo al día (repercute en la clave primaria elegida). -> Esta regla no se cumple por lo que se eliminará la restricción; -> alter table ventas drop constraint ventas_pk; Ficheros de control Documentación SQL*Loader utilizada: #i (fichero de control). Links Google: (fichero de control). (máscara de fechas en el fichero de control). (registros de longitud variable). (optionally enclosed). Sintaxis a usar desde la línea de comandos: <sqlldr userid=sgbd1/sgbd1,control=fichero_de_control,data=fichero_de_datos> dónde fichero_de_control contiene toda las directivas propias de SQL*Loader para que pueda trasladar oportunamente los datos desde el fichero_de_datos hasta la tabla especificada en el propio fichero. Importar datos en la tabla CLIENTES 8

9 Este fichero se encuentra en formato o longitud fija. Cada registro del fichero tiene 134 bytes de longitud (contando un byte por carácter). Archivo de control usado: LOAD DATA APPEND INTO TABLE clientes( dni POSITION(01:09) CHAR, nombre POSITION(10:24) CHAR, apellido1 POSITION(25:44) CHAR, apellido2 POSITION(45:64) CHAR NULLIF apellido2=blanks, numero POSITION(65:84) CHAR, isin POSITION(85:96) CHAR, fechaapertura POSITION(97:115) DATE "DD/MM/YYYY HH24:MI:SS", fechabaja POSITION(116:134) DATE "DD/MM/YYYY HH24:MI:SS") Importar datos en la tabla VALORES Este fichero se encuentra en formato o longitud fija al igual que el anterior. Cada registro del fichero tiene 122 bytes de longitud. Archivo de control usado: LOAD DATA APPEND INTO TABLE valores( isin POSITION(01:13) CHAR, nombre POSITION(14:64) CHAR, fecha POSITION(65:84) DATE "DD/MM/YYYY", cotizacion POSITION(85:122) CHAR "TO_NUMBER(:cotizacion)") Importar datos en la tabla COMPRAS Este fichero se encuentra en formato o longitud variable, con campos separados por el carácter ';'. Archivo de control usado: LOAD DATA APPEND INTO TABLE compras( 9

10 dni CHAR TERMINATED BY ";" ENCLOSED BY '"', nombre CHAR TERMINATED BY ";" ENCLOSED BY '"', apellido1 CHAR TERMINATED BY ";" ENCLOSED BY '"', apellido2 CHAR TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"', -- este campo puede no estar presente isin CHAR TERMINATED BY ";" ENCLOSED BY '"', fondo CHAR TERMINATED BY ";" ENCLOSED BY '"', cuenta CHAR TERMINATED BY ";" ENCLOSED BY '"', fecha DATE "DD/MM/YYYY HH24:MI:SS" TERMINATED BY ";", participaciones CHAR TERMINATED BY ";" "TO_NUMBER(:participaciones)", precio CHAR TERMINATED BY "\n" "TO_NUMBER(:precio)") Importar datos en la tabla VENTAS Este fichero se encuentra en formato o longitud variable, con campos separados por el carácter ';'. Archivo de control usado: LOAD DATA APPEND INTO TABLE ventas( dni CHAR TERMINATED BY ";" ENCLOSED BY '"', nombre CHAR TERMINATED BY ";" ENCLOSED BY '"', apellido1 CHAR TERMINATED BY ";" ENCLOSED BY '"', apellido2 CHAR TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"', -- este campo puede no estar presente isin CHAR TERMINATED BY ";" ENCLOSED BY '"', fondo CHAR TERMINATED BY ";" ENCLOSED BY '"', cuenta CHAR TERMINATED BY ";" ENCLOSED BY '"', fecha DATE "DD/MM/YYYY HH24:MI:SS" TERMINATED BY ";", precio CHAR TERMINATED BY ";" "TO_NUMBER(:precio)", participaciones CHAR TERMINATED BY ";" "TO_NUMBER(:participaciones)", fechacompra DATE "DD/MM/YYYY HH24:MI:SS" TERMINATED BY "\n") 2.2. Apartado (b) Tablas Cliente create table cliente( dni varchar2(9) not null, 10

11 nombre varchar2(15) not null, apellido1 varchar2(20) not null, apellido2 varchar2(20), constraint cliente_pk primary key (dni) ); Cuenta create table cuenta( numero varchar2(20) not null, isin varchar2(12) not null, fechaapertura date not null, fechabaja date, numerotitulares number(5) not null, constraint cuenta_pk primary key (numero) ); Contratar create table contratar( cuenta varchar2(20) not null, cliente varchar2(9) not null, constraint contratar_pk primary key (cuenta, cliente) ); Fondo create table fondo( isin varchar2(12) not null, nombre varchar2(50) not null, fechacreacion date not null, constraint fondo_pk primary key (isin) ); Valor create table valor( isin varchar2(12) not null, fecha date not null, cotizacion number(38,5) not null, constraint valor_pk primary key (isin, fecha) ); Compra create table compra( operacion integer not null, 11

12 cuenta varchar2(20) not null, fecha date not null, ordenante varchar2(9) not null, participaciones number(38,5) not null, precio number(38,5) not null, constraint compra_pk primary key (operacion) ); Venta create table venta( operacion integer not null, cuenta varchar2(20) not null, fecha date not null, ordenante varchar2(9) not null, precio number(38,5) not null, constraint venta_pk primary key (operacion) ); Generar create table generar( compra integer not null, venta integer not null, participaciones number(38,5) not null, constraint generar_pk primary key (compra,venta) ); Restricciones Cuenta alter table cuenta add constraint cuenta_fk foreign key (isin) references fondo (isin); Contratar alter table contratar add constraint contratar_fk1 foreign key (cuenta) references cuenta (numero); alter table contratar add constraint contratar_fk2 foreign key (cliente) references cliente (dni); Valor alter table valor add constraint valor_fk foreign key (isin) references fondo (isin); Compra 12

13 alter table compra add constraint compra_fk1 foreign key (cuenta) references cuenta (numero); alter table compra add constraint compra_fk2 foreign key (ordenante) references cliente (dni); Venta alter table venta add constraint venta_fk1 foreign key (cuenta) references cuenta (numero); alter table venta add constraint venta_fk2 foreign key (ordenante) references cliente (dni); Generar alter table generar add constraint generar_fk1 foreign key (compra) references compra (operacion); alter table generar add constraint generar_fk2 foreign key (venta) references venta (operacion); Esquemas de secuencia y disparadores Compra create sequence s_compra increment by 1 start with 1; create or replace trigger InsertarOperacionTcompra before insert on compra for each row begin select s_compra.nextval into :NEW.operacion from dual; end InsertarOperacionTcompra; / Venta create sequence s_venta increment by 1 start with 1; create or replace trigger InsertarOperacionTventa before insert on venta for each row begin select s_venta.nextval into :NEW.operacion from dual; end InsertarOperacionTventa; / 13

14 Al intentar crear la secuencia obtenemos el mensaje de privilegios insuficientes con lo cual mediante el enterprise manager aplicamos la sentencia sql: GRANT CREATE SEQUENCE TO "SGBD2" 2.3. Apartado (c) Rellenar la tabla Cliente de SGBD2 a partir de Clientes de SGBD1 Links Oracle: tm#sqlrf01604 select count(count(dni)) from sgbd1.clientes group by dni; Tenemos clientes diferentes en la tabla. Insert into cliente (dni, nombre, apellido1, apellido2) (select dni, nombre, apellido1, apellido2 from sgbd1.clientes group by dni, nombre, apellido1, apellido2); Rellenar la tabla Fondo de SGBD2 a partir de Valores de SGBD1 El atributo fecha de creación de Fondo se asumirá cómo el valor en que se crea la entrada en la base de datos obtenido mediante la función SYSDATE. Insert into fondo (isin, nombre, fechacreacion) (select isin, nombre, sysdate from sgbd1.valores group by (isin, nombre)); Rellenar la tabla Cuenta de SGBD2 a partir de Clientes de SGBD1 Insert into cuenta (numero, isin, fechaapertura, fechabaja, numerotitulares) (select numero, isin, fechaapertura, fechabaja, count(numero) from sgbd1.clientes group by (numero, isin, fechaapertura, fechabaja)); Rellenar la tabla Contratar de SGBD2 a partir de Clientes de SGBD1 14

15 Hay clientes para los cuales su ocurrencia para una determinada cuenta está repetida: (select numero, dni from sgbd1.clientes group by (numero, dni) having count(*)>1; devuelve el valor de 5 filas). Insert into contratar (cuenta, cliente) (select numero, dni from sgbd1.clientes group by (numero, dni)); Rellenar la tabla Valor de SGBD2 a partir de Valores de SGBD1 Insert into valor (isin, fecha, cotizacion) (select isin, fecha, cotizacion from sgbd1.valores); Rellenar la tabla Compra de SGBD2 a partir de Compras de SGBD1 Cómo mucho existe una operación de compra para una fecha concreta y una determinada cuenta. Insert into compra (cuenta, fecha, ordenante, participaciones, precio) (select cuenta, fecha, dni, participaciones, precio from sgbd1.compras); Rellenar la tabla Venta de SGBD2 a partir de Ventas de SGBD1 Puede haber varias operaciones que compartan todos los campos ya que una venta puede estar compuesta de diversos grupos de participaciones (compras) sobre la misma cuenta. Insert into venta (cuenta, fecha, ordenante, precio) (select cuenta, fecha, dni, precio from sgbd1.ventas group by (cuenta, fecha, dni, precio)); Rellenar la tabla Generar de SGBD2 a partir de Ventas de SGBD1 Insert into generar (compra, venta, participaciones) (select co.operacion, ve.operacion, vs.participaciones from compra co, venta ve, sgbd1.ventas vs where vs.cuenta=co.cuenta and vs.fechacompra=co.fecha and vs.cuenta=ve.cuenta and vs.fecha=ve.fecha and vs.dni=ve.ordenante and vs.precio=ve.precio ); Problemas: SQL> select count(*) 2 from compra co, sgbd1.ventas vs, venta ve 15

16 3 where vs.cuenta=co.cuenta and vs.fechacompra=co.fecha 4 and vs.cuenta=ve.cuenta and vs.fecha=ve.fecha and vs.dni=ve.ordenante and vs.precio=ve.precio; from compra co, sgbd1.ventas vs, venta ve * ERROR en línea 2: ORA-01652: no se ha podido ampliar el segmento temporal con 128 en el tablespace TEMP ORA-27059: no se ha podido reducir el tamaño del archivo OSD-04005: fallo de SetFilePointer(); no se ha podido leer del archivo O/S-Error: (OS 112) Espacio en disco insuficiente. SQL> Insert into generar (compra, venta, participaciones) (select co.operacion, ve.operacion, vs.par ticipaciones from compra co, venta ve, sgbd1.ventas vs 2 where vs.cuenta=co.cuenta and vs.fechacompra=co.fecha 3 and vs.cuenta=ve.cuenta and vs.fecha=ve.fecha and vs.dni=ve.ordenante and vs.precio=ve.precio 4 ); Insert into generar (compra, venta, participaciones) (select co.operacion, ve.operacion, vs.particip * ERROR en línea 1: ORA-01652: no se ha podido ampliar el segmento temporal con 128 en el tablespace TEMP Solución: Modificar el tamaño del tablespace TEMP añadiendo un fichero extra de 1GB. Parece que la solución sigue sin funcionar. Añadir más ficheros. La configuración final queda de la siguiente manera: TEMP01.DBF en E:\ORACLE\PRODUCT\10.2.0\ORADATA\SGBD\ con 4 GB TEMP02.DBF en E:\ORACLE\PRODUCT\10.2.0\ORADATA\SGBD\ con 1 GB TEMP03.DBF en D:\ con 3 GB TEMP04.DBF en D:\ con 3 GB Aún así sigue sin funcionar; llego a la conclusión de que el producto cartesiano que se efectúa con las tres tablas es mucho más grande de lo que imaginé en un principio. Modificar la sentencia SQL para evitar el producto cartesiano de las 3 tablas utilizando para ello subqueries correlacionados. La sentencia resulta: Insert into generar (compra, venta, participaciones) (select (select co.operacion from compra co where vs.cuenta=co.cuenta and vs.fechacompra=co.fecha), (select ve.operacion from venta ve where vs.cuenta=ve.cuenta and vs.fecha=ve.fecha and vs.dni=ve.ordenante and 16

17 vs.precio=ve.precio), vs.participaciones from sgbd1.ventas vs); Cómo verificación: select compra, co.participaciones, venta, ve.precio, ge.participaciones from compra co, venta ve, generar ge where ge.compra=co.operacion and ge.venta=ve.operacion group by compra, co.participaciones, venta, ve.precio, ge.participaciones order by compra, co.participaciones, venta, ve.precio, ge.participaciones; 2.4. Apartado (d) Se tiene en cuenta el número de titulares de cada cuenta asociada a una compra o venta. select comprado, compras, vendido, ventas, vendido - comprado as incremento_patrimonial from (select sum((ge.participaciones*ve.precio)/cu.numerotitulares) as vendido, count(*) as ventas from sgbd2.generar ge, sgbd2.venta ve, sgbd2.cliente cl, sgbd2.cuenta cu where ge.venta=ve.operacion and ve.ordenante=cl.dni and cl.nombre= Balbaner and cl.apellido1= Trinidad and cl.apellido2= Owens and ve.cuenta=cu.numero), (select sum((co.participaciones*co.precio)/cu.numerotitulares) as comprado, count(*) as compras from sgbd2.compra co, sgbd2.cliente cl, sgbd2.cuenta cu where co.cuenta=cu.numero and co.ordenante=cl.dni and cl.nombre='balbaner' and cl.apellido1='trinidad' and cl.apellido2='owens'); Los resultados obtenidos muestran que el cliente de momento sufre pérdidas: Importe gastado en compras: 11732,5005 Número de operaciones: 7 Importe obtenido en ventas: 3125,00013 Número de operaciones: 2 Incremento patrimonial: , Plan de ejecución Plan de Ejecución 17

18 Plan hash value: Id Operation Name Rows Bytes Cost (% CPU) Time SELECT STATEMENT (4) 00:00:04 1 NESTED LOOPS (4) 00:00:04 2 VIEW (0) 00:00:01 3 SORT AGGREGATE NESTED LOOPS (0) 00:00:01 5 NESTED LOOPS (0) 00:00:01 6 NESTED LOOPS (0) 00:00:01 7 TABLE ACCESS FULL GENERAR (0) 00:00:01 8 TABLE ACCESS BY INDEX ROWID VENTA (0) 00:00:01 * 9 INDEX UNIQUE SCAN VENTA_PK 1 0 (0) 00:00:01 10 TABLE ACCESS BY INDEX ROWID CUENTA (0) 00:00:01 * 11 INDEX UNIQUE SCAN CUENTA_PK 1 0 (0) 00:00:01 18

19 * 12 TABLE ACCESS BY INDEX ROWID CLIENTE (0) 00:00:01 * 13 INDEX UNIQUE SCAN CLIENTE_PK 1 0 (0) 00:00:01 14 VIEW (4) 00:00:04 15 SORT AGGREGATE NESTED LOOPS (4) 00:00:04 * 17 HASH JOIN (4) 00:00:04 * 18 TABLE ACCESS FULL CLIENTE (4) 00:00:01 19 TABLE ACCESS FULL COMPRA 107K 4719K 212 (3) 00:00:03 20 TABLE ACCESS BY INDEX ROWID CUENTA (0) 00:00:01 * 21 INDEX UNIQUE SCAN CUENTA_PK 1 0 (0) 00:00:01 3. Práctica Organización física propuesta Tabla Filas Tipo de Tabla Motivos FONDO 14 NORMAL La tabla presenta un número muy bajo de filas y no mejoraría para nada el rendimiento utilizar una estructura de tabla especial. VALOR PARTICION ADA (RANGO) Este tipo de tabla (particionando por rango) ofrece un buen rendimiento para particionar datos de carácter histórico. En este caso definiremos 11 particiones una para cada uno 19

20 CONTRAT AR IOT de los años para los que disponemos de cotización (de 1995 a 2005). La tabla presenta pocas columnas y un número considerable de filas; cómo vimos en clase este puede ser el caso dónde las tablas IOT ofrezcan mayores beneficios. CUENTA IOT Aunque presenta más columnas que el caso anterior conseguiremos un acceso más rápido (las filas están ordenadas) y ahorraremos espacio de almacenamiento (no duplicamos la clave primaria). COMPRA CLUSTER (1) 0 CLIENTE CLUSTER (1) GENERAR CLUSTER (2) VENTA CLUSTER (2) (1) Ambas tablas pertenecerán al mismo clúster. (2) Ambas tablas pertenecerán al mismo clúster. Ambas tablas se relacionan por una restricción de integridad referencial (ordenante=dni) y suelen accederse juntas mediante un join. Ambas tablas se relacionan por una restricción de integridad referencial (venta=operacion) y suelen accederse juntas mediante un join Atributos físicos de cada una de las tablas Tabla Filas Tipo de Tabla Atributos FONDO 14 NORMAL La tabla posee un número de valores pequeño y con escasa (o nula) actividad de operaciones de inserción, eliminación o actualización, se recomienda por lo tanto un valor del 5% para PCTFREE y 20% para PCTUSED. VALOR PARTICION ADA (RANGO) CONTRAT AR IOT Existe una operación de inserción diaria y las actualizaciones podemos considerarlas cómo nulas, luego un valor del 5% para PCTFREE y 60% para PCTUSED es razonable. Se prioriza el uso adecuado del espacio libre. En este caso se reserva poco espacio para actualizaciones y un valor normal para garantizar un adecuado uso del espacio. Un 5% para PCTFREE y 50% para PCTUSED parece 20

21 adecuado. CUENTA IOT Cómo en el caso anterior, se reserva poco espacio para actualizaciones y un valor normal para garantizar un adecuado uso del espacio. Un 5% para PCTFREE y 50% para PCTUSED parece razonable. COMPRA CLUSTER (1) Si consideramos las actualizaciones cómo CLIENTE CLUSTER (1) prácticamente nulas, un valor del 5% para PCTFREE y 60% para PCTUSED es razonable. Se prioriza el uso adecuado del GENERAR CLUSTER (2) VENTA CLUSTER (2) espacio libre. De nuevo, si consideramos las actualizaciones cómo prácticamente nulas, un valor del 5% para PCTFREE y 60% para PCTUSED es razonable. Se prioriza el uso adecuado del espacio libre. (1) Ambas tablas pertenecerán al mismo clúster. (2) Ambas tablas pertenecerán al mismo clúster. (3) No consideramos posibles cuestiones de concurrencia con lo que el parámetro INITRANS tomará el valor por defecto de 1. (4) Al omitir la cláusula TABLESPACE consideraremos que, de momento, las tablas se crean en el tablespace por defecto del propietario de los objetos. Fuente: Cláusula de Almacenamiento Para las particionadas se dividirán los valores obtenidos para la tabla si fuera normal y se añadirá cómo cláusula storage que heredarán todas las particiones. Para las IOT se procederá cómo en la sección siguiente variando únicamente el ENTRY SIZE correspondiente. Comentarios: Los valores para Datos Anteriores han sido obtenidos de las vistas user_tables, user_segments y user_extents. Se aplica el valor de PCTINCREASE por defecto (0). El tamaño de bloque de la BD es de 8KB. Se considerarán los siguientes parámetros en vistas a los cálculos para las 21

22 tablas normales y particionadas por rango: Fuente 1: Fuente 2: spdec01.pdf o RS = tamaño medio de fila. o NR = número de filas en la tabla. o BS = tamaño de bloque. o ES = tamaño de la extensión. o Asumiendo los valores: KCBH = 20 bytes KTBBH = 48 bytes KTBIT = 24 bytes UB4 = 4 bytes KDBH = 14 bytes KDBT = 4 bytes Las fórmulas que se manejan son las siguientes: o Tamaño_cabecera = KCBH + UB4 + KTBBH + KDBH = = 86 bytes o Espacio_disponible (FS)= techo((bs Tamaño_cabecera)*(1- PCTFREE/100)) - KDBT o Número_filas_bloque (NRB) = suelo (FS/RS) o Número_bloques (NB) = techo(nr / NRB) o Número_extensiones (NE) = techo ((NB * BS)/ES) o Espacio_requerido = ES*NE; Para evitar fragmentación se intentará que la información inicial de la tabla quepa en una única extensión, lo que marcará el tamaño de INITIAL (Con lo que el parámetro NE deberá ser 1). Para el tamaño de NEXT se aplicará un porcentaje sobre INITIAL en base a las peculiaridades de la tabla. Tabla FONDO Cláusula de Almacenamiento RS = 63 bytes FS = techo(( )*0.95)-4 = 7697 bytes NRB = suelo(7697/63) = 122 filas/bloque NB = techo(14/122) = 1 bloque Si NE = 1 1 = techo(1*8192 / ES) ES = 8192 bytes Pero deberemos considerar el mínimo de 2 bloques que impone Oracle, 22

23 VALOR CONTRAT AR luego: INITIAL = 16K NEXT = 16K MINEXTENTS = 1 MAXEXTENTS = 30 RS = 30 bytes FS = techo(( )*0.95)-4 = 7697 bytes NRB = suelo(7697/30) = 256 filas/bloque NB = techo(34374/256) = 135 bloques Si NE = 1 1 = techo(135*8192 / ES) ES = 1080 KB Luego, considerando 11 particiones dividimos el valor obtenido, y los valores para cada partición serán: INITIAL = 100K NEXT = 100K MINEXTENTS = 1 MAXEXTENTS = 20 FS = (( )*(0.9)) = 7250 bytes ES = 8 + (2*1) + (0*2) + ( bytes) = 39 bytes NB = 1.05*( /suelo(7250/39)) = 1014 bloques Luego: INITIAL = 8112 KB CUENTA FS = (( )*(0.9)) = 7250 bytes ES = 8 + (5*1) + (0*2) + ( bytes) = 64 bytes NB = 1.05*( /suelo(7250/64)) = 551 bloques Luego: INITIAL = 4408 KB 23

24 COMPRA CLIENTE HSPACE = = 8106 bytes SAFTD = 8106*(0.95 4*(2+1)*ROWSINBLOCK) S1 = 56 bytes S2 = 33 bytes select avg(count(*)) from compra group by ordenante; 4 claves SIZE = ((4*56)+(1*33)) *(5) = 296 bytes CKPB = suelo((8106)/( *5)) = 26 NB = techo(39504/26) = 1520 INITIAL = KB GENERAR VENTA HSPACE = = 8106 bytes S1 = 16 bytes S2 = 50 bytes select avg(count(*)) from generar group by compra; 2 claves SIZE = ((2*16)+(1*50)) *(3) = 112 bytes CKPB = suelo((8106)/( *3)) = 68 NB = techo(49276/68) = 725 INITIAL = 5800 KB 3.4. Estimación del tamaño de los índices Fuentes: httphttp:// Consideramos el PCTFREE por defecto para los índices (10%). Fórmulas (tomando cómo base las de la sección anterior): Tamaño_cabecera = (24*INITTRANS) = 137 bytes Espacio_disponible (FS)= ((BS Tamaño_cabecera)*(1 - PCTFREE/100)) 24

25 Tamaño_entrada (ES) = F + V + D F = Bytes de las columnas que almacenan 127 bytes o menos. (1 byte) V = Bytes de las columnas que almacenan más de 127 bytes. (2 bytes) D = Espacio de datos combinado de cada una de las columnas. Número_bloques (NB)= 1.05 * ((Número de filas no nulas)/suelo(fs/es)) VENTA GENERAR FS = (( )*(0.9)) = 7250 bytes D se ha calculado con select avg(length(operacion)) from venta; ES = 8 + (1*1) + (0*2) + (4 bytes) = 13 bytes NB = 1.05*( 49276/suelo(7250/13)) = 93 bloques Luego: INITIAL = 744 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (2*1) + (0*2) + (10 bytes) = 20 bytes NB = 1.05*( 57881/suelo(7250/20)) = 168 bloques COMPRA Luego: INITIAL = 1344 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (1*1) + (0*2) + (4 bytes) = 13 bytes NB = 1.05*( /suelo(7250/13)) = 203 bloques CLIENTE Luego: INITIAL = 1624 KB FS = (( )*(0.9)) = 7250 bytes select avg(length(dni)) from cliente; = 9 bytes ES = 8 + (1*1) + (0*2) + (9 bytes) = 18 bytes 25

26 NB = 1.05*( /suelo(7250/18)) = 104 bloques FONDO Luego: INITIAL = 832 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (1*1) + (0*2) + (12 bytes) = 21 bytes NB = 1.05*( 14 /suelo(7250/21)) = 2 bloques CONTRATAR Luego: INITIAL = 16 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (2*1) + (0*2) + ( bytes) = 39 bytes NB = 1.05*( /suelo(7250/39)) = 1014 bloques VALOR Luego: INITIAL = 8112 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (2*1) + (0*2) + ( (tipo DATE)) = 29 bytes NB = 1.05*( /suelo(7250/29)) = 145 bloques CUENTA Luego: INITIAL = 1160 KB FS = (( )*(0.9)) = 7250 bytes ES = 8 + (1*1) + (0*2) + (20 bytes) = 29 bytes NB = 1.05*( /suelo(7250/29)) = 249 bloques Luego: 26

27 INITIAL = 1992 KB 3.5. Creación de los dos tablespaces El primero para datos tendrá un tamaño de 100MB ya que la suma de los datos (sus INITIAL) alcanza los 30596KB y se dejará un margen de seguridad. Utilizaremos aquí un tamaño de bloque de 16KB ya que por regla general las tablas albergan una cantidad de datos considerable. El segundo para índices tendrá un tamaño de 8MB ya que la suma de los datos (sus INITIAL) alcanza los 5720KB y se dejará un margen de seguridad. Aquí consideraremos un tamaño de bloque de 4KB ya que los objetos contendrán menos información que en caso de los datos. Lo primero será definir los parámetros DB_nK_CACHE_SIZE para n = 4 y n = 16: Fuente: alter system set DB_4K_CACHE_SIZE=16M scope=spfile; alter system set DB_16K_CACHE_SIZE=16M scope=spfile; A continuación: SQL> connect sys/oracle as sysdba Conectado. SQL> SHUTDOWN IMMEDIATE Base de datos cerrada. Base de datos desmontada. Instancia ORACLE cerrada. SQL> STARTUP Instancia ORACLE iniciada. Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Base de datos montada. Base de datos abierta. Ahora desde el Enterprise Manager ya podemos crear los nuevos 27

28 Tablespaces: CREATE SMALLFILE TABLESPACE "DADPRACT" DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SGBD\DADPRACT01.DBF' SIZE 40M AUTOEXTEND ON NEXT 2M MAXSIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO BLOCKSIZE CREATE SMALLFILE TABLESPACE "INDPRACT" DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\SGBD\INDPRACT01.DBF' SIZE 8M AUTOEXTEND ON NEXT 512K MAXSIZE 20M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO BLOCKSIZE Creación del usuario SGBD3 CREATE USER "SGBD3" PROFILE "DEFAULT" IDENTIFIED BY "*******" DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON "DADPRACT" QUOTA UNLIMITED ON "INDPRACT" QUOTA UNLIMITED ON "USERS" ACCOUNT UNLOCK GRANT SELECT ON "SGBD1"."CLIENTES" TO "SGBD3" GRANT SELECT ON "SGBD1"."COMPRAS" TO "SGBD3" GRANT SELECT ON "SGBD1"."VALORES" TO "SGBD3" GRANT SELECT ON "SGBD1"."VENTAS" TO "SGBD3" GRANT "CONNECT" TO "SGBD3" GRANT CREATE TABLE TO "SGBD3" GRANT CREATE CLUSTER TO "SGBD3" GRANT CREATE SEQUENCE TO "SGBD3" GRANT CREATE TRIGGER TO "SGBD3"; 3.7. Creación de las tablas para SGBD3 Link: create table fondo( isin varchar2(12) not null, nombre varchar2(50) not null, fechacreacion date not null, constraint fondo_pk primary key (isin) ) TABLESPACE DADPRACT 28

29 PCTFREE 5 PCTUSED 20 STORAGE (INITIAL 16K NEXT 16K MINEXTENTS 1 MAXEXTENTS 30); create table valor( isin varchar2(12) not null, fecha date not null, cotizacion number(38,5) not null, constraint valor_pk primary key (isin, fecha) ) TABLESPACE DADPRACT PCTFREE 5 PCTUSED 60 STORAGE (INITIAL 100K NEXT 100K MINEXTENTS 1 MAXEXTENTS 20) PARTITION BY RANGE ( fecha) (PARTITION valor_p1 VALUES LESS THAN (TO_DATE('01/01/1996', 'DD/MM/YYYY')), PARTITION valor_p2 VALUES LESS THAN (TO_DATE('01/01/1997', 'DD/MM/YYYY')), PARTITION valor_p3 VALUES LESS THAN (TO_DATE('01/01/1998', 'DD/MM/YYYY')), PARTITION valor_p4 VALUES LESS THAN (TO_DATE('01/01/1999', 'DD/MM/YYYY')), PARTITION valor_p5 VALUES LESS THAN (TO_DATE('01/01/2000', 'DD/MM/YYYY')), PARTITION valor_p6 VALUES LESS THAN (TO_DATE('01/01/2001', 'DD/MM/YYYY')), PARTITION valor_p7 VALUES LESS THAN (TO_DATE('01/01/2002', 'DD/MM/YYYY')), PARTITION valor_p8 VALUES LESS THAN (TO_DATE('01/01/2003', 'DD/MM/YYYY')), PARTITION valor_p9 VALUES LESS THAN (TO_DATE('01/01/2004', 'DD/MM/YYYY')), PARTITION valor_p10 VALUES LESS THAN (TO_DATE('01/01/2005', 'DD/MM/YYYY')), PARTITION valor_p11 VALUES LESS THAN (TO_DATE('01/01/2006', 'DD/MM/YYYY'))); create table contratar( cuenta varchar2(20) not null, cliente varchar2(9) not null, constraint contratar_pk primary key (cuenta, cliente) ) ORGANIZATION INDEX TABLESPACE INDPRACT STORAGE (INITIAL 8112K NEXT 8112K MINEXTENTS 1 MAXEXTENTS 10); 29

30 create table cuenta( numero varchar2(20) not null, isin varchar2(12) not null, fechaapertura date not null, fechabaja date, numerotitulares number(5) not null, constraint cuenta_pk primary key (numero) ) ORGANIZATION INDEX TABLESPACE INDPRACT STORAGE (INITIAL 4408K NEXT 4408K MINEXTENTS 1 MAXEXTENTS 10); CREATE CLUSTER compra_cliente (dni varchar2(9)) PCTUSED 60 PCTFREE 5 SIZE 296 TABLESPACE DADPRACT STORAGE (INITIAL 12160K NEXT 12160K MINEXTENTS 1 MAXEXTENTS 10); CREATE INDEX compra_cliente_indice ON CLUSTER compra_cliente TABLESPACE INDPRACT STORAGE (INITIAL 2400K NEXT 2400K MINEXTENTS 1 MAXEXTENTS 10) PCTFREE 5; Nota: se han aproximado los valores del INIT para un índice sobre compra añadido al de cliente. create table compra( operacion integer not null, cuenta varchar2(20) not null, fecha date not null, ordenante varchar2(9) not null, participaciones number(38,5) not null, precio number(38,5) not null, constraint compra_pk primary key (operacion), constraint compra_un unique (cuenta, fecha) ) CLUSTER compra_cliente (ordenante); 30

31 create table cliente( dni varchar2(9) not null, nombre varchar2(15) not null, apellido1 varchar2(20) not null, apellido2 varchar2(20), constraint cliente_pk primary key (dni) ) CLUSTER compra_cliente (dni); CREATE CLUSTER generar_venta (compra integer) PCTUSED 60 PCTFREE 5 SIZE 112 TABLESPACE DADPRACT STORAGE (INITIAL 5800K NEXT 5800K MINEXTENTS 1 MAXEXTENTS 10); CREATE INDEX generar_venta_indice ON CLUSTER generar_venta TABLESPACE INDPRACT STORAGE (INITIAL 2100K NEXT 2100K MINEXTENTS 1 MAXEXTENTS 10) PCTFREE 5; Nota: se han aproximado los valores del INIT para un índice sobre generar añadido al de venta. create table generar( compra integer not null, venta integer not null, participaciones number(38,5) not null, constraint generar_pk primary key (compra,venta) ) CLUSTER generar_venta (compra); create table venta( operacion integer not null, 31

32 cuenta varchar2(20) not null, fecha date not null, ordenante varchar2(9) not null, precio number(38,5) not null, constraint venta_pk primary key (operacion), constraint venta_un unique (cuenta, fecha, ordenante) ) CLUSTER generar_venta (operacion); 3.8. Crear las restricciones Cuenta alter table cuenta add constraint cuenta_fk foreign key (isin) references fondo (isin); Contratar alter table contratar add constraint contratar_fk1 foreign key (cuenta) references cuenta (numero); alter table contratar add constraint contratar_fk2 foreign key (cliente) references cliente (dni); Valor alter table valor add constraint valor_fk foreign key (isin) references fondo (isin); Compra alter table compra add constraint compra_fk1 foreign key (cuenta) references cuenta (numero); alter table compra add constraint compra_fk2 foreign key (ordenante) references cliente (dni); Venta alter table venta add constraint venta_fk1 foreign key (cuenta) references cuenta (numero); alter table venta add constraint venta_fk2 foreign key (ordenante) references cliente (dni); Generar alter table generar add constraint generar_fk1 foreign key (compra) references compra (operacion); alter table generar add constraint generar_fk2 foreign key (venta) references venta (operacion); 32

33 3.9. Crear los esquemas de secuencia y disparadores Compra create sequence s_compra increment by 1 start with 1; create or replace trigger InsertarOperacionTcompra before insert on compra for each row begin select s_compra.nextval into :NEW.operacion from dual; end InsertarOperacionTcompra; / Venta create sequence s_venta increment by 1 start with 1; create or replace trigger InsertarOperacionTventa before insert on venta for each row begin select s_venta.nextval into :NEW.operacion from dual; end InsertarOperacionTventa; / Cargar los datos Insert into cliente (dni, nombre, apellido1, apellido2) (select dni, nombre, apellido1, apellido2 from sgbd1.clientes group by dni, nombre, apellido1, apellido2); Insert into fondo (isin, nombre, fechacreacion) (select isin, nombre, sysdate from sgbd1.valores group by (isin, nombre)); Insert into cuenta (numero, isin, fechaapertura, fechabaja, numerotitulares) (select numero, isin, fechaapertura, fechabaja, count(numero) from sgbd1.clientes group by (numero, isin, fechaapertura, fechabaja)); Insert into contratar (cuenta, cliente) (select numero, dni from sgbd1.clientes group by (numero, dni)); 33

34 Insert into valor (isin, fecha, cotizacion) (select isin, fecha, cotizacion from sgbd1.valores); Insert into compra (cuenta, fecha, ordenante, participaciones, precio) (select cuenta, fecha, dni, participaciones, precio from sgbd1.compras); Insert into venta (cuenta, fecha, ordenante, precio) (select cuenta, fecha, dni, precio from sgbd1.ventas group by (cuenta, fecha, dni, precio)); Insert into generar (compra, venta, participaciones) (select (select co.operacion from compra co where vs.cuenta=co.cuenta and vs.fechacompra=co.fecha), (select ve.operacion from venta ve where vs.cuenta=ve.cuenta and vs.fecha=ve.fecha and vs.dni=ve.ordenante and vs.precio=ve.precio), vs.participaciones from sgbd1.ventas vs); Problema No había manera de cargar los datos en generar, tardaba demasiado, la solución ha pasado por definir dos restricciones de tipo UNIQUE en compra (cuenta, fecha) y venta (cuenta, fecha, ordenante). Por último resta ubicar los índices en el tablespace correspondiente: alter index compra_un rebuild tablespace indpract; alter index venta_pk rebuild tablespace indpract; alter index venta_un rebuild tablespace indpract; alter index generar_pk rebuild tablespace indpract; alter index compra_pk rebuild tablespace indpract; alter index cliente_pk rebuild tablespace indpract; alter index valor_pk rebuild tablespace indpract; alter index fondo_pk rebuild tablespace indpract; 4. Optimización de la consulta Link: select comprado, compras, vendido, ventas, vendido - comprado as incremento_patrimonial from (select sum((ge.participaciones*ve.precio)/cu.numerotitulares) as vendido, count(*) as ventas from generar ge, venta ve, cliente cl, cuenta cu where ge.venta=ve.operacion and ve.ordenante=cl.dni and cl.nombre= Balbaner and cl.apellido1= Trinidad and cl.apellido2= Owens and ve.cuenta=cu.numero), (select sum((co.participaciones*co.precio)/cu.numerotitulares) as comprado, count(*) as compras from compra co, cliente cl, cuenta cu where co.cuenta=cu.numero and co.ordenante=cl.dni and cl.nombre='balbaner' 34

35 and cl.apellido1='trinidad' and cl.apellido2='owens'); Cómo se aprecia en la consulta disponemos ya de índices para casi todo ya que para las claves primarias se define automáticamente un índice. La única parte que si admitiría la definición de un índice en vistas a aumentar la eficiencia es la identificación del cliente a partir de su nombre, apellido1 y apellido2 (valores que son únicos en la tabla cliente); dicho lo cual el objetivo se centra en encontrar un índice cliente (nombre, apellido1, apellido2): - Un índice de mapa de bits no parece eficiente dado que el número de valores posibles de la clave es muy alto. - Un índice B-Tree parece apropiado ya que las columnas a indexar tienen cardinalidad elevada. Parte de ventas: CREATE INDEX "SGBD3"."CLIENTE_IND1" ON "SGBD3"."CLIENTE" ("NOMBRE", "APELLIDO1", "APELLIDO2", "DNI") TABLESPACE "INDPRACT" CREATE INDEX "SGBD3"."VENTA_IND1" ON "SGBD3"."VENTA" ("ORDENANTE", "OPERACION") TABLESPACE "INDPRACT" CREATE INDEX "SGBD3"."VENTA_IND1" ON "SGBD3"."VENTA" ("ORDENANTE", "OPERACION", "PRECIO", "CUENTA") TABLESPACE "INDPRACT" CREATE INDEX "SGBD3"."GENERAR_IND1" ON "SGBD3"."GENERAR" ("VENTA", "PARTICIPACIONES") TABLESPACE "INDPRACT" Todos los índices son b-tree ya que no existe una lista de valores corta sobre la que definir un mapa de bits. Además se incluyen las columnas que albergan los valores que serían necesarios tras obtener las filas (dni, participaciones) para ahorrarnos un acceso a la tabla correspondiente Nuevo plan de ejecución Id Operation Name Rows Bytes Cost (%CPU) Time SELECT STATEMENT (0) 00:00:01 35

36 1 NESTED LOOPS (0) 00:00:01 2 VIEW (0) 00:00:01 3 SORT AGGREGATE NESTED LOOPS (0) 00:00:01 5 NESTED LOOPS (0) 00:00:01 6 NESTED LOOPS (0) 00:00:01 * 7 INDEX RANGE SCAN CLIENTE_IND (0) 00:00:01 * 8 INDEX RANGE SCAN VENTA_IND (0) 00:00:01 * 9 INDEX UNIQUE SCAN CUENTA_PK (0) 00:00:01 * 10 INDEX RANGE SCAN GENERAR_IND (0) 00:00:01 11 VIEW (0) 00:00:01 12 SORT AGGREGATE NESTED LOOPS (0) 00:00:01 14 NESTED LOOPS (0) 36

37 00:00:01 * 15 INDEX RANGE SCAN CLIENTE_IND (0) 00:00:01 * 16 TABLE ACCESS CLUSTER COMPRA (0) 00:00:01 * 17 INDEX UNIQUE SCAN CUENTA_PK (0) 00:00:01 5. ANEXO 1: Logs arrojados por SQL Loader 5.1. control.log de la tabla CLIENTES SQL*Loader: Release Production on Lun Abr 9 21:52: Copyright (c) 1982, 2005, Oracle. All rights reserved. Archivo de Control: control.txt Archivo de Datos: clientes.txt Archivo de Errores: clientes.bad Desechar Archivo: ninguno especificado (Permitir todos los registros desechados) Número a cargar: ALL Número a ignorar: 0 Errores permitidos: 50 Matriz de enlace: 64 filas, máximo de bytes Continuación: ninguno especificado Ruta de acceso utilizada: Convencional Tabla CLIENTES, cargada de cada registro lógico. Opción INSERT activa para esta tabla: APPEND Nombre Columna Posición Long Term Entorno Tipo de Dato DNI 1:9 9 CHARACTER NOMBRE 10:24 15 CHARACTER APELLIDO1 25:44 20 CHARACTER APELLIDO2 45:64 20 CHARACTER 37

38 NULL if APELLIDO2 = BLANKS NUMERO 65:84 20 CHARACTER ISIN 85:96 12 CHARACTER FECHAAPERTURA 97: DATE DD/MM/YYYY HH24:MI:SS FECHABAJA 116: DATE DD/MM/YYYY HH24:MI:SS Tabla CLIENTES: Filas se ha cargado correctamente. 0 Filas no cargada debido a errores de datos. 0 Filas no cargada porque todas las cláusulas WHEN han fallado. 0 Filas no cargada porque todos los campos eran nulos. Espacio asignado a matriz de enlace: Bytes de buffer de lectura: bytes (64 filas) Total de registros lógicos ignorados: 0 Total de registros lógicos leídos: Total de registros lógicos rechazados: 0 Total de registros lógicos desechados: 0 La ejecución empezó en Lun Abr 09 21:52: La ejecución terminó en Lun Abr 09 21:53: Tiempo transcurrido: 00:00:48.31 Tiempo de CPU: 00:00: control.log de la tabla VALORES SQL*Loader: Release Production on Mar Abr 10 00:32: Copyright (c) 1982, 2005, Oracle. All rights reserved. Archivo de Control: control.txt Archivo de Datos: valores.txt Archivo de Errores: valores.bad Desechar Archivo: ninguno especificado (Permitir todos los registros desechados) Número a cargar: ALL Número a ignorar: 0 Errores permitidos: 50 Matriz de enlace: 64 filas, máximo de bytes 38

39 Continuación: ninguno especificado Ruta de acceso utilizada: Convencional Tabla VALORES, cargada de cada registro lógico. Opción INSERT activa para esta tabla: APPEND Nombre Columna Posición Long Term Entorno Tipo de Dato ISIN 1:13 13 CHARACTER NOMBRE 14:64 51 CHARACTER FECHA 65:84 20 DATE DD/MM/YYYY COTIZACION 85: CHARACTER Cadena SQL para la columna: "TO_NUMBER(:cotizacion)" Tabla VALORES: Filas se ha cargado correctamente. 0 Filas no cargada debido a errores de datos. 0 Filas no cargada porque todas las cláusulas WHEN han fallado. 0 Filas no cargada porque todos los campos eran nulos. Espacio asignado a matriz de enlace: Bytes de buffer de lectura: bytes (64 filas) Total de registros lógicos ignorados: 0 Total de registros lógicos leídos: Total de registros lógicos rechazados: 0 Total de registros lógicos desechados: 0 La ejecución empezó en Mar Abr 10 00:32: La ejecución terminó en Mar Abr 10 00:32: Tiempo transcurrido: 00:00:09.48 Tiempo de CPU: 00:00: control.log de la tabla COMPRAS SQL*Loader: Release Production on Mar Abr 10 00:35: Copyright (c) 1982, 2005, Oracle. All rights reserved. Archivo de Control: control.txt Archivo de Datos: compras.txt 39

40 Archivo de Errores: compras.bad Desechar Archivo: ninguno especificado (Permitir todos los registros desechados) Número a cargar: ALL Número a ignorar: 0 Errores permitidos: 50 Matriz de enlace: 64 filas, máximo de bytes Continuación: ninguno especificado Ruta de acceso utilizada: Convencional Tabla COMPRAS, cargada de cada registro lógico. Opción INSERT activa para esta tabla: APPEND Nombre Columna Posición Long Term Entorno Tipo de Dato DNI FIRST * ; " CHARACTER NOMBRE NEXT * ; " CHARACTER APELLIDO1 NEXT * ; " CHARACTER APELLIDO2 NEXT * ; O(") CHARACTER ISIN NEXT * ; " CHARACTER FONDO NEXT * ; " CHARACTER CUENTA NEXT * ; " CHARACTER FECHA NEXT * ; DATE DD/MM/YYYY HH24:MI:SS PARTICIPACIONES NEXT * ; CHARACTER Cadena SQL para la columna: "TO_NUMBER(:participaciones)" PRECIO NEXT * WHT CHARACTER Cadena SQL para la columna: "TO_NUMBER(:precio)" Tabla COMPRAS: Filas se ha cargado correctamente. 0 Filas no cargada debido a errores de datos. 0 Filas no cargada porque todas las cláusulas WHEN han fallado. 0 Filas no cargada porque todos los campos eran nulos. Espacio asignado a matriz de enlace: Bytes de buffer de lectura: bytes (64 filas) Total de registros lógicos ignorados: 0 Total de registros lógicos leídos: Total de registros lógicos rechazados: 0 Total de registros lógicos desechados: 0 La ejecución empezó en Mar Abr 10 00:35: La ejecución terminó en Mar Abr 10 00:36:

41 Tiempo transcurrido: 00:00:42.35 Tiempo de CPU: 00:00: control.log de la tabla VENTAS SQL*Loader: Release Production on Mar Abr 10 00:39: Copyright (c) 1982, 2005, Oracle. All rights reserved. Archivo de Control: control.txt Archivo de Datos: ventas.txt Archivo de Errores: ventas.bad Desechar Archivo: ninguno especificado (Permitir todos los registros desechados) Número a cargar: ALL Número a ignorar: 0 Errores permitidos: 50 Matriz de enlace: 64 filas, máximo de bytes Continuación: ninguno especificado Ruta de acceso utilizada: Convencional Tabla VENTAS, cargada de cada registro lógico. Opción INSERT activa para esta tabla: APPEND Nombre Columna Posición Long Term Entorno Tipo de Dato DNI FIRST * ; " CHARACTER NOMBRE NEXT * ; " CHARACTER APELLIDO1 NEXT * ; " CHARACTER APELLIDO2 NEXT * ; O(") CHARACTER ISIN NEXT * ; " CHARACTER FONDO NEXT * ; " CHARACTER CUENTA NEXT * ; " CHARACTER FECHA NEXT * ; DATE DD/MM/YYYY HH24:MI:SS PRECIO NEXT * ; CHARACTER Cadena SQL para la columna: "TO_NUMBER(:precio)" PARTICIPACIONES NEXT * ; CHARACTER Cadena SQL para la columna: "TO_NUMBER(:participaciones)" FECHACOMPRA NEXT * WHT DATE DD/MM/YYYY HH24:MI:SS 41

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM Estructura de una BD Oracle. Una BD Oracle tiene una estructura física y una estructura lógica que se mantienen separadamente. La estructura física se corresponde a los ficheros del sistema operativo:

Más detalles

Descripción de la BBDD para las prácticas

Descripción de la BBDD para las prácticas Descripción de la BBDD para las prácticas Ficheros y Bases de Datos Enunciado general Restaurante en casa S.A. es una compañía que distribuye pedidos de comida desde restaurantes a casas particulares y

Más detalles

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears Estándar de desarrollo de aplicaciones del Govern de les Illes Balears BASE DE DATOS Versión 5.0 Fecha Revisión: 28/05/09 Índice de contenidos INTRODUCCIÓN... 3 NOMENCLATURA DE BASE DE DATOS... 4 2.1.

Más detalles

Administración Básica de Oracle9i

Administración Básica de Oracle9i PRACTICAS TEMA 5. TABLESPACES. 5.1. Consultar los tablespaces que componen la BD. Comprobar los ficheros que tiene cada uno de ellos. Cuáles son 'locales' y cuáles no? 5.2. Crea el tablespace DATACURSOxy,

Más detalles

3 GESTIÓN DE TABLESPACES

3 GESTIÓN DE TABLESPACES 3 GESTIÓN DE TABLESPACES 3.1 Introducción. 3.2 Creación de tablespaces. 3.3 Modificación de tablespaces. 3.4 Borrado de tablespaces. 3.5 Índices, secuencias y clusters. 3.6 Enlaces de bases de datos. 3.7

Más detalles

Diseño de bases de datos

Diseño de bases de datos Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra. Unidad IV: Seguridad 4.1 Tipos de usuario El objetivo de la creación de usuarios es establecer una cuenta segura y útil, que tenga los privilegios adecuados y los valores por defecto apropiados Para acceder

Más detalles

Oracle Básico PL/SQL

Oracle Básico PL/SQL Oracle Básico PL/SQL Creación de un Esquema de Base de Datos El objetivo de este ejercicio es la ejecución de sentencia SQL de tipo DDL. Contenido Caso a Desarrollar...2 Modelo Lógico... 2 Modelo Físico...

Más detalles

Universidad Nacional de Costa Rica Administración de Bases de Datos

Universidad Nacional de Costa Rica Administración de Bases de Datos Universidad Nacional de Costa Rica Administración de Bases de Datos Mantenimiento de tablespaces e índices Para más información visite: http://www.slinfo.una.ac.cr Autor: Steven Brenes Chavarria Email:

Más detalles

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 11: Reconocimiento de la unidad 3

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA 301127- Programación de sitios web Act 11: Reconocimiento de la unidad 3 GESTORES DE BASES DE DATOS Existen varios tipos de Sistemas gestores de bases de datos SGBD, según el modelo de datos que utilizan. Son estos: bases jerárquica, en red, relacional, y bases de datos orientadas

Más detalles

CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS;

CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS; 1. Conectarse como usuario SYSTEM a la base y crear un usuario llamado administrador autentificado por la base de datos con contraseña admin. Indicar como "tablespace" por defecto USERS y como "tablespace"

Más detalles

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas OPTIMIZACIÓN DE CONSULTAS EN SQL Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas Análisis de Consultas y Transacciones Para elaborar el diseño físico de la base de datos debemos

Más detalles

Administración Básica de Oracle9i.

Administración Básica de Oracle9i. PRACTICAS. TRABAJOS (JOBS). 1. Identificar los procesos de sistema operativo que corresponden al proceso gestor de colas corriendo en la instancia. u01apporacleadmincurso01pfile (CURSO01)> ps -ef grep

Más detalles

Bases de Datos: Structured Query Language (SQL)

Bases de Datos: Structured Query Language (SQL) Structured Query Language (SQL): Introducción Bases de Datos: Structured Query Language (SQL) Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Más detalles

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia: TRABAJANDO CON SQL*PLUS El objetivo de este tema es simplemente, hacer una revisión de los conceptos avanzados de SQL, para ello, empezaremos por ver como se accede a SQL*PLUS y como crear usuarios, para

Más detalles

Procesamiento de Consultas. Carlos A. Olarte (carlosolarte@puj.edu.co) BDII

Procesamiento de Consultas. Carlos A. Olarte (carlosolarte@puj.edu.co) BDII Carlos A. Olarte (carlosolarte@puj.edu.co) BDII Contenido 1 Introducción 2 Indexación 3 Costo de las Operaciones 4 Evaluación de Expresiones 5 Transformación de Expresiones 6 Un ejemplo con Oracle Pasos

Más detalles

Motores MySQL. José Manuel Gómez. jmgomez@ua.es. Departamento de Lenguajes y Sistemas Informáticos

Motores MySQL. José Manuel Gómez. jmgomez@ua.es. Departamento de Lenguajes y Sistemas Informáticos Motores MySQL José Manuel Gómez Departamento de Lenguajes y Sistemas Informáticos jmgomez@ua.es Motores MySQL INTRODUCCIÓN 2 INTRODUCCIÓN MySQL soporta distintos motores de tabla Cada tipo de motor tiene

Más detalles

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL) OBJETIVOS: Enseñar al alumno las sentencias que forman el lenguaje de definición de datos de SQL, es decir, el subconjunto de órdenes que nos permitirán crear o editar esquemas de bases de datos. MATERIAL:

Más detalles

Instituto Profesional DuocUC Escuela de Ingeniería Control File

Instituto Profesional DuocUC Escuela de Ingeniería Control File Control File Jaime Amigo P. 2006, Santiago - Chile Objetivos Después de completar esta lección, usted deberá saber lo siguiente: Explicar el uso del archivo de control Listar los contenidos del archivo

Más detalles

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES EL LENGUAJE SQL. INSTRUCCIONES DE DEFINICIÓN DE. INSTRUCCIONES DE INSERCIÓN, MODIFICACIÓN Y BORRADO.. CREACIÓN Y UTILIZACIÓN DE VISTAS... PROCEDIMIENTOS. EL LENGUAJE SQL 1 EL LENGUAJE SQL 2 SQL ES UN LENGUAJE

Más detalles

Creación de un Multitenant Container Database 12c de forma Manual

Creación de un Multitenant Container Database 12c de forma Manual Creación de un Multitenant Container Database 12c de forma Manual Por Francisco Riccio Introducción En algunas ocasiones hemos tenido la necesidad de crear bases de datos de forma manual, quizás por automatizar

Más detalles

Restricciones (constraints) FOREIGN KEY

Restricciones (constraints) FOREIGN KEY INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP 1 Restricciones (constraints) FOREIGN KEY InnoDB también soporta restricciones de claves foráneas. La sintaxis para definir una restricción de clave foránea

Más detalles

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) APRENDERAPROGRAMAR.COM LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

Nociones de performance

Nociones de performance Maestría en Bioinformática Bases de Datos y Sistemas de Información Nociones de performance Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.uy Agenda Conceptos Índices Optimizador Planes de acceso

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

PRACTICA DE ADMINISTRACION DE BASES DE DATOS

PRACTICA DE ADMINISTRACION DE BASES DE DATOS Depto. De Organización y Estructura de la Información Curso 2003/2004 Pág. 1 PRACTICA DE ADMINISTRACION DE BASES DE DATOS Una entidad bancaria gestiona datos relativos a operaciones bancarias de sus clientes

Más detalles

Base de Datos Práctica 1.

Base de Datos Práctica 1. Base de Datos Práctica 1. Objetivo: Introducción al Mysql, aprender a identificar los errores más comunes en la creación de las bases de datos para su solución, conocer los diferentes tipos de datos y

Más detalles

Base de datos I Facultad de Ingeniería. Escuela de computación.

Base de datos I Facultad de Ingeniería. Escuela de computación. Base de datos I Facultad de Ingeniería. Escuela de computación. Introducción Este manual ha sido elaborado para orientar al estudiante de Bases de datos I en el desarrollo de sus prácticas de laboratorios,

Más detalles

Importador Universal - Operaciones

Importador Universal - Operaciones Para todos aquellos clientes que tengan la información de sus Operaciones almacenadas en sus propios sistemas informáticos, Banco Popular les proporciona esta herramienta para poder importarlas a través

Más detalles

MANUAL BÁSICO DE ORACLE

MANUAL BÁSICO DE ORACLE MANUAL BÁSICO DE ORACLE ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. TIPOS DE DATOS... 4 1.1 TIPOS DE DATOS ALFANUMÉRICOS...

Más detalles

ITACA - Entrada al sistema ITACA: Describe como entrar al sistema y los problemas típicos asociados al acceso a un sistema informático

ITACA - Entrada al sistema ITACA: Describe como entrar al sistema y los problemas típicos asociados al acceso a un sistema informático ITACA - Entrada al sistema ITACA: Describe como entrar al sistema y los problemas típicos asociados al acceso a un sistema informático Índice Entrada al sistema ITACA 3 Perfiles en el sistema ITACA 3 Cadena

Más detalles

Práctica 3. Consultas SQL

Práctica 3. Consultas SQL Práctica 3. Consultas SQL 1. Enunciado En este ejercicio se realizarán consultas SQL que respondan a las preguntas que se plantearán sin utilizar QBE. Dada una base de datos denominada Empresa y definida

Más detalles

sql*plus es un programa de linea de comandos de oracle que puede ejecutar comandos sql y pl/sql de forma interactiva o mediante un script.

sql*plus es un programa de linea de comandos de oracle que puede ejecutar comandos sql y pl/sql de forma interactiva o mediante un script. Que es sql plus sql*plus es un programa de linea de comandos de oracle que puede ejecutar comandos sql y pl/sql de forma interactiva o mediante un script. sql*plus opera como una herramienta relativamente

Más detalles

T12 Vistas y tablas temporales

T12 Vistas y tablas temporales 1 de 9 17/05/2013 14:01 Lecciones SQL > T12 Vistas y tablas temporales En esta sesión vamos a mostrar dos tipos de objetos de uso habitual en cualquier SGBD: las vistas y las tablas temporales. Mientras

Más detalles

Bases de Datos 2. Teórico

Bases de Datos 2. Teórico Bases de Datos 2 Teórico Structured Query Language (SQL) Características de SQL Standard Opera sobre conjuntos de tuplas: incluso para las operaciones de inserción, borrado y actualización. No elimina

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

Administración Básica de Oracle10g

Administración Básica de Oracle10g PRACTICAS TEMA 4. FICHEROS REDO LOG. Administración Básica de Oracle10g 4.1.Localizar los ficheros redolog de la BD. Cuántos grupos hay y cuántos miembros tiene cada grupo? están correctamente distribuidos?.

Más detalles

6 - Recuperar algunos registros (where)

6 - Recuperar algunos registros (where) 6 - Recuperar algunos registros (where) Hemos aprendido a seleccionar algunos campos de una tabla. También es posible recuperar algunos registros. Existe una cláusula, "where" con la cual podemos especificar

Más detalles

5- Uso de sentencias avanzadas

5- Uso de sentencias avanzadas Objetivos: 5- Uso de sentencias avanzadas Elaborar sentencias de manejo de datos. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Introducción: Después de trabajar con las sentencias

Más detalles

TEMA 20: CONCEPTOS BÁSICOS DE SQL

TEMA 20: CONCEPTOS BÁSICOS DE SQL TEMA 20: CONCEPTOS BÁSICOS DE SQL OBJETIVOS DEL TEMA Introducción al lenguaje de consultas SQL. Para iniciar esta parte del curso se va a utilizar el programa SQLITE que es sencillo, multiplataforma y

Más detalles

2. ESTUDIO DE INDICES

2. ESTUDIO DE INDICES Asignatura de Administración de Bases de Datos Curso 2011/2012 Pág. 1 PRÁCTICA DE ADMINISTRACIÓN DE BASES DE DATOS Una compañía de salud gestiona datos relativos a las consultas médicas a pacientes por

Más detalles

Oracle SQL Loader. Contenidos. Introducción:

Oracle SQL Loader. Contenidos. Introducción: Oracle SQL Loader Nota Preeliminar Esta es una breve guía que pretende introducir nociones básicas en la utilización del utilitario SQL Loader. Para mayor información remitirse a las referencias consultadas

Más detalles

Utilización del programa de Orabench Versión 9.2.0 para Migración. Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle.

Utilización del programa de Orabench Versión 9.2.0 para Migración. Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle. Página 1 de 15 1. Objetivo y Alcance Describir los pasos para la utilización del programa Orabench 9.2.0 de Oracle. Comprende la utilización del Programa Orabench de Oracle. 2 Responsable El responsable

Más detalles

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero 2009 1

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero 2009 1 SQL (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero 2009 1 Crear una Tabla (Esquema de Relación) (1) (Cascadas) postgres=# CREATE TABLE departamento ( codigo

Más detalles

2. Mediante la tabla pg_class, vamos a ver cómo afecta los comandos analyze y vacuum a las tablas.

2. Mediante la tabla pg_class, vamos a ver cómo afecta los comandos analyze y vacuum a las tablas. Objetivos: o Catálogo o Indices o Ficheros / Discos 1. Vamos a crear una tabla y a ver dónde se encuentra su información en el catálogo. Creamos una tabla en el esquema empresa que se llame persona, con

Más detalles

Bases de Datos 3º Informática de Sistemas

Bases de Datos 3º Informática de Sistemas TEMA 2.- EL SISTEMA GESTOR DE BASES DE DATOS. Concepto y Funciones del SGBD. Lenguajes de los SGBD. Niveles de Abstracción. Arquitectura ANSI/SPARC. Componentes del SGBD. 1. Concepto y Funciones del SGBD.

Más detalles

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación

Más detalles

M. C. Gustavo Alfonso Gutiérrez Carreón

M. C. Gustavo Alfonso Gutiérrez Carreón 1. Seguridad de bases de datos 2. Optimización de las variables M. C. Gustavo Alfonso Gutiérrez Carreón Funcionamiento: 1. Los clientes se conectan a servidor. 2. Los clientes inician autentificación,

Más detalles

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: Bases de Datos Introducción a ORACLE Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos: o Tradicionales como INTEGER, VARCHAR2, DATE,..., etc. o Nuevos y complejos:

Más detalles

3. El catálogo 26. Laboratorio de Bases de Datos

3. El catálogo 26. Laboratorio de Bases de Datos ÍNDICE Continuación SQL Índice 1. Continuación del SQL como DML (Lenguaje de Manipulación de Datos) 1 1.1. Inserción de datos................................. 1 1.2. Borrado de datos..................................

Más detalles

CONTROL DE ACCESO. curso 2008

CONTROL DE ACCESO. curso 2008 BASES DE DATOS I CONTROL DE ACCESO curso 2008 Control de Acceso Seguridad: proteger los datos contra usuarios no autorizados Comandos usados por el BDA o el propietario para conceder/revocar permisos de

Más detalles

E16 - Diseño de Sistemas de Bases de Datos Boletín 3

E16 - Diseño de Sistemas de Bases de Datos Boletín 3 E16 - Diseño de Sistemas de Bases de Datos Boletín 3 Nombre: 1. Esta práctica está dedicada a la creación de disparadores sobre sentencias DDL (lenguaje de definición de datos) y sobre eventos de la Base

Más detalles

6- Combinación de tablas

6- Combinación de tablas Objetivos: 6- Combinación de tablas Utiliza sentencias para unir los datos de diferentes tablas. Recursos: Microsoft SQL Server Management Studio Guías prácticas. Script de bases de datos. Introducción

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 Versión 1.0 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título con Weblogic 9.2 Documento de Referencia Responsable

Más detalles

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo - 2011 Structured Query Language () Fundamentos de Bases de Datos InCo - Un poco de historia Lenguajes de consulta relacionales: SEQUEL (IBM-1970) QUEL (Ingres-1970) QBE (IBM-1970) es el lenguaje comercial más

Más detalles

Mantenimiento de Índices en 11g

Mantenimiento de Índices en 11g Año 2 Volumen 10 Febrero 2011 Mantenimiento de Índices en 11g Contenido Por: Ing. Juan Luis Rodríguez jrodrigez@datum.com.gt Página 1 Mantenimiento de índices en 11g 7 Redefinición de tablas en línea 11

Más detalles

Bases de datos relacionales y el modelo entidad-relación

Bases de datos relacionales y el modelo entidad-relación Bases de datos relacionales y el modelo entidad-relación Qué es una base de datos relacional? El sistema gestor de bases de datos El modelo entidad-relación entidad, atributos y elementos (tablas, columnas

Más detalles

UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES

UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES UNIANDES Facultad de Sistemas Mercantiles Carrera de Sistemas de Informática Tema: ORACLE 9i. Autor: Muñoz Vivero Álvaro Andrés Ibarra 2010 Introducción La arquitectura

Más detalles

Manejo de datos BLOB con PHP y MySQL

Manejo de datos BLOB con PHP y MySQL Manejo de datos BLOB con PHP y MySQL Los detalles acerca del almacenamiento y recuperación de archivos binarios en una base de datos MySQL con el uso de PHP. Fecha de creación: 29 May del 2003-12:39 pm

Más detalles

Administración Básica de Oracle9i

Administración Básica de Oracle9i PRACTICAS. COPIAS DE SEGURIDAD. 1. Revisar la estructura de la base de datos. Indicar si cumple con las indicaciones OFA y el contenido de cada uno de los sistemas de ficheros. Desde sistema operativo,

Más detalles

Select table data Insert table data Update table data Delete table data Create table

Select table data Insert table data Update table data Delete table data Create table Permisos de Usuario Esta página te permite crear y editar usuarios que tendrán acceso a tus bases de datos MySQL. Para cada usuario, puedes especificar un nombre, clave de acceso, máquinas autorizadas

Más detalles

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5 APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5 APLICACIONES WEB BASADAS EN PHP Y MYSQL Una aplicación web es básicamente un programa escrito sobre una página web, generalmente en lenguaje

Más detalles

Restricciones de Integridad

Restricciones de Integridad Restricciones de Integridad Amparo López Gaona México, D.F. Semestre 2000-I Restricciones de Integridad Las principales restricciones de integridad que pueden indicarse son: La clave primaria. Claves candidatas.

Más detalles

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS MULTITABLAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS MULTITABLAS Hasta ahora hemos visto consultas que obtienen los datos de una sola tabla,

Más detalles

Minitab License Manager powered by FLEXnet Administración de licencias multiusuarios para los productos de software Minitab

Minitab License Manager powered by FLEXnet Administración de licencias multiusuarios para los productos de software Minitab Minitab License Manager powered by FLEXnet Administración de licencias multiusuarios para los productos de software Minitab La información contenida en este documento se aplica a la generación de licencias

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

MANUAL BÁSICO DEL LENGUAJE SQL

MANUAL BÁSICO DEL LENGUAJE SQL MANUAL BÁSICO DEL LENGUAJE SQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO INTRODUCCIÓN... 3 1. COMANDOS... 4 1.1 Comandos DLL... 4

Más detalles

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015.

Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015. 1 Tú imagínalo, nosotros lo desarrollamos. Manual de Usuario SOFTWARE DESPACHO JURIDICO 2015. VERSIÓN 2.0 Contenido Requerimientos del Sistema... 4 Instalación de los Prerrequisitos del Sistema... 4 Instalación

Más detalles

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo: TEMA 7.- EL ESTANDAR SQL. El Sublenguaje de Manipulación. El Sublenguaje de Definición. El Sublenguaje de Control. El Sublenguaje Huésped. 1. El Sublenguaje de Manipulación. (Se verá en la clase de problemas)

Más detalles

Tema: Auditoria de Base de datos. Parte I

Tema: Auditoria de Base de datos. Parte I 1 Base de Datos II, Guía 8 Facultad: Escuela: Asignatura: Computación Ingeniería Base de Datos II Tema: Auditoria de Base de datos. Parte I Objetivo Especifico Que el estudiante: Aprenda a utilizar los

Más detalles

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se

Más detalles

MATERIAL 2 EXCEL 2007

MATERIAL 2 EXCEL 2007 INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta

Más detalles

Administración Básica de Oracle 10g. Prácticas sobre trabajos.

Administración Básica de Oracle 10g. Prácticas sobre trabajos. PRACTICAS. TRABAJOS. 1. Identificar los procesos de sistema operativo que corresponden a la base de datos, existe algún proceso coordinador de trabajos -cjqnnn- corriendo en la instancia?. homecursocurso01

Más detalles

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000 Creación de la base de Datos Pulsamos F5 para Actualizar, y una vez posicionados en nuestra base de datos,se crean los scripts que seran soportados por el

Más detalles

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA SECCIÓN: 15N1- IS REALIZADO POR: BR. BRETE JINETH. BR. SULBARÁN ARMANDO BR. TORREZ

Más detalles

Estudio de M2E PRO para Plugin Magento de 23/10/2015

Estudio de M2E PRO para Plugin Magento de 23/10/2015 BENCHMARKING MAGENTO Estudio de M2E PRO para Plugin Magento de 23/10/2015 Introducción Modulo ebay M2E Pro para Magento 2.1. Versiones Plugin M2E Pro 2.2 Instalación de plugin en Magento. 2.3. Creación

Más detalles

CÓMO CREAR UN SITIO WEB CON GOOGLE SITES

CÓMO CREAR UN SITIO WEB CON GOOGLE SITES CÓMO CREAR UN SITIO WEB CON GOOGLE SITES Vamos a analizar las características de una herramienta que ofrece google y que posibilita la creación de páginas sencillas y personales y que se denomina google

Más detalles

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN Una compañía de materiales de construcción quiere automatizar su sistema de ventas y facturación. Para ello deciden contratar los servicios de una

Más detalles

Integridad y Seguridad en los sistemas de Bases de Datos. Javier Escobar Luis Ramirez Omar Asprino

Integridad y Seguridad en los sistemas de Bases de Datos. Javier Escobar Luis Ramirez Omar Asprino Integridad y Seguridad en los sistemas de Bases de Datos Javier Escobar Luis Ramirez Omar Asprino Contenido 1. Restricciones de Integridad 1. Claves Primarias 2. Restricciones de los Dominios 3. Integridad

Más detalles

Tema: Auditoria de Base de datos. Objetivo Especifico

Tema: Auditoria de Base de datos. Objetivo Especifico Facultad: Ingeniería Escuela: Computación Asignatura: Base de Datos II Tema: Auditoria de Base de datos. Objetivo Especifico Que el estudiante: Aprenda a utilizar los diferentes mecanismos disponibles

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

PROYECTO ADMINISTRACIÓN ORACLE ENTERPRISE MANAGER

PROYECTO ADMINISTRACIÓN ORACLE ENTERPRISE MANAGER PROYECTO ADMINISTRACIÓN ORACLE ENTERPRISE MANAGER Proyecto de administración avanzada Alejandro Romero Abadía 1 Este proyecto consiste en una explicación de las funciones que ofrece la consola web de administración

Más detalles

CURSO DE SQL SERVER 2005

CURSO DE SQL SERVER 2005 CURSO DE SQL SERVER 2005 Una vez finalizado el curso, el alumno estará preparado para: Instalar y configurar SQL Server 2005. Comprender los conceptos más importantes del diseño de bases de datos. Crear

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

INSTALACIÓN DE ORACLE 10G ENTEPRISE PARA USO CON PHP MEDIANTE OCI8

INSTALACIÓN DE ORACLE 10G ENTEPRISE PARA USO CON PHP MEDIANTE OCI8 INSTALACIÓN DE ORACLE 10G ENTEPRISE PARA USO CON PHP MEDIANTE OCI8 En primer lugar se instala un Adaptador de bucle invertido de Microsoft. Este driver simula una tarjeta de red con una IP propia sobre

Más detalles

Escrito por Beatriz Hernández Jueves, 13 de Octubre de 2011 10:47 - Actualizado Jueves, 13 de Octubre de 2011 11:04

Escrito por Beatriz Hernández Jueves, 13 de Octubre de 2011 10:47 - Actualizado Jueves, 13 de Octubre de 2011 11:04 1 OBJETIVOS Data Pump Export es la utilidad de Oracle que se encarga de copiar los datos a un fichero de volcado con una extensión.dmp en la base de datos ORACLE. El objetivo de este documento es ver cómo

Más detalles

Creación y Gestión de Tablas. Copyright Oracle Corporation, 1998. All rights reserved.

Creación y Gestión de Tablas. Copyright Oracle Corporation, 1998. All rights reserved. 10 Creación y Gestión de Tablas Copyright Oracle Corporation, 1998. All rights reserved. Objetivos Al completar esta lección, debería a ser capaz de hacer lo siguiente: Describir los principales objetos

Más detalles

Manual de Usuario del Sistema RECIBOS DE HABERES UNLu Contacto:

Manual de Usuario del Sistema RECIBOS DE HABERES UNLu Contacto: Manual de Usuario del Sistema RECIBOS DE HABERES UNLu Agosto 2015 Contacto: e-mail: recibos_web@unlu.edu.ar teléfono: (02323) 423979/423171 Interno 1236 INDICE Pág. 1. Introducción 2 2. Acceso al sistema

Más detalles

Proyectos de Innovación Docente

Proyectos de Innovación Docente Proyectos de Innovación Docente Manual de Usuario Vicerrectorado de Docencia y Profesorado Contenido INTRODUCCIÓN... 3 DATOS PERSONALES... 6 Modificar email... 6 Modificar contraseña... 7 GESTIÓN PROYECTOS...

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Cómo gestionar menús en Drupal 7

Cómo gestionar menús en Drupal 7 Cómo gestionar menús en Drupal 7 Los menús en Drupal son unas herramientas muy poderosas porqué proporcionan maneras para que los visitantes de nuestro sitio puedan llegar a páginas específicas. Estos

Más detalles

Ejercicios SQL - Select TutorialesNET Versión 1.0 - Revisión 1 25 de julio de 2015

Ejercicios SQL - Select TutorialesNET Versión 1.0 - Revisión 1 25 de julio de 2015 Ejercicios SQL - Select TutorialesNET Versión 1.0 - Revisión 1 25 de julio de 2015 Manoel Antón Folgueira Hernández manoel@tutorialesnet.net http://tutorialesnet.net Página 1 de 13 Índice 1. Introducción

Más detalles

Tema 4. Manipulación de datos con SQL

Tema 4. Manipulación de datos con SQL Tema 4 Manipulación de datos con SQL Índice Tema 4 1. Inserción de registros. Consultas de datos anexados. 2. Modificación de registros. Consultas de actualización. 3. Borrado de registros. Consultas de

Más detalles

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. SQL (Lenguaje de Consulta Estructurado): Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales. ANSI (Instituto

Más detalles

Clase 2: Estructuras Lógicas y Físicas(I)

Clase 2: Estructuras Lógicas y Físicas(I) Clase 2: Estructuras Lógicas y Físicas(I) Introducción a Segmentos, Extents y bloques de datos Bloque de datos Inittrans, Maxtrans Extents Segmentos Cláusula Storage Introducción tablespaces, datafiles

Más detalles