seminario de actualizacion Sesión_03

37
08/04/2013 1 INSTALACION DE SOFTWARE DE BASE DE DATOS Ing. Juan Manuel Rojas Ochante [email protected] Estructura física de almacenamiento

description

seminario de actualizacion Sesión_03 base de datos.Presentacion semianrio actualizacion 3

Transcript of seminario de actualizacion Sesión_03

Page 1: seminario de actualizacion Sesión_03

08/04/2013

1

INSTALACION DE

SOFTWARE DE

BASE DE DATOS

Ing. Juan Manuel Rojas Ochante

[email protected]

Estructura física de

almacenamiento

Page 2: seminario de actualizacion Sesión_03

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.

Page 3: seminario de actualizacion Sesión_03

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

Page 4: seminario de actualizacion Sesión_03

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.

Page 5: seminario de actualizacion Sesión_03

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.

Page 6: seminario de actualizacion Sesión_03

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.

Page 7: seminario de actualizacion Sesión_03

08/04/2013

7

Online redo log

Múltiples copias de redo logs

Page 8: seminario de actualizacion Sesión_03

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

Page 9: seminario de actualizacion Sesión_03

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.

Page 10: seminario de actualizacion Sesión_03

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.

Page 11: seminario de actualizacion Sesión_03

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.

Page 12: seminario de actualizacion Sesión_03

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'

Page 13: seminario de actualizacion Sesión_03

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'));

Page 14: seminario de actualizacion Sesión_03

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;

Page 15: seminario de actualizacion Sesión_03

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;

Page 16: seminario de actualizacion Sesión_03

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

Page 17: seminario de actualizacion Sesión_03

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.

Page 18: seminario de actualizacion Sesión_03

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;

Page 19: seminario de actualizacion Sesión_03

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;

Page 20: seminario de actualizacion Sesión_03

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.

Page 21: seminario de actualizacion Sesión_03

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

Page 22: seminario de actualizacion Sesión_03

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.

Page 23: seminario de actualizacion Sesión_03

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

Page 24: seminario de actualizacion Sesión_03

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

Page 25: seminario de actualizacion Sesión_03

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

Page 26: seminario de actualizacion Sesión_03

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

Page 27: seminario de actualizacion Sesión_03

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

Page 28: seminario de actualizacion Sesión_03

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

Page 29: seminario de actualizacion Sesión_03

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

Page 30: seminario de actualizacion Sesión_03

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.

Page 31: seminario de actualizacion Sesión_03

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)

Page 32: seminario de actualizacion Sesión_03

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

Page 33: seminario de actualizacion Sesión_03

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

Page 34: seminario de actualizacion Sesión_03

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)

Page 35: seminario de actualizacion Sesión_03

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

Page 36: seminario de actualizacion Sesión_03

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

Page 37: seminario de actualizacion Sesión_03

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