PRÁCTICA DE SISTEMAS GESTORES DE BASES DE DATOS
|
|
- Gonzalo Montoya Ruiz
- hace 8 años
- Vistas:
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. 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 detallesDescripció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 detallesEstá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 detallesAdministració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 detalles3 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 detallesDiseñ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 detallesA.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 detallesUn 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 detallesOracle 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 detallesUniversidad 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 detallesESCUELA 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 detallesCREATE 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 detallesOPTIMIZACIÓ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 detallesAdministració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 detallesBases 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
- 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 detallesSi 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 detallesProcesamiento 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 detallesMotores 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 detallesBASE 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 detallesInstituto 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 detallesINTRODUCCIÓ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 detallesCreació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 detallesRestricciones (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 detallesLEER 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 detallesNociones 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 detallesBase 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 detallesPRACTICA 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 detallesBase 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 detallesBase 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 detallesImportador 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 detallesMANUAL 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 detallesITACA - 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 detallesPrá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 detallessql*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 detallesT12 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 detallesBases 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 detallesConsultas 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 detallesAdministració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 detalles6 - 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 detalles5- 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 detallesTEMA 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 detalles2. 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 detallesOracle 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 detallesUtilizació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 detallesSQL. (...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 detalles2. 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 detallesBases 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 detallesEl 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 detallesM. 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 detallesSistema 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 detalles3. 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 detallesCONTROL 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 detallesE16 - 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 detalles6- 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 detallesPL/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 detallesEn 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 detallesATLAS 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 detallesStructured 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 detallesMantenimiento 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 detallesBases 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 detallesUNIVERSIDAD 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 detallesManejo 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 detallesAdministració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 detallesSelect 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 detallesAPUNTES: 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 detallesRestricciones 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 detallesCONSULTAS 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 detallesMinitab 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 detallesINSTALACIÓ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 detallesMANUAL 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 detallesManual 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 detallesPermite 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 detallesTema: 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 detallesINTRODUCCIÓ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 detallesMATERIAL 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 detallesAdministració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 detallesUNIVERSIDAD 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 detallesUNIVERSIDAD 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 detallesEstudio 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 detallesCÓ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 detallesEJERCICIO 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 detallesIntegridad 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 detallesTema: 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 detallesCONSULTAS 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 detallesPROYECTO 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 detallesCURSO 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 detallesUnidad 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 detallesINSTALACIÓ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 detallesEscrito 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 detallesCreació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 detallesManual 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 detallesProyectos 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 detallesCentro 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 detallesCó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 detallesEjercicios 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 detallesTema 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 detallesEs 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 detallesClase 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