ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann.
-
Upload
ciriaco-magdaleno -
Category
Documents
-
view
217 -
download
0
Transcript of ADMINISTRACÓN DE BASE DE DATOS Jaroslav Reznik Tomas Ochmann.
ADMINISTRACÓN DE BASEDE DATOS
Jaroslav ReznikTomas 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
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
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 ;
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
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;/
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;
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
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
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
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
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 ...
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
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;
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
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;
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
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;
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;
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
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
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
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
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;
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
ABD – Artículo II.
Morpheus Architectura SGBD independiente
3 principales partes Core Metadata model Database abstraction layer
Access contol subsystem Derechos de ususarios
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