administracón de base de datos

Anuncio
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)
●
●
●
●
Estudio de Indices
–
●
CREATE, DROP, ALTER
triggers
grants
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 BD
GRANT "CONNECT" TO ABDDBA ;
●
Derecho de la BD
GRANT 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_null
before insert on personal
for each row
when ( (new.puesto is NULL))
begin
:new.puesto := 'falta!!!';
end;
/
Creación de la BD IV.
●
Tablas externas para cargar datos de ficheros
ORGANIZATION 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
–
●
Creación de claves foráneas
–
●
ALTER TABLE paciente ADD CONSTRAINT paciente_pk PRIMARY KEY
(cod_paciente);
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
–
●
Datos pegueños
–
–
–
●
Claves primarios y secundarios
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_LENGTH
FROM 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_LENGTH
FROM 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
●
●
–
SERIARIZABLE
●
●
por defecto en Oracle
nonrepeatable query
más restrictivo
Mode
–
READ ONLY
●
Solo para lectura
Ejecución de Trans. Concurentes II.
●
Transactiones
–
SET TRANSACTION
●
ISOLATION LEVEL
–
–
●
–
NAME 'nombre'
COMMIT
●
–
READ COMMITED
SERIARIZABLE
Termina transaction y aplica a la BD
ROLLBACK
●
Termina transaction y deshecho
Ejecución de Trans. Concurentes III.
●
ISOLATION LEVEL READ COMMITED
–
lectura – lectura
●
–
lectura-escritura
●
–
no hay ninguna problema
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
●
–
lectura-escritura
●
–
no hay ninguna problema
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
–
●
3 principales partes
–
–
–
●
Architectura SGBD independiente
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
Descargar