Download - seminario de actualizacion Sesión_03
08/04/2013
1
INSTALACION DE
SOFTWARE DE
BASE DE DATOS
Ing. Juan Manuel Rojas Ochante
Estructura física de
almacenamiento
08/04/2013
2
Concepto
� Una de las características importantes de un
SGBD es su independencia entre la estructura
de datos lógica (tablas, vista, índices) y la
estructura física.
� Gracias a esta independencia, se puede
gestionar el almacenamiento físico sin afectar
a la estructura física.
Archivos creados en la instalación
� Data files y temp files
� Data file
� Archivo físico creado por la base de datos y contiene
estructuras de datos como tablas e indices.
� Temp File
� Archivo físico para almacenar datos temporales.
08/04/2013
3
Archivos creados en la instalación
� Control files
� Es un archivo raíz que registra los componentes
físicos de la base de datos (estructura, nombre y
ubicación de redo log files, timestamp de
creación, número de secuencia de log actual, etc)
� Online Redo Log files
� Es un conjunto de archivos que almacena los
cambios efectuados sobre los datos.
Diagrama general
08/04/2013
4
Datafiles
� Los archivos de datos son el componente físico del concepto de espacio de tablas (tablespace); es decir que cada los datos de los tablespaces se almacenan físicamente en un archivo de datos.
� Ambos conceptos están muy relaciones, pero presentan importantes diferencias:� Cada tablespace consiste en uno o más archivos de datos.
� Los datos de la base de datos se almacenan en los archivos.
� Un segmento de datos puede estar distribuido entre uno o mas archivos de datos.
� Una base de datos debe tener siempre el tablespaceSYSTEM y SYSAUX.
08/04/2013
5
Control Files
� El archivo de control es un archivo raíz que se utiliza para encontrar los archivos de datos y gestionar el estado de la base de datos en general.
� Contiene la siguiente información:
� El nombre de la base de datos y el database uniqueidentifier (DBID)
� El timestamp de creación
� Información acerca de los archivos de datos, online redo log files, and redo logs archivados.
� Información de los tablespaces
� RMAN backups
� Se debe crear múltiples archivos de control.
Control Files (propósito)
� Almacenar información acerca de los archivos de datos, online redo log files, y demás requeridos al abrir la base de datos.� El archivo de control registra los cambios
estructurales de la base de datos, por ejemplo, cuando un administrator agrega, renombra o elimina un archivo de datos, la base de datos actualiza el archivo de control para reflejar los cambios.
� Contiene metadatos necesarios para acceder a la base de datos cuando esta apagada.� Por ejemplo, el archivo de control, contiene
información para recuperacion de base de datos incluyendo los checkpoints.
08/04/2013
6
Control Files (estructura)
� La informacion acerca de la base de datos es
almacenada en diferentes secciones del
control file.
� Cada seccion posee un conjunto de registros
a acerca de una caracteristca de la base de
datos.
Online redo log
� Se utilizan para proteger la base de datos de perdida de datos, especialmente luego de una falla en la instancia.
� Consiste en 2 o más archivos, para garantizar una disponibilidad de escritura mientras otro archivo esta siendo archivado.
� Online Redo Log Switches:
� Se escribe un archivo a la vez, el proceso encargado es el LGWR, el evento de cambiar entre un archivo y otro es el LOG SWITCH.
08/04/2013
7
Online redo log
Múltiples copias de redo logs
08/04/2013
8
Online redo log (estructura)
� Contiene registros de tipo REDO.
� Un registro REDO esta conformado por un grupo de vectores de cambios, cada uno describe un cambio en un bloque de datos.
� Por ejemplo, cuando se actualiza el sueldo de la tabla empleado genera un registro REDO que describe el cambio en el segmento de data y el segmento UNDO de data e información de la tabla transacción.
� Un registro REDO tiene metadata importante del cambio, incluyendo:
� SCN y el timestamp del cambio realizado.
� ID de la transacción que generó el cambio.
� SCN y el timestamp que se hizo commit a la transacción.
� Tipo de operación realizada.
� Nombre y tipo del segmento de datos modificados.
SQL FUNDAMENTALS
08/04/2013
9
Fundamentos de SQL
� SQL es el lenguaje estándar para consultar y
modificar datos.
� Se puede clasificar de la siguiente manera:
� DML: Data Manipulation Language.
� DDL: Data Definition Language.
� Transaction Control
� Session Control
� System Control
Tipo de Datos (Datatypes)
� Tipos de datos incorporados.
08/04/2013
10
OPERADORES
Operadores Aritméticos
� No utilizar (--) para representar doble negación; se deben separar
por paréntesis (-(-) o un espacio en blanco entre ellos (- -).
� (--) Representa el inicio de un comentario en SQL.
08/04/2013
11
Operador de Concatenación
� Este operador manipula cadenas de caracteres y datos
de tipo CLOB.
� El resultado de concatenar 2 cadenas de caracteres, es
otra cadena de carácter.
� Ejm. Si las 2 cadenas son CHAR, entonces el resultado
es una cadena CHAR con su limitacion de 2000
caracteres.
Precedencia de Operadores
� Si existen múltiples operadores en la misma expresión, Oracle los
evalúa según su orden de precedencia.
� Los operadores con mayor precedencia son evaluados antes que
los de menor precedencia.
� Los operadores con la misma precedencia son evaluados de
izquierda a derecha.
08/04/2013
12
LITERALES
Literales de Texto
� Se deben encerrar entre comillas simples ‘string’.
� Tienen propiedades de los tipos de datos CHAR y VARCHAR2:
� En las expresiones y condiciones, Oracle considera al literal como CHAR.
� Un literal puede tener un máximo de 4000 bytes.
� Ejm:
� 'Hello‘
� 'ORACLE.dbs‘
� 'Jackie''s raincoat’
� '09-MAR-98'
08/04/2013
13
Literales Numéricos
� Integer: con longitud máxima de 38 dígitos.
� 543
� -15
� Number / Floating point:
� Se puede utilizar la exponencial. (En un rango de -
130 a 125): 23E-10
� Si esta precedido por F, se trata de un
BINARY_FLOAT: 1.5f
� Si esta precedido por D, se trata de un
BINARY_DOBLE. -43.323D
Literales de Fechas
� Se puede escribir fechas utilizando literales. Según la
especificación ANSI.
� DATE ‘1998-12-25’
� Pero esta especificación no soporta porciones de
tiempo mas pequeñas, para ello usamos la funcion
to_date().
� TO_DATE('98-DEC-25 17:30','YY-MON-DD HH24:MI')
� Del mismo modo sucede con los TIMESTAMP.
� TIMESTAMP '1997-01-31 09:26:50.124‘
� TO_TIMESTAMP('19-FEB-2004', 'DD-MON-YYYY'));
08/04/2013
14
CONSULTAS SIMPLES
Consulta (QUERY)
� Una consulta es un pedido de información a
una o varias tablas de la base de datos.
� Las consultas NO modifican data.
� Las consultas SIMPLES sólo traen datos de
solamente una tabla o vista.
� SELECT * FROM jobs;
08/04/2013
15
Columnas y Alias
� Para hacer la consulta mas especifica, se
puede escribir los nombres de la columnas.
� SELECT job_title, min_salary FROM jobs;
� Se puede modificar el titulo de la columna
agregandole un alias.
� SELECT job_title AS Title, min_salary AS
“Minimum Salary” FROM jobs;
Asegurar la unicidad
� Para poder asegurar que una fila en el resultado de
una consulta sea única, se utiliza la palabra
reservada DISTINCT.
� SELECT DISTINCT department_id FROM
employees;
� SELECT DISTINCT department_id, job_id FROM
employees;
08/04/2013
16
Limitando filas
� Se utiliza la cláusula WHERE para limitar el número de
filas procesadas por la consulta.
� Las filas resultantes serán las que cumplan la condición.
� Se pueden utilizar columnas de la tabla, pero no los
alias de las columnas.
SELECT first_name || ‘ ‘ || last_name “Name”,
department_id
FROM employees
WHERE department_id = 90;
Operadores de Comparación
08/04/2013
17
Operadores de Comparación
Operadores Lógicos� Cuando un operador lógico es aplicado a un NULL el resultado es
UNKNOWN.
08/04/2013
18
Otros operadores
� IN / NOT IN
� Este operador se utiliza para evalúa la condición de
pertenencia.
� IN es equivalente a =ANY.
� NOT IN es equivalente a !=ALL.
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (10, 20, 90);
Otros operadores
� BETWEEN
� Se utiliza este operador para evaluar un rango.
� BETWEEN X AND Z; se evalúa como verdadero
siempre que el valor sea mayor o igual que X y menor
o igual que Z.
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 5000 AND 6000;
08/04/2013
19
Otros operadores
� EXISTS
� El operador EXISTS es seguido siempre de una sub-
query.
� Se evalúa como verdadero si la sub-query retorna al
menos una fila.
SELECT last_name, first_name, department_id
FROM employees e
WHERE EXISTS (select 1 FROM departments d
WHERE d.department_id = e.department_id
AND d.department_name = ‘Administration’);
Otros operadores
� IS NULL / IS NOT NULL
� Para conocer si un valor es NULO, se utiliza el
operador IS NULL.
� El operador = no funciona para el valor NULO.
SELECT last_name, department_id
FROM employees
WHERE department_id IS NULL;
08/04/2013
20
Otros operadores� LIKE
� Es utilizado para validar una coincidencia con un
patrón:
� % : Representa 0 o muchos caracteres.
� _ : Representa 1 carácter.
� ESCAPE clause: Se utiliza para interpretar literalmente el
carácter.
Ordenamiento de Filas
Se utiliza la cláusula ORDER BY:
SELECT first_name || ‘ ‘ || last_name “Employee Name”
FROM employees
WHERE department_id = 90
ORDER BY last_name;
Cuando no se
especifica el
modo de
ordenación, por
defecto toma el
modo
ascendente.
08/04/2013
21
Cláusula ORDER BY
� Se puede especificar múltiples columnas en la
clausula ORDER BY.
� Se puede especificar la columna tanto por su
nombre, su alias o su posición.
� Por defecto, en un ordenamiento ascendente
los valores NULL aparecerán al final, y
viceversa.
� El comportamiento de los valores NULL pueden
alterarse con la clausula NULL FIRST/LAST.
EXPRESIONES
08/04/2013
22
Expresión
� Una expresión es la combinación de uno o
mas valores, operadores y funciones SQL que
resultan en un valor.
� El resultado de una expresión tiene el mismo
tipo de dato que sus componentes.
� Pueden aparecer en las cláusulas SELECT,
WHERE, entre otras.
Expresión CASE
� Permite utilizar la lógica IF Y THEN Y ELSE,
en una sentencia SQL.
� Posee la siguiente sintaxis:
� El máximo numero de argumentos es 255.
08/04/2013
23
Expresión CASE
SELECT country_name, region_id,
CASE region_id WHEN 1 THEN ‘Europe’
WHEN 2 THEN ‘America’
WHEN 3 THEN ‘Asia’
ELSE ‘Other’ END Continent
FROM countries
WHERE country_name LIKE ‘I%’;
SQL*PLUS
08/04/2013
24
SQL*PLUS
� Es una herramienta basada en línea de
comandos.
� Permite manejar la data y administrar la base
de datos.
DDL
08/04/2013
25
Objetos de la base de datos
OBJETO DESCRIPCIÓN
Tabla Unidad básica de almacenamiento, compuesta de filas y columnas. Pueden ser creadas en cualquier momento, no se necesita definir el tamaño del almacenamiento (se recomienda) y su estructura se puede redefinir en línea.
Vista Representación lógica de un subconjunto de datos de una o más tablas
Secuencia Generador de valores numéricos
Índice Mejora el rendimiento de algunas consultas
Sinónimo Nombre alternativo de los objetos de una base de datos
Otros Procedimientos, funciones, disparadores, clusters, enlaces a bases de datos y demás
La sentencia CREATE TABLE
CREATE TABLE [Esquema.]Tabla (
Columna1 TipoDeDato [DEFAULT Expresión]
[, Columna2 Y]
);
� El usuario debe tener el privilegio de CREATE TABLE. Se asigna con una sentencia DCL
� El usuario debe tener espacio de almacenamiento
� El usuario debe especificar el nombre de la tabla y de las columnas según las reglas anteriormente descritas. Esta sentencia es DDL
� Esquema: Es el nombre del usuario que será dueño de la tabla
� DEFAULT Expresión: Define el valor por defecto que se almacena en la columna
08/04/2013
26
Referenciando tablas de otro
usuario
SELECT *
FROM [Esquema.]Tabla
� Las tablas creadas por otros usuarios, están
fuera del esquema de un usuario
� Para tener acceso a ellas se necesita anteponer
al nombre de la tabla el nombre del
usuario/esquema
� Un esquema es una colección de objetos
La opción DEFAULT
� Especifica un valor por defecto para una columna durante una inserción, por ejemplo:
Y Emp_FechaContrato DATE DEFAULT SYSDATE,
� El valor por defecto puede ser un literal, una expresión o una función SQL (por ejemplo SYSDATE, USER)
� Como valores por defecto No se pueden usar los nombres de otras columnas o seudo-columnas (por ejemplo ROWID, NEXTVAL, CURRVAL)
� El tipo de dato del valor por defecto debe concordar con el tipo de dato de la columna
08/04/2013
27
Creando tablas
� Debido a que CREATE TABLE es una sentencia DDL se
realiza un COMMIT automático
Tipos de tablas en una base de datos Oracle
� Tablas de usuario� Son las tablas creadas y mantenidas por un usuario
� Contienen información de una aplicación del usuario (o de un conjunto de usuarios)
� Tablas del diccionario de datos� Son las tablas creadas y mantenidas por el servidor
de bases de datos Oracle
� Contienen información propia de la base de datos
� El dueño de estas tablas es el usuario SYS
� Normalmente se consultan a través de vistas
08/04/2013
28
Tablas del diccionario de datos
PREFIJO DESCRIPCIÓN
USER_ Muestran información de los objetos que son del usuario/esquema actual
ALL_ Muestran información de los objetos que el usuario actual puede acceder
DBA_ Muestran información de todo el Servidor Oracle y sólo las pueden acceder los usuarios que tienen el role de DBA
V$ Muestran información de rendimiento del servidor de la base de datos, el uso de la memoria y los candados utilizados por la instancia
Uso del diccionario de datos
08/04/2013
29
Uso del diccionario de datos
� La vista User_Catalog
tiene un sinónimo que
se llama CAT
SELECT *
FROM CAT;
Tipos de datos
TIPO DE DATO DESCRIPCIÓN
VARCHAR2 (Tamaño) Carácter de longitud variable máximo 4000
CHAR [(Tamaño)] Carácter de longitud fija máximo 2000
NUMBER [(Precisión, escala)] Numérico de longitud variable. La precisión (de 1 a 38) es el número total de dígitos y la escala (-84 a 127) los dígitos al lado derecho del punto decimal
DATE Valores fechas y horas
LONG Carácter de longitud variable máximo de 2 GB. No se puede copiar cuando una tabla es creada con una subconsulta. Una columna con este tipo de dato no se puede usar en una cláusula GROUP BY y ORDER BY. Sólo una columna por tabla. No se le pueden definir restricciones. Es mejor usar CLOB
08/04/2013
30
Tipos de datos
TIPO DE DATO DESCRIPCIÓN
CLOB Caracteres máximo de 4 GB
RAW (Tamaño) Binarios sin formato máximo de 2000 bytes
LONG RAW Binarios sin formato de longitud variable máximo de 2 GB
BLOB Binarios hasta de 4 GB
BFILE Binarios almacenados en un archivo externo con tamaño máximo de 4 GB
ROWID Sarta hexadecimal que representa la dirección única de una fila en la tabla. Este tipo de dato se usa principalmente con la seudo-columna ROWID
Tipos de datos
TIPO DE DATO DESCRIPCIÓN
TIMESTAMP [(precisión)] Desde años hasta fracciones de segundo. Existen algunas variaciones que tienen en cuenta la zona horaria. La precisión (de 0 a 9 y por defecto 6) indica cuantos dígitos se van a tomar para las fracciones de segundo
TIMESTAMP [(precisión)] WITH TIME ZONETIMESTAMP [(precisión)] WITH LOCAL TIME ZONE
INTERVAL YEAR [(precisión_año)] TO MONTH
Almacena intervalos de fecha tomando años y meses. La precisión_año por defecto es 2
INTERVAL DAY [(precisión_día)] TO SECOND [(precisión_fracción)]
Almacena intervalos de fecha tomando días, horas, minutos y segundos. La precisión_día por defecto es 2 y acepta valores de 0 a 9. La precisión_fracción por defecto es 6 y acepta valores de 0 a 9.
08/04/2013
31
Uso de TIMESTAMP
� SYSDATE retorna
fecha y hora pero no
fracción
� El campo TIMESTAMP
no maneja zona horaria
Uso de TIMESTAMP WITH TIME ZONE
� TIMESTAMP WITH TIME ZONE
almacena además el
desplazamiento, es decir la hora
en relación con el meridiano
Greenwich (UTC, Coordinated
Universal Time )
� En el ejemplo, la hora se
almacenó con la zona horaria de
Bogotá (UTC -5)
08/04/2013
32
Uso de TIMESTAMP WITH LOCAL TIME ZONE
� TIMESTAMP WITH LOCAL TIME
ZONE almacena la hora en
relación a la zona horaria del
servidor Oracle
� El desplazamiento NO se
almacena en la columna
� Cuando el usuario consulta el
dato se muestra con relación a la
zona horaria de la sesión local del
usuario (sin mostrar
desplazamiento)
Uso de INTERVAL YEAR TO
MONTH
� Se pueden definir años
y meses
� Se pueden definir sólo
años
� Se pueden definir sólo
meses
� 60 meses son 5 años
08/04/2013
33
Crear tablas con subconsultas
CREATE TABLE [Esquema.]Tabla [(Columna1, Columna2, Y )]
AS SubConsulta;
� Permite crear una tabla e insertar las filas que cumplen con la condición de la subconsulta
� La definición de las columnas sólo puede tener el nombre y los valores por defecto
� Debe existir una correspondencia entre las columnas de la tabla y la lista de columnas de la cláusula SELECT de la subconsulta
� Si no se definen las columnas, los nombres que se toman son los de la cláusula SELECT
� Las restricciones de integridad no se crean en la nueva tabla sólo los tipos de datos (excepto NOT NULL)
Crear tablas con subconsultas
08/04/2013
34
La sentencia ALTER TABLE
� Sirve para:
� Adicionar una nueva columna
� Modificar una columna existente
� Definir un valor por defecto a una columna
� Establecer una columna como no usada
� Borrar una columna
� Borrar las columnas que están marcadas como no usadas
Uso de la sentencia ALTER TABLE
� No se puede especificar en que orden aparece la nueva columna. La nueva columna queda al final
� Se recomienda que las columnas con valores NULL queden al final
� Si la tabla tiene filas, la nueva columna quedara con valores NULL (o el valor por defecto de la columna) para todas las filas
� El cambio en el valor por defecto sólo afecta las filas que se insertan posteriormente, NO las existentes
� Sólo se puede borrar una columna a la vez, a menos que se use DROP UNUSED COLUMNS
� Al intentar borrar la columna, la tabla debe quedar con una columna como mínimo
� Una columna que se borra no se puede recuperar (sólo con copias de seguridad)
08/04/2013
35
Uso de la sentencia ALTER TABLE
� A una columna se le puede modificar el tipo de dato, el tamaño y el valor por defecto
� Se puede incrementar el tamaño (precisión) de columnas numéricas y caracteres
� Se puede decrementar el tamaño de una columna si la tabla no tiene filas o todos los valores son NULL
� Se puede cambiar el tipo de dato sólo si todos los valores son NULL
� Se puede convertir de CHAR a VARCHAR2 sólo si todos los valores son NULL o si no se cambia el tamaño
� Cuando se fija una columna UNUSED se saca de uso pero no se borra. Esta sentencia es más rápida
� El comando DESCRIBE no muestra las columnas marcadas como UNUSED
Borrar una Tabla
DROP TABLE [Esquema.]Tabla [CASCADE CONSTRAINT];
� Cuando se borra una tabla:� Todos los datos se eliminan� La estructura de la tabla se elimina (la información registrada en
el diccionario de datos) � Todas las transacciones pendientes sobre la tabla se
comprometen� Todos los índices de la tabla se eliminan� Las vistas y sinónimos que referencian la tabla permanecen pero
se invalidan� Se realiza un commit automático
� Esta operación no se puede deshacer� Sólo el creador de la tabla o un usuario con el privilegio
DROP ANY TABLE puede ejecutar la sentencia con éxito
08/04/2013
36
Cambiar el nombre de una tabla
RENAME NombreTabla TO NombreNuevoTabla;
� El comando RENAME sirve para cambiar el nombre de una tabla, vista, secuencia o sinónimo
� Para que el comando tenga éxito el usuario debe ser el dueño del objeto
Truncar una tabla
TRUNCATE TABLE [Esquema.]Tabla
[DROP | REUSE] STORAGE;
� Cuando se trunca una tabla:
� Todos los datos se eliminan y los datos de los índices
� Se libera el espacio de almacenamiento usado por la tabla a menos que se REUSE
� Esta sentencia es DDL (NO DML) por eso realiza commit automático
� Es diferente a la sentencia DELETE porque:
� Es más rápida y no genera información de rollback
� No se ejecutan los disparadores que tenga la tabla
� Si la tabla es padre en una restricción de integridad, no se puede ejecutar la sentencia TRUNCATE, primero se debe deshabilitar la restricción
08/04/2013
37
Adicionando comentarios a una
tabla
COMMENT ON [ TABLE [Esquema.]Tabla |COLUMN [Esquema.]Tabla.Columna ]
IS ‘Comentario’;
� La sentencia COMMENT permite agregar un comentario a una tabla o a una columna, almacenándolo en el diccionario de datos.
� Estos comentarios se consultan a través de:� ALL_COL_COMMENTS� USER_COL_COMMENTS� ALL_TAB_COMMENTS� USER_TAB_COMMENTS
� Para quitar el comentario se aplica ‘’
Gracias!
Referencias:
http://www.oracle.com/pls/db112/homepage
http://oracleyyo.com