lunes, 2 de julio de 2012

7.2. CREAR Y ADMINISTRAR TABLESPACES


Los Tablespace son repositorios para los esquemas de Datos, incluyendo el Diccionario de Datos (Que es el esquema SYS). Todas las Bases de Datos deben tener un Tablespace SYSTEM y un Tablespace SYSAUX, y (Para efectos prácticos) un Tablespace Temporal (temporary) y un Tablespace Undo. Estos cuatro generalmente han sido creados cuando la Base de Datos fue creada. Posteriormente, el DBA puede muchos más Tablespace para datos del usuario, y Tablespaces Adicionales posibles para Undo y Datos Temporales.

CREACION DE UN TABLESPACE.
Para crear un Tablespace con Enterprise Manager Database Control, desde la pagina principal del Database tome la ficha Server y luego el Link Tablespaces en la sección Storage. La Figura 7-4 muestra los resultados para la Base de Datos Default.


Hay seis Tablespace que se muestran en la figura. Para cada Tablespace, identificado por su nombre, la ventana muestra:

• ALLOCATED SIZE Este es el tamaño actual de los DataFile (s) asignados al Tablespace. Se basa en el tamaño actual, no el tamaño máximo a el cual puede ser permitido ampliarse.
• SPACE USED Este es el espacio ocupado por segmentos en el Tablespace que no puede ser reclamado.
• ALLOCATED SPACE USED (%) Una representación gráfica de las últimas dos figuras.
• ALLOCATED FREE SPACE El espacio actualmente disponible dentro del Tablespace.
• STATUS Una marca verde indica que el Tablespace está en línea, y por lo tanto que los objetos dentro del Tablespace, deben ser accesibles. Un Tablespace fuera de línea sería indicado con una cruz roja.
• DAFILES El numero de DataFiles (O tempfiles para Tablespace temporales, si uno se precisa) que conforman el Tablespace.
• TYPE Los tipos de objetos que se pueden almacenar en el Tablespace. Un Tablespace permanente almacena objetos de esquema regulares, tales como Tablas e Índices. Un Tablespace temporal almacena solamente segmentos temporales de la administración de sistema, y un Tablespace Undo almacena solamente Segmentos Undo de Administración de Sistemas.
• EXTENT MANAGEMENT La técnica utilizada para la asignación de Extents a los Segmentos. LOCAL es la de default y debe ser utilizado siempre.
• SEGMENT MANAGEMENT La técnica utilizada para la localización de Block en los cuales las inserciones pueden ser hechas. AUTO es default y se recomienda para todos los Tablespace de los datos del usuario.

Esta información puede también ser obtenida al consultar las vistas del diccionario de datos DBA_TABLESPACES, DBA_DATA_FILES, DBA_SEGEMTS, y DB_FREE_SPACE como este ejemplo:

SQL> select t.tablespace_name name, d.allocated, u.used, f.free,
2 t.status, d.cnt, contents, t.extent_management extman,
3 t.segment_space_management segman
4 from dba_tablespaces t,
5 (select sum(bytes) allocated, count(file_id) cnt from dba_data_files
6 where tablespace_name='EXAMPLE') d,
7 (select sum(bytes) free from dba_free_space
8 where tablespace_name='EXAMPLE') f,
9 (select sum(bytes) used from dba_segments
10 where tablespace_name='EXAMPLE') u
11 where t.tablespace_name='EXAMPLE';


NAME ALLOCATED USED FREE STATUS CNT CONTENTS EXTMAN SEGMAN
------- ---------- --------- --------- ------ ---- --------- ------ ------
EXAMPLE 104857600 81395712 23396352 ONLINE 1 PERMANENT LOCAL AUTO


Haga Clic en el Botón Crear para crear un Tablespace. La Ventana Crear Tablespace solicita un nombre para el Tablespace, y el valor para Extents Management, Type, y Status. En la mayoría de circunstancias, el valor predeterminado será el correcto: Local, Permament, y Read-Write. A continuación el Botón Agregar le permite especificar uno o más DataFiles para el nuevo Tablespace. Cada Archivo debe tener un nombre y un tamaño, y opcionalmente puede ser establecido en AUTOEXTENT hasta un tamaño máximo de archivo. El AUTOEXTENT permitirá incrementar el tamaño de los DataFiles cuando sea necesario, que puede evitar errores de falta de espacio.

La figura 7-5 y 7-6 muestra las ventanas para crear un Tablespace NEWTS con un DataFile.
Al hacer clic en el Botón Mostrar SQL mostraría este comando (los números de línea se han añadido manualmente).


1 CREATE SMALLFILE TABLESPACE "NEWTS"
2 DATAFILE 'D:\APP\ORACLE\ORADATA\ORCL11G\newts01.dbf'
3 SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 200M
4 LOGGING
5 EXTENT MANAGEMENT LOCAL
6 SEGMENT SPACE MANAGEMENT AUTO
7 DEFAULT NOCOMPRESS;








Tomando la Fecha Almacenamiento se muestra la figura 7-5 permite acceso a opciones para Extent Management y compession, como en la Figurar 7-7.
Cuando se utiliza Local Extent Management (como todos los Tablespace deberían), es posible hacer cumplir una regla que todos los Extents en el Tablespace deben ser del mismo tamaño. Esto se discute en la siguiente sección. Si habilita compresión, entonces puede ser aplicado a los datos cuando se carga a granel, o como parte de todas las operaciones de DML. Si Logging es deshabilitado, esto proporciona una valor por default para las muy pocas operaciones donde la generación de Redo puede ser deshabilitada, tales como creación de índices. Si elije este ajuste. Todas las operaciones DML siempre generaran Redo.

EN EL TRABAJO.
Todos los Tablespace deben ser Locally Managed. El viejo mecanismo, conocido, como Dictionary Managed, era muchos menos eficiente y solo soportado (y apenas) para versiones anteriores. Ha sido posible crear Tablespace Locally Managed, y para convertir Tablespace Dictionary-Managed a Locally Managed, desde la versión 8i.



Una declaración típica de la creación de un Tablespace ejecutada desde la línea de comandos SQL PLUS se muestra en la figura 7-8, con una consulta de confirmación de resultados.
El Tablespace GLTABS consiste de dos Tablespace, ninguno de los cuales se Autoxtend. La única desviación de valores predeterminados ha sido especificar un Uniform Extent Size de 5 Mb. La primera consulta en la figura muestra que el Tablespace no es un Tablespace BigFile; si lo fuera, ha habría sido posible definir dos DataFiles.
La segunda consulta es la figura investiga el Tablespace TEMP, utilizado por la Base de Datos para almacenar objetos temporales. Es importante señalar que Tablespace Temporales utilizan TempFiles, no DataFiles. Tempfiles se enumeran en las vistas V$TEMPFILE y DBA_TRMP_FILES, condiderando que los DataFiles son listados en V$DATAFILE y DBA_DATA_FILES. También tenga en cuenta que las vistas V$ y vistas DBA dan información diferente. Como muestra la consulta, puede consultar V$TABLESPACE para encontrar si un Tablespace es un Table Bigfile y V$TEMPFILE (o V$DATAFILE) para encontrar lo grande que era el archivo en su creación. Esta información no se muestra en las vista DBA. sin embargo, las Vistas DBA dan el Detalle de Extent Management y Segment Space Management. La información disponible en diferentes los puntos de vista se debe a que cierta información se almacena sólo en el controlfile (y por lo tanto visible solo en vistas V$) y algunos sólo se almacena en el diccionario de datos (Y por tanto sólo visibles en las vistas de DBA). Otra información se duplica.


ALTERANDO TABLESPACES
Los cambios realizados a los Tablespaces después de su creación son comúnmente:

• Renombrar.
• Ponerlo Online y Offline.
• Marcar como Lectura-Escritura y Solo Lectura.
• Cambiar Tamaño.
• Cambiar Alertas.

RENOMBRAR UN TABLESPACE Y SUS DATAFILES
La sintaxis es

ALTER TABLESPACE tablespaceoldname RENAME TO tablespacenewname;

Esto es muy simple pero puede causar problemas más adelante. Muchos sitios se basan en convenciones nombramientos para relacionar Tablespace a sus DataFiles. Todos los ejemplos en este capítulo hacen eso: embeben en nombre del Tablespace en los nombres de los DataFiles. A Oracle no le importa: internamente, mantiene las relaciones utilizando el número de Tablespaces (o archivo Tempfiles) y el número de DataFile. Estos son visibles como las columnas V$TABLESPACE#.TS y V$DATAFILE.FILE#. Si su sitio se basa en convenciones de nombres, entonces será necesario renombrar los archivos también. Un Tablespace puede ser renombrado mientras esta en uso, pero para renombrar un DataFile, los DataFiles deben estar Offline. Esto se debe el archivo debe ser renombrado a nivel sistema operativo, así como dentro del Ambiente Oracle, y esto no puede ser hecho si el archivo está abierto: todos los identificadores de archivo se convertirían en inválidos. La Figura 7-9 es un ejemplo de todo el proceso, utilizando el Tablespace creado en la Figura 7-8.
En la figura, el primer comando renombra el Tablespace. Esa es la parte fácil. Luego el Tablespace es tomado Offline (como se describe en la siguiente sección), y dos los comandos de sistema operativo renombran los DataFiles en el Sistema de Archivos. Dos el Comando ALTER DATABASE cambia los nombres de archivos como se registro dentro del ControlFile, por lo que Oracle será capaz de encontrarlo. Finalmente, el Tablespace se vuelve a conectar.

TABLESPACE ONLINE O OFFLINE.
Un Tablespace o DataFile Online está disponible para su uso, un Tablespace o un DataFile offline existe como una definición en el Diccionario de Datos y el ControlFile pero no puede ser utilizado. Es posible para un Tablespace estar online pero uno o más de sus DataFiles estar offline.


Esta es una situación que puede producir resultados interesantes y en general se debe evitar. La sintaxis pata tomar una Tablespace offline es.

ALTER TABLESPACE tablespacename OFFLINE [NORMAL | IMMEDIATE | TEMPORARY];

Un Offline NORMAL (Que es el Default) obligara a un CheckPoint para los DataFiles de todos los Tablespaces. Cada Buffer sucio en el Database Buffer Cache que contiene un Block del Tablespace escribirán en su archivo de datos, y luego el Tablespace y los DataFiles son hechos Offline.
En el otro extremo es IMMEDIATE. Estos Tablespace y DataFiles OFFLINES IMMEDIATE, sin volcar ningún buffer sucio. Después de esto, los DataFiles serán dañados (pueden faltar cambios confirmados) y tendrán que ser recuperados mediante la aplicación de Change Vectors desde el Redo Log antes que el Tablespace pueda ser regresado a online. Claramente, esta es una operación drástica. Normalmente se haría solo si un archivo se ha dañado de forma que el CheckPoint no puede ser completado. El proceso de recuperación es detallado en el Capitulo 17.
Un online TEMPORARY CheckPoint a todos los archivos que pueden ser CheckPoint, y entonces tome los y el Tablespace fuera de línea en una manera ordenada. Cualquier archivo dañado será offline inmediatamente. Si solo uno de las DataFiles de los Tablespace ha sido dañado, esto limitará el número de archivos que necesitan ser recuperados.

MARCAR UN TABLASPACE COMO READ ONLY.
Para ver el efecto de hacer un Tablespace Read Only, estudie la Figura 7-10.
La sintaxis es completamente auto-explicativa:

ALTER TABLESPACE tablespacename [READ ONLY | READ WRITE];

Despues de hacer un Tablespace Read-Only, ninguno de los objetos dentro puede ser cambiado con instrucciones DML, como se demuestra en la Figura. Pero puede ser eliminado. Esto es un poco desconcertante pero tiene sentido perfecto cuando usted lo piensa. Quitar una Tabla no afecta realmente la Tabla. Es una transacción contra el Diccionario de Datos, que elimina las filas que describen la tabla y sus columnas; el diccionario de dato esta en el Tablespace SYSTEM, y que no es de Solo Lectura.

EN EL TRABAJO.
Hacer un Tablespace Read Only puede tener ventajas para Backup y operaciones de Restauración. Oracle será consiente que el contenido del Tablespace no puede cambiar, y que por lo tanto no puede ser necesario una copia de seguridad en varias ocasiones.

CAMBIAR EL TAMAÑO DE UN TABLESPACE:
Un Tablespace puede ser cambiado de tamaño mediante la adición de DataFiles o ajustando el tamaño de los DataFiles existentes. Los DataFiles pueden ser cambiados de tamaño hacia arriba de forma automática según sea necesario si la sintaxis de AUTOEXTENTD fue utilizado en el momento de creación. De lo contrario, usted tiene que hacerlo manualmente con el comando ALTER DATABASE:

ALTER DATABASE DATAFILE filename RESIZE n[M|G|T];




La M, G o T se refiere a la unidad de Tamaño para el archive: megabytes, gigabytes o terabytes. Por ejemplo:

alter database datafile '/oradata/users02.dbf' resize 10m;

Desde la sintaxis, usted no sabe si el archive se está hacienda más grande o más pequeño. Un cambio de tamaño hacia arriba puede solo tener éxito si hay suficiente espacio en el sistema de archivos, un cambio de tamaño hacia abajo puede tener éxito si el espacio en el archivo no está ya en uso por extents asignados a un segmento.
Para agregar otro DataFiles de tamaño de dos gigabytes a un Tablespace:

alter tablespace gl_large_tabs
add datafile 'D:\ORADATA\GL_LARGE_TABS_03.DBF' size 2g;
Las clausulas para la extensión automática pueden ser incluidos o para permitir extensión automática utilice un comando como este:

alter database datafile 'D:\ORADATA\GL_LARGE_TABS_03.DBF'
autoextend on next 100m maxsize 4g;

Esto permitirá que el archive duplique su tamaño, aumentando 100mb cada momento.

CAMBIANDO ALERT THRESHOLDS
El uso de sistema de alerta generado por el servidor será descrito en el capítulo 13. Por ahora solo es necesario saber que el proceso MMON del monitoreo de la instancia, es casi en tiempo real, como se llena cada Tablespace. Si un Tablespace se llena mas allá de cierto punto, MMON lanzara una alerta. El nivel de alerta predeterminado son levantar una alerta warning cuando un Tablespace es mas de 85 porciento de capacidad. Y una alerta critica cuando es más de 97 porciento de lleno. Las alertas pueden ser vistas de varias maneras, pero la más fácil es mirar la Página principal del Database Control, donde se despliega la sección de alertas.
Para ver o cambiar los niveles de alerta, seleccione el Tablespace y de clic en el botón Edit, visible en la figura 7-4, luego en la ventana edición Tablespace tome la ficha Thresholds figura 7-11 muestra ejemplo de un Tablespace.
En la figura, El “Espacio Disponible” en el Tablespace es reportado como 32 GB. Esto es claramente incorrecto, por el espacio asignado, como se muestra en la Figura 7-4, está a solo 100 MB. La respuesta miente en la Auto extensión del DataFile. si AUTOEXTEND está habilitada para un DataFile y no se especifica ningún MAXSIZE, entonces el Archivo puede crecer hasta un límite dependen de la plataforma, en este caso 32GB. Por supuesto, esto no dice nada acerca de si el sistema de archivos tiene espacio para un archivo de ese tamaño. El sistema de alerta utiliza el tamaño máximo posible de los Tablespace como base para sus cálculos, cual es sin sentido si los DataFiles del Tablespace fueron creados con la sintaxis AUTOEXTENTD ON MAXISIZE UMLIMITED, o si un MAXSIZE no fue especificado.
Debe ser evidente que cuando se utiliza una Automatic Extensión, es una buena práctica para establecer un límite máximo. Esto se puede hacer desde la línea de comandos con un ALTER DATABASE o atraves del Database Control.
Que habiéndose llevado a cabo, el uso del Database Control para establecer Thresholds (alerta) se auto explica.




ELIMINANDO TABLESPACES.
Para eliminar un Tablespace, utilice el comando DROP TABLESPACE. La sintaxis es.


DROP TABLESPACE tablespacename
[INCLUDING CONTENTS [AND DATAFILES]];


Si la palabra clave INCLUDING CONTENTS no es especificada, la eliminación fallará, si hay algún objeto en el Tablespace. Usando estas palabras claves da instrucciones a Oracle para eliminar los objetos primero, y luego eliminar el Tablespace. Incluso esto fallara en algunas circunstancias, tales como el Tablespace que contiene una Tabla que es el padre de una relacion Foreing Key con una Tabla en otro Tablespace.
Si las palabras claves AND DATAFILES no se especifican, el Tablespace y su contenido será eliminado pero el DataFiles continuara existiendo en el Disco. Oracle no sabe nada acerca de ellos nunca más, y que tendrá que ser eliminado con los comandos del sistema operativo.

EN EL TRABAJO.
Sobre el Sistema Operativo Windows, usted puede encontrar los DataFiles todavía después de usar la clausula INCLUDING CONTENTS AND DATAFILES. Esto es debido a la manera que Windows señala archivos por medio de una bandera como “Locked”. Puede que sea necesario detener el Servicio Windows Oracle (algo llamado como OracleServiceORCL) antes de poder eliminar manualmente el archivo.

ORACLE-MANAGED FILE (OMF)
El uso de OMF es destinado a remover la necesidad para el DBA tenga cualquier conocimiento de los sistemas de ficheros. La creación de archivos de Bases de Datos puede ser completamente automatizada. Para habilitar OMF, establezca algunos o todos estos parámetros de instancia.


DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_1
DB_CREATE_ONLINE_LOG_DEST_2
DB_CREATE_ONLINE_LOG_DEST_3
DB_CREATE_ONLINE_LOG_DEST_4
DB_CREATE_ONLINE_LOG_DEST_5
DB_RECOVERY_FILE_DEST

El parámetro DB_CREATE_FILE_DEST especifica la localización por default para todos los DataFiles. El parámetro DB_CREATE_ONLINE_LOG_DEST especifica la localización por default para los Online Redo Log Files. DB_RECOVERY_FILE_DEST establece la localización default para los archivos Redo Log Files y Backup Files. Así como el establecimiento de localizaciones de archivos default, OMF va a generar nombres de archivo y (por default) establecer el tamaño de los archivos. La configuración de estos parámetros puede simplificar las operaciones relacionadas con archivos. Permitiendo OMF, siempre se puede anular mediante la especificación de un DataFile en el comando CREATE TABLESPACE.


EJERCICIO 7-2.
CREAR, ALTERAR Y ELIMINAR TABLESPACES.

En este ejercicio, usted creará Tablespace y cambiar sus características. Luego habilitara y utilizará OMF. Este ejercicio puede ser hecho atraves del Database Control, pero si es así, asegúrese de hacer clic en el Botón Show SQL en todas las etapas para observar las instrucciones SQL que sean generadas.

1. Conéctese a la Base de Datos como usuario SYSTEM.
2. Crear un Tablespace en un directorio adecuado-cualquier directorio en el cual Oracle tenga permisos para escribir.


create tablespace newtbs
datafile '/home/db11g/oradata/newtbs_01.dbf' size 10m
extent management local autoallocate
segment space management auto;

Este comando especifica las opciones que son por defecto. Sin embargo, puede considerar buena práctica hacer esto, hacer la declaración de auto documentación.

3. Crear una Tabla en el nuevo Tablespace, y determinar el tamaño del primer Extent:
create table newtab(c1 date) tablespace newtbs;
select extent_id,bytes from dba_extents
where owner='SYSTEM' and segment_na me='NEWTAB';
4. Agregar Extents manualmente, y observar el tamaño de cada nuevo Extent repetidamente ejecutando este comando,
alter table newtabs allocate extent;
Seguido por la consulta del paso 3. Tenga en cuenta el punto en que el tamaño del extents aumenta.
5. Tome el Tablespace offline, observe el efecto y traerlo de nuevo online. Esto es mostrado en la ilustración.




6.     Haga el Tablespace Read Only, observe el efecto, y hágalo Read Write otra vez, esto es mostrado en la siguiente ilustración.





7. Habilite OMF para creación de DataFile:
alter system set db_create_file_dest='/home/db11g/oradata';
8. Cree un Tablespace, utilizando la minima sintaxis ahora possible:
create tablespace omftbs;
9. Determine las características del Archivo OMF:
select file_name,bytes,autoextensible,maxbytes,increment_by
from dba_data_files where tablespace_name='OMFTBS';
Nota el archivo es inicialmente de 100 MB, autoextensible, sin límite superior.
10. Modifica el archivo OMF para tener características más sensible. Use cualquier nombre de archivo generado por el sistema fue devuelto por el Paso 9:
alter database datafile
' /oradata/ORCL11G/datafile/o1_mf_omftbs_3olpn462_.dbf'
resize 500m;
alter database datafile
'/home/db11g/oradata/ORCL11G/datafile/o1_mf_omftbs_3olpn462_.dbf'
autoextend on next 100m maxsize 2g;
11. Elimine el Tablespace, y utilice un comando del sistema operativo para confirmar que el archiva ha desaparecido.
drop tablespace omftbs including contents and datafiles;

No hay comentarios:

Publicar un comentario