51
Lic. Javier Gómez Lugo 25/10/2013 Instituto Tecnológico de Toluca 1

Administración de Bases de Datos_u3

Embed Size (px)

Citation preview

Lic. Javier Gómez Lugo

25/10/2013 Instituto Tecnológico de Toluca 1

25/10/2013 Instituto Tecnológico de Toluca 2

25/10/2013 Instituto Tecnológico de Toluca 3

25/10/2013 Instituto Tecnológico de Toluca 4

Oracle almacena los datos lógicamente en Tablespaces y

físicamente en Data Files.

– Tablespaces:

• Pueden almacenar solo una base de datos

• Consiste de uno ó más data files

• Estos estan divididos por dentro en unidades lógicas de

almacenamiento. Database

Tablespace

Data files

25/10/2013 Instituto Tecnológico de Toluca 5

– Data files:

• Puede pertenecer a solamente un tablespace y a

una base de datos

• Son un repositorio para el esquema de objetos de

datos

Tablespace SYSTEM

Creado con la base de datos

Contiene el diccionario de datos

Contiene el segmento de undo de SYSTEM

Tablespace no de SYSTEM

Segmentos separados

Facilita la administración del espacio

Controla la cantidad de espacio asignada a un usuario

25/10/2013 Instituto Tecnológico de Toluca 6

Se crea un tablespace usando el comando :

CREATE TABLESPACE

25/10/2013 Instituto Tecnológico de Toluca 7

CREATE TABLESPACE userdata

DATAFILE '/u01/oradata/userdata01.dbf' SIZE 5M;

Se puede aplicar sobre tablas, índices y

tablas de índices organizados, ser

subdivididos en partes más pequeñas, lo que

permite que estos objetos de base de datos

ser administrados y accesados a un mayor

nivel de granularidad.

25/10/2013 Instituto Tecnológico de Toluca 9

Las tablas de más de 2 GB deben ser

consideradas para particionarse.

Tablas que contienen datos históricos, en los

que se agregan nuevos datos en la partición

nueva. Un ejemplo típico es una tabla

histórica que sólo los datos del mes en curso

es actualizable y los otros 11 meses son de

sólo lectura.

Cuando el contenido de una tabla debe ser

distribuidos a través de diferentes tipos de

dispositivos de almacenamiento.

25/10/2013 Instituto Tecnológico de Toluca 10

Range partitions

List partitions

Hash partitions

Sub partitions

25/10/2013 Instituto Tecnológico de Toluca 11

Reducir el tiempo de inactividad para el

mantenimiento programado, que permite

que las operaciones de mantenimiento que

se realizarán en las particiones

seleccionadas, mientras que otras particiones

están disponibles para los usuarios.

Reducir el tiempo de inactividad debido a la

falta de datos, la falta de una partición

particular no afectará otras particiones.

Independencia de partición permite el uso

concurrente de las diversas particiones para

diversos fines.

25/10/2013 Instituto Tecnológico de Toluca 12

Reduce la posibilidad de daños en los datos

en varias particiones.

Copia de seguridad y recuperación de cada

partición se puede hacer de forma

independiente.

25/10/2013 Instituto Tecnológico de Toluca 13

Cada fila de una tabla con particiones se

asigna de forma inequívoca a una única

partición. La llave de particionamiento se

compone de una o más columnas que

determinan la partición en la que se

almacena cada fila.

25/10/2013 Instituto Tecnológico de Toluca 14

Una tabla con particiones por rango se divide

de tal manera que cada partición contiene

filas para las cuales el valor de la expresión

de partición se encuentra dentro de un rango

determinado.

Create table Employee

(emp_no number(3),

emp_name varchar(2))

partition by range(emp_no) (partition p1 values less

than(100), partition p2 values less than(200), partition p3

values less than(300),partition p4 values less

than(maxvalue));

25/10/2013 Instituto Tecnológico de Toluca 15

SQL> Insert into Employee values(101,’a’);

-- this will go to p1

SQL> Insert into Employee values(201,’b’);

-- this will go to p2

SQL> Insert into Employee values(301,’c’);

-- this will go to p3

SQL> Insert into Employee values(401,’d’);

25/10/2013 Instituto Tecnológico de Toluca 16

SQL> Select *from Employee;

SQL> Select *from Employee partition(p1);

25/10/2013 Instituto Tecnológico de Toluca 17

Agregando partición:

SQL> Alter table Employee add partition p5 values less than(400);

Borrando una partición:

SQL> Alter table Employee drop partition p1;

Renombrando una partición:

SQL> Alter table Employee rename partition p3 to p6;

Truncando una partición:

SQL> Alter table Employee truncate partition p5;

Splitting una partición:

SQL> Alter table Employee split partition p2 at(120) into (partition p21,partition p22);

Exchanging una partición:

SQL> Alter table Employee exchange partition p2 with table Employee_x;

Moviendo una partición:

SQL> Alter table Employee move partition p21 tablespace ABC_TBS;

25/10/2013 Instituto Tecnológico de Toluca 18

La partición de lista le permite controlar

explícitamente cómo filas se asignan a

particiones mediante la especificación de

una lista de valores discretos de la clave de

particionamiento en la descripción de cada

partición

25/10/2013 Instituto Tecnológico de Toluca 19

SQL> Create table Employee

(Emp_no number(2),Emp_name varchar(2))

partition by list(Emp_no)

(partition p1 values(1,2,3,4,5),

partition p2 values(6,7,8,9,10),

partition p3 values(11,12,13,14,15),

partition p4 values(16,17,18,19,20));

25/10/2013 Instituto Tecnológico de Toluca 20

Insertando:

SQL> Insert into Employee values(4,’xxx’); -- this will go to p1

SQL> Insert into Employee values(8,’yyy’); -- this will go to p2

SQL> Insert into Employee values(14,’zzz’); -- this will go to p3

SQL> Insert into Employee values(19,’bbb’); -- this will go to p4

Consultamos:

SQL> Select *from Employee;

SQL> Select *from Employee partition(p1);

25/10/2013 Instituto Tecnológico de Toluca 21

Agregar partición:

SQL> Alter table Employee add partition p5 values(21,22,23,24,25);

Borrando partición:

SQL> Alter table Employee drop partition p5;

Renombrando partición:

SQL> Alter table Employee rename partition p5to p1;

Truncando una paetición:

SQL> Alter table Employee truncate partition p5;

Exchange partición:

SQL> Alter table Employee exchange partition p1 with table Employee_x;

Moviendo una partición:

SQL> Alter table Employee move partition p2 tablespace ABC_TBS;

25/10/2013 Instituto Tecnológico de Toluca 22

Mapas de datos en particiones basado en un algoritmo de hash que Oracle aplica a la clave de particionamiento que se defina.

Creando una tabla:

SQL> Create table Employee(emp_no number(2),emp_name varchar(2)) partition by hash(emp_no) partitions 5;

Oracle automáticamente asigna nombre a las particiones:

SYS_P1

SYS_P2

SYS_P3

SYS_P4

SYS_P5

25/10/2013 Instituto Tecnológico de Toluca 23

Insertando registros en tablas particionadas Hash:

SQL> Insert into Employee values(5,’a’);

SQL> Insert into Employee values(8,’b’);

SQL> Insert into Employee values(14,’c’);

SQL> Insert into Employee values(19,’d’);

Consultado registros:

SQL> Select *from Employee;

SQL> Select *from Employee partition(SYS_P2);

Agregando particiones:

SQL> Alter table Employee add partition p9;

Renombrando particiones:

SQL> Alter table Employee rename partition p9 to p10;

Truncando particiones:

SQL> Alter table Employee truncate partition p9;

Exchanging a partición:

SQL> Alter table Employee exchange partition SYS_P1 with table Employee_X;

Moviendo particiones:

SQL> Alter table Employee move partition SYS_P1 tablespace ABC_TBS;

25/10/2013 Instituto Tecnológico de Toluca 24

Son asignados para almacenar estructuras

lógicas como tablas, índices, particiones,

vistas materializadas, es decir a cualquier

estructura lógica que almacena datos físicos

Oracle le asigna un segmento, el cual sólo

puede estar asociado a un tablespace. Los

segmentos deben contener por lo menos un

extents

25/10/2013 Instituto Tecnológico de Toluca 25

25/10/2013 Instituto Tecnológico de Toluca 26

25/10/2013 Instituto Tecnológico de Toluca 28

25/10/2013 Instituto Tecnológico de Toluca 31

– Tablespace manejados localmente (Locally Manage) :

• Los extents libres son manejados en el Tablespace.

• Un Bitmap es utilizado para almacenar los extents libres.

• Cada Bit corresponde a un bloque o grupo de Bloques.

• El valor de un bit indica libre o utilizado.

– Cuando el diccionario administra el Tablespace:

• Los extents libres son manejados por el diccionario de

datos.

• Las tablas apropiadas son actualizadas cuando un extent

es utilizado o liberado.

25/10/2013 Instituto Tecnológico de Toluca 32

– Reduce el contenido de las tablas del diccionario de datos

– No se genera undo (deshacer) cuando ocurre una

asignación o liberación

– No se requiere “coalesce”

CREATE TABLESPACE userdata

DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

25/10/2013 Instituto Tecnológico de Toluca 34

– Los extents son administrados en el diccionario de datos.

– Cada segmento almacenado en el tablespace puede tener

una diferente clausula de almacenamiento.

CREATE TABLESPACE userdata

DATAFILE '/u01/oradata/userdata01.dbf'

SIZE 500M EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE

(initial 1M NEXT 1M PCTINCREASE 0);

25/10/2013 Instituto Tecnológico de Toluca 35

Migrando un tablespace de SYSTEM administrado por

diccionario a un locally managed:

DBMS_SPACE_ADMIN.

TABLESPACE_MIGRATE_TO_LOCAL('SYSTEM');

25/10/2013 Instituto Tecnológico de Toluca 36

– Usado para almacenar los segmentos de undo

– No puede contener cualquier objeto

– Los extents son administrados localmente(locally managed)

– Solo puede usar las clausulas DATAFILE y EXTENT

MANAGEMENT

CREATE UNDO TABLESPACE undo1

DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;

25/10/2013 Instituto Tecnológico de Toluca

37

– Usados para operaciones de ordenamientos

– Puede compartirse con multiples usuarios

– No puede contener ningún objeto permanente

– Se recomienda administrar los extents localmente (Locally

managed)

– Para optimizar el rendimiento es recomendable que

UNIFORMSIZE sea multiplo de SORT_AREA_SIZE.

CREATE TEMPORARY TABLESPACE temp

TEMPFILE '/u01/oradata/temp01.dbf' SIZE 20M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

25/10/2013 Instituto Tecnológico de Toluca 40

– Especifica el Tablespace temporal de la base de datos

– Se elimina cambiando el Tablespace del sistema

– Puede ser creado usando:

• CREATE DATABASE

• ALTER DATABASE

25/10/2013 Instituto Tecnológico de Toluca 41

– Durante la creación de la base de datos:

CREATE DATABASE DBA01

LOGFILE

GROUP 1 ('/$HOME/ORADATA/u01/redo01.log') SIZE 100M,

GROUP 2 ('/$HOME/ORADATA/u02/redo02.log') SIZE 100M,

MAXLOGFILES 5

MAXLOGMEMBERS 5

MAXLOGHISTORY 1

MAXDATAFILES 100

MAXINSTANCES 1

DATAFILE '/$HOME/ORADATA/u01/system01.dbf' SIZE 325M

UNDO TABLESPACE undotbs

DATAFILE '/$HOME/ORADATA/u02/undotbs01.dbf' SIZE 200

DEFAULT TEMPORARY TABLESPACE temp

TEMPFILE '/$HOME/ORADATA/u03/temp01.dbf' SIZE 4M

CHARACTER SET US7ASCII

25/10/2013 Instituto Tecnológico de Toluca 42

– Después de la creación de la base de datos:

– Para encontrar el temporary tablespace puede hacer una

consulta en DATABASE_PROPERTIES:

ALTER DATABASE

DEFAULT TEMPORARY TABLESPACE default_temp2;

SELECT * FROM DATABASE_PROPERTIES;

25/10/2013 Instituto Tecnológico de Toluca 44

El Default temporary tablespaces no puede:

– No puede ser borrado hasta que no esta definido uno

nuevo

– No se puede poner fuera de línea si esta activo.

25/10/2013 Instituto Tecnológico de Toluca 45

– Utilice el siguiente comando para poner en read-only el

Tablespace:

• Causa un checkpoint

• Los datos solo son accesados para operaciones de

lectura

• Los objetos pueden ser borrados del tablespace

ALTER TABLESPACE userdata READ ONLY;

25/10/2013 Instituto Tecnológico de Toluca 46

– No se pueden accesar los datos

– Tablespaces que no pueden ponerse fuera de línea:

• Tablespace de SYSTEM

• Tablespaces con segmentos activos de undo

Los Tablespace temporales

– Para poner un tablespace fuera de línea:

– Para cambiar un tablespace en línea:

ALTER TABLESPACE userdata OFFLINE;

ALTER TABLESPACE userdata ONLINE;

25/10/2013 Instituto Tecnológico de Toluca 48

– Utilizando el comando ALTER TABLESPACE para cambiar

configuraciones de almacenamiento:

– Las configuraciones de almacenamiento para

administración local no puede ser modificado.

ALTER TABLESPACE userdata MINIMUM EXTENT 2M;

ALTER TABLESPACE userdata

DEFAULT STORAGE (INITIAL 2M NEXT 2M

MAXEXTENTS 999);

25/10/2013 Instituto Tecnológico de Toluca 49

Un tablespace puede ser cambiado para:

– Cambiar el tamaño del datafile:

• Automáticamente usando AUTOEXTEND

• Manualmente usando ALTER DATABASE

– Agregando un datafile usando ALTER TABLESPACE

25/10/2013 Instituto Tecnológico de Toluca 50

– Puede ser automáticamente con los siguientes comandos:

• CREATE DATABASE

• CREATE TABLESPACE

• ALTER TABLESPACE … ADD DATAFILE

– Example:

– Consulte la vista DBA_DATA_FILES para determinar

cuando AUTOEXTEND esta habilitado

CREATE TABLESPACE user_data

DATAFILE

'/u01/oradata/userdata01.dbf' SIZE 200M

AUTOEXTEND ON NEXT 10M MAXSIZE 500M;

25/10/2013 Instituto Tecnológico de Toluca 52

Cambiando el tamaño del data file

manualmente

– Manualmente incrementando o decrementando el tamaño

de un data file usando ALTER DATABASE.

– Redimensionando un data file agregando más espacio sin

agregar más data files.

– Redimensionando manualmente el data file Manual

resizing of a data file reclama el espacio no usado de la

base de datos.

– Ejemplo:

ALTER DATABASE

DATAFILE '/u03/oradata/userdata02.dbf'

RESIZE 200M;

25/10/2013 Instituto Tecnológico de Toluca 53

Agregando data files al Tablespace

– Incrementar el espacio de almacenamiento para el

tablespace agregando data files adicionales

– La sentencia ADD DATAFILE es usada para agregar un

data file

– Ejemplo:

ALTER TABLESPACE user_data

ADD DATAFILE '/u01/oradata/userdata03.dbf'

SIZE 200M;

25/10/2013 Instituto Tecnológico de Toluca 54

Métodos para mover Data Files

Tablespaces no de System :

– ALTER TABLESPACE

• El Tablespace debe estar fuera de línea.

• Copiar el datafile al destino antes de ejecutar el

comando.

ALTER TABLESPACE userdata RENAME

DATAFILE '/u01/oradata/userdata01.dbf'

TO '/u02/oradata/userdata01.dbf';

25/10/2013 Instituto Tecnológico de Toluca 55

Métodos para mover Data Files

Tablespaces de System :

– ALTER DATABASE

• La base de datos debe de estar montada.

• La fuente del data file debe existir.

ALTER DATABASE RENAME

FILE '/u01/oradata/system01.dbf'

TO '/u03/oradata/system01.dbf';

25/10/2013 Instituto Tecnológico de Toluca 57

Borrando Tablespace

– No se puede borrar un Tablespace en los casos siguientes:

• Si es el Tablespace de SYSTEM

• Si tiene segments activos

– La clausula INCLUDING CONTENTS borra los segments.

– INCLUDING CONTENTS AND DATAFILES borra los

datafiles.

– CASCADE CONSTRAINTS borra todas las restricciones

de integridad referencial.

DROP TABLESPACE userdata

INCLUDING CONTENTS AND DATAFILES;

25/10/2013 Instituto Tecnológico de Toluca 59

Manejando Tablespaces Usando OMF

– Defina el parámetro DB_CREATE_FILE_DEST por uno de

los siguientes métodos:

• En el archivo de Inicialización de parámetros

• Definiendolo de forma dinámica con el comando

ALTER SYSTEM

– Cuando se crea el tablespace:

• El archivo data file es creado automáticamente y

almacenado en la ruta DB_CREATE_FILE_DEST

• El tamaño default es 100 MB

• AUTOEXTEND es definido como UNLIMITED

ALTER SYSTEM SET

db_create_file_dest = '/u01/oradata/dba01';

25/10/2013 Instituto Tecnológico de Toluca 60

Managing Tablespaces Using OMF

– Creando un tablespace OMF :

– Agragando un data file OMF a un tablespace existente:

– Cambiando dinámicamente la localización por default del

archivo:

– Borrando un tablespace incluyendo los archivos de

sistema operativo:

CREATE TABLESPACE text_data DATAFILE SIZE 20M;

ALTER TABLESPACE text_data ADD DATAFILE;

ALTER SYSTEM SET db_create_file_dest = '/u01/oradata/dba01';

DROP TABLESPACE tsh_data INCLUDING CONTENTS AND DATAFILES;

25/10/2013 Instituto Tecnológico de Toluca 61

Obteniendo información del Tablespace

Obteniendo información de los tablespace y de los data files

consultando los siguientes objetos:

– Información de Tablespace:

• DBA_TABLESPACES

• V$TABLESPACE

– Información de los data files:

• DBA_DATA_FILES

• V$DATAFILE

– Información de los archivos temporales:

• DBA_TEMP_FILES

• V$TEMPFILE

25/10/2013 Instituto Tecnológico de Toluca 62

Resúmen de lo aprendido

– Uso de los tablespace para separar los datos

– Crear varios tipos de tablespaces

– Manipulación de los tablespaces

– Manejo de los tablespaces usando OMF

– Obtener información de los tablespace

25/10/2013 Instituto Tecnológico de Toluca 63

Práctica

Esta práctica cubre los siguientes tópicos:

– Creación de tablespaces

– Modificar tablespaces

– Configurar y crear un tablespace usando OMF