administracÓn de base de datos jaroslav reznik tomas ochmann

27
ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Upload: ciriaco-magdaleno

Post on 23-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ADMINISTRACÓN DE BASEDE DATOS

Jaroslav ReznikTomas Ochmann

Page 2: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ABD - Primera práctica

Creación de la Base de Datos y carga inicial DDL (data definition language)

CREATE, DROP, ALTER triggers grants

Estudio de Indices Indices para los atributos candidatos

Reorganización de la BD lógica y física

Page 3: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Creación de la BD I.

Creación de la Base de Datos DDL script

create database oraXE

Nombre de la base de dato oraXE Tamaño del bloque 8192B Tamaño de memoria 80M raíz a ficheros de BD C:\oraclexe\oradata\oraXE

Creación de usuario CREATE USER ABDDBA IDENTIFIED BY clave

Page 4: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Creación de la BD II.

Derecho de conexión a BDGRANT "CONNECT" TO ABDDBA ;

Derecho de la BDGRANT DROP ANY TRIGGER TO ABDDBA ;GRANT UPDATE ANY TABLE TO ABDDBA ;GRANT ALTER ANY TRIGGER TO ABDDBA ;GRANT ALTER ANY TABLE TO ABDDBA ;GRANT SELECT ANY TABLE TO ABDDBA ;GRANT CREATE ANY TABLE TO ABDDBA ;GRANT CREATE ANY TRIGGER TO ABDDBA ;GRANT DROP ANY TABLE TO ABDDBA ;

Page 5: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Creación de la BD III.

Creación de las tablas de la BD Según un diagrama entidad-relación DDL

CREATE TABLE nombre ...

atencion_medica paciente motivo medico clinica consulta

Page 6: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Creación de la BD III.

Carga de datos Recuperación

Falta dato necesario (trigger) Trigger before insert Hay que quedar integridad de la BD

create or replace trigger puesto_nullbefore insert on personalfor each rowwhen ( (new.puesto is NULL))begin :new.puesto := 'falta!!!';end;/

Page 7: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Creación de la BD IV.

Tablas externas para cargar datos de ficherosORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY MIDIRECTORIO ACCESS PARAMETERS ( records delimited by newline fields ( cod_clinica POSITION(1:6) INTEGER EXTERNAL, direccion POSITION(7:66) CHAR, ciudad POSITION (67:96) CHAR, telefono POSITION(97:105) CHAR ) ) LOCATION ( 'clinica.txt' ))REJECT LIMIT UNLIMITED;

Page 8: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Estudio de indices I.

Datos pegueños y grandes

3 sentencias de Select

1 sentencia de Update

Medida de los Tiempos Sin cláves foráneas Con cláves foráneas Atributos candidatos

Page 9: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Estudio de indices II.

Creación de claves primarios ALTER TABLE paciente ADD CONSTRAINT paciente_pk PRIMARY KEY

(cod_paciente);

Creación de claves foráneas ALTER TABLE atencion_medica ADD CONSTRAINT atencion_medica_paciente_fk FOREIGN KEY (cod_paciente) REFERENCES paciente (cod_paciente);

Indices para atributos candidatos Atributo candidato – sentencia SQL contiene atributo

en WHERE parte

Page 10: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Estudio de indices III.

Mejor tiempos Claves primarios y secundarios

Datos pegueños indice cod_paciente en tabla atencio_medico indice operacione en tabla paciente indice fecha_nac en tabla paciente

Datos grandes Todos indices sin turno en tabla madico

Page 11: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ABD - Segunda práctica

Catálogo de la Base de Datos Tres vistas para ABD sobre catálogo Para indices y tablas

Ejecución de Transacciones Concurrentes Estudio detallado de la ejecución de transactiones

Page 12: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos I.

Catálogo almacena metadata de la BD

estructura de la Base de Datos indices ...

Vistas CREATE VISTA nombre AS SELECT ... muchas vista de cátalogo

DBA_TABLES DBA_INDEXES ...

Page 13: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos II.

Vista A Por cada indice:

nombre del indice

nombre de la tabla a la que indexa si es único o no y por cada atributo

el nombre la posición el tipo de datos la longitud del atributo

Page 14: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos III.

Vista A

CREATE VIEW VISTA_A AS SELECT DISTINCT DBA_INDEXES.INDEX_NAME, DBA_INDEXES.TABLE_NAME, DBA_INDEXES.UNIQUENESS, DBA_IND_COLUMNS.COLUMN_NAME AS ATRIBUTE_NAME,DBA_IND_COLUMNS.COLUMN_POSITION AS ATRIBUTE_POSITION, DBA_TAB_COLUMNS.DATA_TYPE AS ATRIBUTE_TYPE,DBA_IND_COLUMNS.COLUMN_LENGTH AS ATRIBUTE_LENGTHFROM DBA_INDEXES, DBA_IND_COLUMNS, DBA_TAB_COLUMNS

WHERE (DBA_INDEXES.INDEX_NAME=DBA_IND_COLUMNS.INDEX_NAME) AND (DBA_IND_COLUMNS.COLUMN_NAME=DBA_TAB_COLUMNS.COLUMN_NAME) AND (DBA_INDEXES.OWNER='ABDDBA')

ORDER BY DBA_INDEXES.INDEX_NAME;

Page 15: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos IV.

Vista B Por cada indice:

nombre del indice

nombre de la tabla a la que indexa si está activo o no la longitud total de clave de indice

Page 16: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos V.

Vista B

CREATE VIEW VISTA_B AS SELECT DBA_INDEXES.INDEX_NAME, DBA_INDEXES.TABLE_NAME, STATUS AS ACTIVE,(SELECT SUM(COLUMN_LENGTH)+COUNT(*)

FROM DBA_IND_COLUMNS WHERE INDEX_NAME=DBA_INDEXES.INDEX_NAME) AS OVERALL_LENGTH

FROM DBA_INDEXES WHERE (DBA_INDEXES.OWNER='ABDDBA') ORDER BY INDEX_NAME;

Page 17: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos VI.

Vista C Por cada tabla en la BD:

nombre de l tabla

cuenta de columnas tamaño de columna la longitud

TABLE_NAME COLUMNS COLUMNS_LENGTH NUM_ROWS TOTAL_LENGTH

Page 18: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos VII.

Vista C

CREATE VIEW VISTA_C AS SELECT DBA_TABLES.TABLE_NAME, (SELECT COUNT(DBA_TAB_COLS.COLUMN_NAME) FROM DBA_TAB_COLS WHERE (DBA_TABLES.TABLE_NAME=DBA_TAB_COLS.TABLE_NAME)) AS COLUMNS, (SELECT SUM(DBA_TAB_COLS.DATA_LENGTH) FROM DBA_TAB_COLS WHERE (DBA_TABLES.TABLE_NAME=DBA_TAB_COLS.TABLE_NAME)) AS COLUMNS_LENGTH, DBA_TABLES.NUM_ROWS, (SELECT SUM(DBA_TAB_COLS.DATA_LENGTH)*DBA_TABLES.NUM_ROWS FROM DBA_TAB_COLS WHERE (DBA_TABLES.TABLE_NAME=DBA_TAB_COLS.TABLE_NAME)) AS TOTAL_LENGTHFROM DBA_TABLES

WHERE (DBA_TABLES.OWNER='ABDDBA') ORDER BY DBA_TABLES.TABLE_NAME;

Page 19: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Catálogo de la Base de Datos VIII.

Privilegios para usuario ABDDBA

GRANT SELECT ON DBA_INDEXES TO ABDDBA; GRANT SELECT ON DBA_IND_COLUMNS TO ABDDBA; GRANT SELECT ON DBA_TAB_COLUMNS TO ABDDBA; GRANT SELECT ON DBA_TABLES TO ABDDBA; GRANT SELECT ON DBA_TAB_COLS TO ABDDBA; GRANT CREATE VIEW TO ABDDBA;

Page 20: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Ejecución de Trans. Concurentes I.

Isolation levels en Oracle READ COMMITED

por defecto en Oracle nonrepeatable query

SERIARIZABLE más restrictivo

Mode READ ONLY

Solo para lectura

Page 21: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Ejecución de Trans. Concurentes II.

Transactiones SET TRANSACTION

ISOLATION LEVEL READ COMMITED SERIARIZABLE

NAME 'nombre'

COMMIT Termina transaction y aplica a la BD

ROLLBACK Termina transaction y deshecho

Page 22: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Ejecución de Trans. Concurentes III.

ISOLATION LEVEL READ COMMITED lectura – lectura

no hay ninguna problema

lectura-escritura lee solo datos que están commited, nonrepeatable read

esctritura - escritura puede ocurrir un interbloqueo

Page 23: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Ejecución de Trans. Concurentes IV.

ISOLATION LEVEL SERIARIZABLE lectura – lectura

no hay ninguna problema

lectura-escritura datos en lo mismo estado como en momento de empieza de

transaction – repeatable read

esctritura - escritura puede ocurrir un interbloqueo – un error ORA-08177: can't serialize access for this transaction

Page 24: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

Ejecución de Trans. Concurentes V.

INTERBLOQUEO dos transactiones concurentes T1 y T2 en mismo tiempo misma fila fila cerrada por T1 T2 no puede hacer cambios

COMMIT;SET TRANSACTION ISOLATION LEVEL READ COMMITED NAME 'T1';UPDATE CLINICA SET CIUDAD='Sevilla' WHERE COD_CLINICA='1';SELECT * FROM CLINICA WHERE COD_CLINICA='1' OR COD_CLINICA='2';UPDATE CLINICA SET CIUDAD='Madrid' WHERE COD_CLINICA='2';SELECT * FROM CLINICA WHERE COD_CLINICA='1' OR COD_CLINICA='2';COMMIT;

COMMIT;SET TRANSACTION ISOLATION LEVEL READ COMMITED NAME 'T2';UPDATE CLINICA SET CIUDAD='Praha' WHERE COD_CLINICA='2';SELECT * FROM CLINICA WHERE COD_CLINICA='1' OR COD_CLINICA='2';UPDATE CLINICA SET CIUDAD='Brno' WHERE COD_CLINICA='1';SELECT * FROM CLINICA WHERE COD_CLINICA='1' OR COD_CLINICA='2';COMMIT;

Page 25: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ABD – Artículo I.

Diferentes entre SGBD Varios presentación de datos Diferentes lenguas Fecha y tiempo Triggers and procedures

Precio de cambio costa dinero costa tiempo

Page 26: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ABD – Artículo II.

Morpheus Architectura SGBD independiente

3 principales partes Core Metadata model Database abstraction layer

Access contol subsystem Derechos de ususarios

Page 27: ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann

ABD – Artículo III.

Resultados de Morpheus Implementacion en PHP Pruebas del tiempo Buenos resultados con muchos datos y usuarios Posible uso en Web o televisión digital