Taller 1 - Facultad de Ciencias-UCV

Anuncio
Universidad Central de Venezuela
Facultad de Ciencias
Escuela de Computación
Administración de Base de Datos
TALLER 1
MODELOS INTERNOS
I – Parte Teórica:
1.- ¿Qué es una Base de Datos?
Una Base de Datos es una serie de datos organizados y relacionados entre sí,
independiente de su utilización y su implementación en maquinas accesibles en tiempo
real y compatibles con usuarios concurrentes con la necesidad de diferente información
y no predicable en el tiempo.
2.- ¿Qué es un Sistema Manejador de Base de Datos?
Es un conjunto de programas que se encargan de manejar la creación y todos los
accesos a las bases de datos. Se compone de un lenguaje de definición de datos (DDL:
Data Definition Language), de un lenguaje de manipulación de datos (DML: Data
Manipulation Language) y de un lenguaje de consulta (SQL: Structured Query
Language).
 El lenguaje de definición de datos (DDL) es utilizado para describir todas
las estructuras de información y los programas que se usan para construir,
actualizar e introducir la información que contiene una base de datos.
 El lenguaje de manipulación de datos (DML) es utilizado para escribir
programas que crean, actualizan y extraen información de las bases de datos.
 El lenguaje de consulta (SQL) es empleado por el usuario para extraer
información de la base de datos. El lenguaje de consulta permite al usuario hacer
requisiciones de datos sin tener que escribir un programa, usando instrucciones
como el SELECT, el PROJECT y el JOIN.
3.- Oracle como SMBD
Oracle es un sistema de base de datos objeto - relacional extremadamente potente y
flexible, esta potencia y flexibilidad, sin embargo, implica también una cierta
complejidad.
Se considera a Oracle como uno de los sistemas de bases de datos más completos,
destacando su:



Soporte de transacciones.
Estabilidad.
Escalabilidad.
Editado: Semestre I-2009
GABD/DD

Soporte multiplataforma.
La Corporación Oracle ofrece este RDBMS como un producto incorporado a la línea de
producción. Además incluye cuatro generaciones de desarrollo de aplicación,
herramientas de reportes y utilitarios.
Una Base de Datos Oracle es un conjunto de datos almacenado sobre los cuales se
puedan realizar operaciones.
Los datos están almacenados en páginas de disco y están relacionados entre sí.
Una Base de Datos Oracle está almacenada físicamente en archivos y la
correspondencia entre los éstos y las tablas es posible gracias a las estructuras internas
de la BD, las cuales permiten que diferentes tipos de datos estén almacenados
físicamente separados y se puedan acceder utilizando los métodos de acceso definidos.
Oracle como SMBD consta de tres partes bien definidas, que se mencionan a
continuación:
1.- Instancia de Oracle: Es un conjunto de procesos y estructuras que permiten la
interacción entre los usuarios y los datos almacenados. La instancia de Oracle es la
combinación procesos de background y estructuras de memoria. Una instancia debe
estar levantada para acceder a una base de datos oracle. Cada vez que una instancia de
oracle es levantada, el sistema genera el SGA (System Global Area) y se levantan una
serie de procesos de background.
La instancia a su vez se subdivide en estructuras, las cuales son:
Editado: Semestre I-2009
GABD/DD
1.1.- Estructura de Memoria: Se almacenan los ejecutables del software Oracle y todo el
sistema necesario para el tratamiento del SMBD.
La filosofía de Oracle es albergar la máxima cantidad de información en memoria con el
objeto de acelerar el tratamiento de los datos.
La estructura de Oracle en memoria se divide en:
1.1.1.- SGA (System Global Area): Es el área de memoria utilizada para almacenar
temporalmente información de la base de datos que es utilizada y compartida por los
procesos de base de datos.
La SGA puede estar compuesta por muchas estructuras, pero al menos encontraremos
tres estructuras internas básicas que son Shared Pool, Data Buffer Cache y Redo Log
Buffer.
 Shared Pool: Es una estructura de memoria que almacena las sentencias
de SQL que han sido usadas recientemente, al igual que los datos del
Diccionario de Datos que han tenido los últimos accesos.
 Data Base Buffer Cache y Redo Log Buffer: En estas estructuras se
almacenan la data usada más recientemente y lo últimos registros de los
archivos logs creados. El DB buffer es usado para enviar información a o
leer de información de los Archivos de Datos. El Redo Log buffer es
usado para seguir los cambios hechos a la BD. Hay que mencionar que
existen otros tipos de estructuras adicionales a los mencionados, como lo
son:
o Java Pool: Usada para guardar código Java a ejecutar.
o Large Pool: Usada para mover grandes cantidades de datos, por
ejemplo al hacer backups o restauraciones de la información.
1.1.2.- PGA (Program Global Area) es un área de memoria usada para almacenar data e
información de control necesaria para el proceso de servidor. A diferencia de la SGA, la
PGA es usada por un único proceso, el del servidor. La PGA es iniciada con el proceso
de servidor y terminada, cuando dicho proceso muere. Entre los componentes
principales del PGA, se encuentra:


Sort Area: esta área es utilizada para la ordenación de sentencias.
Session information: contiene los privilegios de usuario, así como
estadísticas de sesión.
1.2.- Archivos de Configuración (init.ora): Archivo de inicialización de valores para el
arranque de la instancia y para el establecimiento de configuraciones Oracle. Se
especifican parámetros predeterminados con el valor que se desee, con el fin de
optimizar los rendimientos o adecuar los recursos. Será donde se establezcan todos los
parámetros para que Oracle trabaje de una u otra forma.
Estos archivos son independientes por instancia, es decir, habrá tantos archivos de
configuración como instancias activas en el sistema de información.
Editado: Semestre I-2009
GABD/DD
1.3.- Procesos Background: Serie de procesos encargados de mantener, manejar y
controlar todo el SMBD. Existen unos procesos estándar, que Oracle activa siempre que
ejecuta una instancia, y otros que dependerán de las configuraciones establecidas en el
fichero de inicialización (init.ora)
Los procesos estándar que Oracle siempre se activa son:
 SMON (System Monitor): Verifica la consistencia de la BD, si es necesario,
recupera parte de la BD cuando esta es abierta.
 PMON (Process Monitor): Proceso que se encarga de monitorear a los otros
procesos. En caso de falla, libera los recursos que son utilizados por el o los
procesos que presentan el problema.
 CKPT (Check Point): Actualiza el estado de la BD en los Control Files y los
Data Files cuando los cambios de los buffers pasan a la BD.
 LGWR (Log Writer): Proceso que se encarga de actualizar los Log Files con los
datos que se encuentran en el buffer de Redo Log.
 DBWR (Data Base Writer): Proceso que se encarga de actualizar los Data Files
con los datos que se encuentran en el buffer de Datos.
 Otros: pueden ser procesos como Dnnn, que es el despachador de peticiones por
parte del proceso de servidor, el LCKn es el proceso encargado de gestionar
bloqueos entre distintas instancias, entre otros.
2.- Base de Datos de Oracle: Una Base de Datos Oracle es un conjunto de datos
almacenado y accesible según el formato de tablas relacionales.
Una Base de Datos Oracle está almacenada físicamente en ficheros, y la
correspondencia entre los ficheros y las tablas es posible gracias a las estructuras
internas de la BD, que permiten que diferentes tipos de datos estén almacenados
físicamente separados. Está división lógica se hace gracias a los espacios de tablas,
tablespaces.
A su vez una base de datos esta conformada de estructuras, como son:
2.1.- Data Files (Archivos de Datos): Son los archivos que proveen almacenamiento
físico de la información de la BD. Estos archivos se emplean para asegurando que los
datos puedan ser recuperados en caso de falla.
Existen también otros tipos de archivos dentro de Oracle, que a pesar de que no son
Data Files, forman parte de la Base de Datos. Estos archivos se usan para configurar la
instancia, autenticar usuarios y recuperar la BD en caso de falla.
2.2.- Control file (Archivos de control): Mantienen la información física de todos los
ficheros que forman la BD, camino incluido; así como el estado actual de la BD. Son
utilizados para mantener la consistencia interna y guiar las operaciones de recuperación.
Son imprescindibles para que la BD se pueda arrancar. Contienen:
Editado: Semestre I-2009
GABD/DD





Información de arranque y parada de la BD
Nombres de los archivos de la BD y redo log.
Información sobre los checkpoints.
Fecha de creación y nombre de la BD.
Estado online y offline de los archivos.
Debe haber múltiples copias en distintos discos, oracle garantiza que exista un respaldo,
pero puede haber más de uno, por seguridad para protegerlos de los fallos de disco. La
lista de los ficheros de control se encuentra en el parámetro CONTROL_FILES, que
debe modificarse con la BD parada.
2.3.- Redo Log file (Archivos de transacciones): Los registros Redo describen los
cambios realizados en la BD y son escritos en los ficheros redo log para que puedan ser
utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las
recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos
en un caché de la SGA llamado redo log buffer.
El servidor escribe periódicamente los registros redo log en los ficheros redo log.
El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.
2.4.- Archivo Alerta: Si la escritura en un fichero redo log falla pero el LGWR puede
escribir al menos en uno de los miembros del grupo, lo hace , ignorando el fichero
inaccesible y registrando un fallo en un fichero de traza o alerta.
Oracle crea ficheros de traza automáticamente cuando ocurre algún error.
3.- Entorno Cliente / Servidor
Sistema basado en compartir aplicaciones y/o datos a través de una red.
El entorno cliente/servidor básico, quedaría establecido de la siguiente manera:
 Servidor de datos compartido, donde estará ubicado el SMBD Oracle, el
software del servidor y la propia estructura física de los datos.
 Puestos de trabajo de los usuarios, donde se ubicará el software cliente Oracle.
 Infraestructura de conexión, para establecer las comunicaciones, tanto físicas
como lógicas, entre las estaciones de los clientes y el servidor de datos.
 Software de comunicaciones.
Editado: Semestre I-2009
GABD/DD
1.- Estructura Lógica
1.1.- Tablespaces (Espacio de Tablas): Cuando se crea una base de datos es obligatorio
crear un tablespace inicial en el que se van a crear los usuarios SYS y SYSTEM
automáticamente, los cuales tienen permisologías del sistema para tareas de
administración, como por ejemplo, creación de tablespaces, usuarios y base de datos.
El tablespace inicial se llama por defecto SYSTEM, en el cual residen todos los objetos
de los usuarios SYS y SYSTEM.
Cuando se crea un tablespace se le asigna un espacio en disco reservado de inmediato
por el SMBD Oracle. Dicho espacio se puede gestionar para que su crecimiento sea
dinámico. Los parámetros de crecimiento del tamaño de los tablespaces se especifican
durante la creación de los mismos.
Tablespace Temporal: Es aquel en el que solamente se pueden tener objetos
temporales. No se pueden crear objetos permanentes como los índices, tablas y
segmentos de rollback. Están especialmente preparados para optimizar las operaciones
que requieren ordenar o agrupar datos, así como la creación de índices y cálculos de
estadísticas.
Editado: Semestre I-2009
GABD/DD
1.2.- Segmento. Un segmento almacena la información de una estructura lógica de
Oracle dentro de un tablespace.
Existen cuatro tipos de segmentos: Segmentos de datos, Segmentos de índices,
Segmentos de Rollback y Segmentos Temporales.
1.2.1.- Segmentos de Datos. Cada una de las tablas se almacena en un segmento de
datos (excepto los clusters). El segmento se especifica en la sintaxis de la creación de
las tablas, mediante los parámetros de control de almacenamiento (PCTFREE y
PCTUSED) y la evolución de los segmentos; ésta última viene dada por los siguientes
parámetros:
INITIAL: Tamaño de la extensión inicial del segmento.
NEXT: Tamaño de las próximas extensiones.
PCTINCREASE: Porcentaje que debe crecer cada nueva extensión.
MINEXTENTS: número de extensiones que tendrá inicialmente la tabla.
MAXEXTENTS: número de extensiones máximas que tendrá la tabla.
1.2.2.- Segmentos de índices. Cada índice es almacenado en un solo segmento.
Durante su creación se puede especificar el parámetro PCTFREE, el tablespace y la
forma en que se creará el segmento.
1.2.3.- Segmentos de RollBack. Este segmento almacena todas las acciones producidas
por una transacción y se utiliza para deshacer las transacciones y recuperar la BD en
caso de una falla. Cada BD contiene uno o más segmentos de rollback. Durante la
creación del segmento de rollback se especifica los siguientes parámetros:
Valor mínimo (MINEXTENTS). Generalmente es 2
OPTIMAL indica el tamaño óptimo.
1.2.4.- Segmentos temporales. Oracle necesita un espacio temporal para guardar los
resultados intermedios, los cuales se crean y eliminan automáticamente cuando sean
necesarios. Estos segmentos se crean por defecto en el tablespace SYSTEM.
1.3.- Extents. Un extent es una unidad lógica de almacenamiento formada por un
número determinado de bloques de datos contiguos. La agrupación de uno o varios
extents forman un segmento que puede ser una tabla, un índice, un segmento de
rollback o un segmento temporal. Además, los datos de una tabla estarán en un
segmento tipo tabla, que a su vez estará formado por uno o varios extents; cada uno de
estos estén están organizados en forma de bloques de datos.
1.4.- Bloques de Datos. Son unidades lógicas y están relacionadas con los segmentos y
extents. Un segmento está formado por una o varias extensiones y cada extent está
formado por varios bloques.
Un bloque es la unidad mínima de almacenamiento de información. A los bloques
también se les conoce como "bloques de datos", "bloques lógicos" o "bloques oracle".
Cada uno de estos bloques está formado por un número determinado de bloques del
sistema operativo. A la hora de crear una nueva base de datos se debe indicar cuántos
bloques de sistema operativo formarán un bloque de datos o bloque Oracle. Es muy
Editado: Semestre I-2009
GABD/DD
importante decidir bien este valor de antemano ya que una vez creada la base de datos
ya no se puede modificar más que en migraciones a versiones más actuales del
producto.
Un bloque de datos es la mínima unidad de Lectura / Escritura en una base de datos
Oracle, es decir, el SMBD Oracle no lee y escribe en bloques del sistema operativo sino
que lo hace en unidades lógicas que son los bloques de datos y que varían de una base
de datos a otra en la misma máquina ya que es un valor que se debe indicar en la
creación de cada base de datos. Oracle recomienda que el tamaño de un bloque de datos
sea siempre un múltiplo del bloque de datos del sistema operativo.
2.- Estructura Física
2.1.- Datafile: Es un archivo físico donde se almacenan los objetos que forman parte de
un tablespace. Un tablespace puede estar formado por uno o varios datafiles. Un datafile
pertenece solamente a un tablespace y a una instancia de base de datos. Cuando se crea
un datafile se debe indicar su nombre, ubicación física de disco, tamaño y el tablespace
al que va a pertenecer.
El SMBD reserva el espacio siempre y cuando haya disponibilidad suficiente de espacio
en disco para crear dicho archivo; de lo contrario se producirá un error y no será creado.
En dicho tablespace se irán almacenando lógicamente los elementos de datos (tablas,
datos, índices, etc.) y físicamente se van guardando en los datafiles asignados a dicho
tablespace.
No se puede controlar en qué archivo físico se almacenan los datos de un tablespace.
Si un tablespace está formado por 2 datafiles y tenemos una tabla en ese tablespace, a
medida que vamos insertando filas éstas se almacenarán indistintamente en cualquiera
de los dos datafiles.
El espacio total disponible en un tablespace es la suma de los tamaños que ocupan los
datafiles que lo componen.
2.2.- OSBlock: Son simplemente los bloques en memoria del sistema operativo.
Parámetros de control de almacenamiento
1.- PCTFREE. Define el porcentaje de espacio libre que se debe reservar, por cada
bloque de datos, para las actualizaciones sobre los registros. Este parámetro es un valor
entero entre 0 y 99, que considera las actualizaciones sobre los registros de la tabla.
Por ejemplo, supongamos una tabla de empleados; dicha tabla almacena datos de
trabajadores de la empresa, la cual está dividida en distintos bloques de datos.
Si el primer bloque de datos de la tabla se encuentra lleno y se desea modificar el
nombre de un empleado, si no se dispone de espacio en el bloque para almacenar los
caracteres adicionales, se requiere del pctfree como espacio libre para actualizaciones
sobre los registros.
Editado: Semestre I-2009
GABD/DD
2.- PCTUSED. Está directamente relacionado con el pctfree, ya que define el porcentaje
que se debe haber liberado del bloque de datos para poder hacer nuevas inserciones
sobre dicho bloque.
Al igual que el pctfree, el pctused es un entero entre 0 y 99. La utilidad del mismo se ve
reflejada en el momento que se borran registros de un bloque que se encontraba
ocupado. Es ilógico bloquear escrituras sobre dicho bloque, ya que estaríamos
inutilizando espacio de disco.
Parámetros de control de concurrencia
1.- INITRANS. Determina el número mínimo de transacciones simultáneas que pueden
hacer cambios sobre un bloque de datos. Cuando se manipula el initrans Oracle reserva
(23 * n) bytes de cabecera para garantizar la atención de las n transacciones sobre dicho
bloque de datos.
2.- MAXTRANS. Define el número máximo de transacciones simultáneas que pueden
hacer cambios sobre un bloque de datos. Se utiliza para limitar la concurrencia.
Listado de consultas básicas disponibles en Oracle:
 Consultar los datafiles usando la vista v$datafile ó SYS.GV_$DATAFILE ó
consultando la tabla DBA_DATA_FILES.
 Consultar los segmentos de rollback usando la tabla DBA_ROLLBACK_SEGS
 Consultar los redo log files usando la vista V$LOGFILE
 Consultar los archived log usando la vista V$ARCHIVED_LOG
 Consultar los datos del buffer usando la vista V$BUFFER_POOL
 Consultar los control files usando la vista V$CONTROLFILE
 Consultar los archivos de Base de datos usando la vista V$DBFILE
 Consultar la instancia de Base de datos usando la vista V$INSTANCE
 Consultar los valores del SGA usando la vista V$SGA o show SGA.
 Consultar los datos contenidos en la vista V$DB_CACHE_ADVICE
 Consultar los datos del Area de SQL contenidos en la vista V$SQLAREA
 Verifique cuál es la configuración actual del SMBD. Use la vista
V$PARAMETER.
Sintaxis de creación de tablespace:
Editado: Semestre I-2009
GABD/DD
CREATE [UNDO] TABLESPACE tablespace_name
DATAFILE Datafile_Options Storage_Options;
Storage_Options:
DEFAULT [COMPRESS|NOCOMPRESS] STORAGE storage_clause
MINIMUM EXTENT int {K|M}
BLOCKSIZE int K
LOGGING | NOLOGGING
FORCE LOGGING
ONLINE | OFFLINE
PERMANENT | TEMPORARY
EXTENT MANAGEMENT {DICTIONARY |
LOCAL {AUTOALLOCATE | UNIFORM [SIZE int K | M]} }
SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}
storage clause:
INITIAL int K | M
NEXT int K | M
MINEXTENTS int
MAXEXTENTS int
MAXEXTENTS UNLIMITED
PCTINCREASE int
FREELISTS int
FREELIST GROUPS int
OPTIMAL
OPTIMAL int K | M
OPTIMAL NULL
BUFFER POOL {KEEP|RECYCLE|DEFAULT}
Sintaxis de creación de tablas:
CREATE TABLE [usuario.]tabla
({Columna tipo_dato [DEFAULT expresion] [restricción_columna] | restricción_tabla},
[{columna tipo_dato [DEFAULT expresion] [restricción_columna] |
restricción_tabla}]...)
[PCTFREE entero]
[PCTUSED entero]
[STORAGE ([INITIAL entero [k|M]]
[NEXT entero [K|M]]
[PCTINCREASE entero]
[MINEXTENTS entero]
[MAXEXTENTS entero])
[TABLESPACE espacio_tabla]
Sintaxis de creación de segmentos de rollback:
CREATE ROLLBACK SEGMENT segmento
Editado: Semestre I-2009
GABD/DD
[TABLESPACE espacio_tabla]
[STORAGE ([INITIAL entero [K|M]]
[NEXT entero [K|M]]
[PCTINCREASE entero]
[MINEXTENTS entero]
[MAXEXTENTS entero]
[OPTIMAL (entero [K|M] | NULL}])
Comandos que pueden requerir de segmentos temporales:
CREATE INDEX
 SELECT ... ORDER BY
 SELECT DISTINCT
 SELECT ... GROUP BY
 SELECT ... UNION
 SELECT ... INTERSECT
 SELECT ... MINUS
Datafile_Options:
'filespec' [AUTOEXTEND OFF]
'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K|M]]
II - Parte Practica:
1. Cree un tablespace de 3 Mb cuyo nombre debe ser TSDATA_XX, donde XX es
el código de usuario que usted tiene asignado. El datafile asociado deberá tener
un tamaño inicial de 1 Mb y deberá denominarse DFDATA1_XX. Ayuda: Use
las vistas V$TABLESPACE, V$DATAFILES del diccionario de datos para
verificar el resultado.
2. Agregue un datafile de 2Mb al tablespace TSDATA_XX con la opción de autoresizing, y con un tamaño máximo de 5 Mb. Verifique los resultados con la vista
V$DATAFILE.
3. Redimensione el tamaño del datafile a 5 Mb. Consulte como quedaron
finalmente los datafiles.
4. Cree un tablespace temporal llamado TSTEMP_XX de 1 Mb.
5. Desactivar (colocar OFFLINE) el tablespace TSTEMP_XX usando el comando
ALTER TABLESPACE. Use la vista V$DATAFILE para confirmar.
6. Cree la tabla Producto (código, nombre) en el tablespace TSTEMP_XX. ¿Qué
observa?. Ahora intente crearla en el tablespace TSDATA_XX. Consulte la
estructura de la tabla Producto.
7. Eliminar el tablespace TSTEMP_XX. Verifique que efectivamente este
tablespace no existe en la base de datos.
8. Verifique la cantidad, status y tamaño de cada uno de los tablespace existente en
el sistema.
9. Use la vista DBA_SEGMENTS para que identifique los tipos de segmentos
existentes en el sistema.
10. Elimine el tablespace TSDATA_XX
11. Cree una tabla cualquiera en el tablespace de datos. Asuma que va a tener un
alto grado de actualizaciones (manipule el pctfree, el pctused, el initrans y el
maxtrans para que el manejo de la tabla sea eficiente).
12. En el tablespace TSDATA_XX, crear las tablas:
Producto (Codigo, Nombre)
Editado: Semestre I-2009
GABD/DD
Vendedor (CI, Nombre, Edad, FechaNac, Sexo)
13. Inserte un producto, 2 vendedores. Consulte la información insertada.
14. A la tabla Producto agregue la columna Precio, para saber cual fue el precio del
producto en particular.
15. Consulte los extends usados por la tabla Producto. Use la tabla
DBA_EXTENDS
16. Consultar el espacio disponible por cada tablespace. Use la vista
DBA_FREE_SPACE.
17. Verifique el porcentaje de espacio usado de cada uno de los tablespaces (o
datafiles asociados). Use la vista DBA_SEGEMENTS
Editado: Semestre I-2009
GABD/DD
Descargar