Administración de Bases de Datos_u3
-
Upload
emmanuel-arriaga-vargas -
Category
Documents
-
view
16 -
download
0
Transcript of Administración de Bases de Datos_u3
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 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