Sei sulla pagina 1di 3

Tema 3.

Almacenamiento y Estructura de Archivos

Administracin de Bases de Datos

Tema 3. Almacenamiento y Estructura de Archivos ALTER TABLESPACE prueba ONLINE

Administracin de Bases de Datos

Tema 3 Almacenamiento y Estructura de Archivos. Guin de prcticas con Oracle.


3.5. Revisin de la Organizacin Interna de los Ficheros en Sistemas Comerciales Consultar el estado actual de la base de datos: tablespaces y ficheros.
SELECT file_name,tablespace_name FROM dba_data_files; SELECT file_name FROM dba_data_files;

y creamos la tabla.

Aadir un fichero $ORACLE_BASE/oradata/ora1/prueba02.dbf al tablespace PRUEBA con tamao 500K, autoextensin en 10K y mximo tamao en 1M.
ALTER TABLESPACE prueba ADD DATAFILE '$ORACLE_HOME/oradata/ora1/prueba02.dbf' SIZE 500K AUTOEXTEND ON NEXT 10K MAXSIZE 1M;

Comprobar que el fichero se ha creado y que realmente su tamao es de 500K.


Hacemos ls l en el directorio $ORACLE_BASE/oradata/ora1/

Crear un tablespace llamado prueba asociado a un fichero $ORACLE_HOME/oradata/ora1/prueba01.dbf de 1M.


CREATE TABLESPACE PRUEBA DATAFILE '$ORACLE_BASE/oradata/ora1/prueba01.dbf' SIZE 1M OFFLINE;

Comprobar la asociacin de ficheros y tablespaces


SELECT file_name, tablespace_name FROM dba_data_files;

Realizar un conjunto de inserciones.


A libre eleccin del alumno introducir datos usando INSERT en la tabla creada

Comprobar que el fichero se ha creado y que realmente su tamao es de 1M.


Hacemos ls l en el directorio $ORACLE_BASE/oradata/ora1/

Comprobar los bloques, bloques vacos y dems parmetros de la tabla.


SELECT table_name, blocks, empty_blocks, pct_increase, pct_free FROM dba_tables WHERE tablespace_name ='PRUEBA' No obtenemos nada puesto que no he ejecutado ANALYZE ... sobre la tabla pp por lo que no tenemos estadsticas ANALYZE TABLE pp COMPUTE STATISTICS; Esto permite a Oracle analizar los parmetros dinmicos del objeto tabla pp para nuestro estudio.

Comprobar que las modificaciones han sido correctas.


SELECT file_name,tablespace_name FROM dba_data_files;

Creamos una tabla de ejemplo (diseo libre) en el tablespace prueba.


CREATE TABLE pp (PP VARCHAR2(5)) TABLESPACE prueba;

Comprobar los bloques, bloques vacos y dems parmetros de la tabla.


SELECT table_name, blocks, empty_blocks, pct_increase, pct_free FROM dba_tables WHERE tablespace_name ='PRUEBA'

Obtenemos un error, explicar causas del error.


Se produce el siguiente error: ERROR at line 1: ORA-01542: TABLESPACE 'PRUEBA' is offline, cannot allocate space in it El tablespace est offline. Lo comprobamos. Visualizamos el status del TABLESPACE: SELECT tablespace_name,status FROM dba_tablespaces;

Borrar las estadsticas.


ANALYZE TABLE pp DELETE STATISTICS;

Comprobar el tamao de INITIAL_EXTENT junto con el n de bloques ocupados + bloques libres.


SELECT table_name, initial_extent FROM dba_tables where tablespace_name='PRUEBA';

Corregir el error.
Ponemos el TABLESPACE en lnea:

Visualizar otros datos como los parmetros de autoincremento y autoextensible SELECT file_name, tablespace_name, bytes, blocks, autoextensible, increment_by FROM dba_data_files

Tema 3. Almacenamiento y Estructura de Archivos

Administracin de Bases de Datos

Tema 3. Almacenamiento y Estructura de Archivos

Administracin de Bases de Datos

Intentar borrar el tablespace prueba.


DROP TABLESPACE prueba;

3.6. La Organizacin de Archivos y el Diccionario de Datos Comprobar la estructura de la vista dictionary y dict.
DESC DICTIONARY DESC DICT

Explicar los errores.


Obtendremos un error puesto que la tabla pp en el TABLESPACE tendr valores ERROR at line 1: ORA-01549: TABLESPACE not empty, use INCLUDING CONTENTS option

Consultar aquellas tablas con informacin sobre tablas del sistema.


SELECT * FROM DICT WHERE TABLE_NAME LIKE '%TABLE%';

Corregir el error.
Usamos la clausula INCLUDING CONTENTS DROP TABLESPACE prueba INCLUDING CONTENTS;

Consultar las columnas y descripcin de la tabla dba_tables a travs de la vista dict_columns.


SELECT column_name,comments FROM dict_columns WHERE table_name='DBA_TABLES';

Comprobar que ya no existe el tablespace.


SELECT tablespace_name FROM dba_tablespaces;

Consultar los segmentos y numero de extensiones del tablespace RBS.


SELECT segment_name, extents FROM dba_segments WHERE tablespace_name='RBS';

Abrir una sesin del shell de linux y comprobar que el fichero asociado al tablespaces sigue existiendo. Borrarlo con las utilidades de sistema.
$ rm $ORACLE_BASE/oradata/ora1/prueba01.dbf $ rm $ORACLE_BASE/oradata/ora1/prueba02.dbf

Consultar las extensiones, identificador de fichero y bytes del segmento cuyo nombre es RB1.
SELECT extent_id, file_id, bytes FROM dba_extents WHERE segment_name = 'RB1';

Unir esta informacin con la dba_data_files para saber en que fichero se almacenan dichas extensiones.
Deben estar todos en el mismo fichero. SELECT extent_id, ext.file_id,ext.bytes, file_name FROM dba_extents ext, dba_data_files WHERE ext.segment_name = 'RB1' AND ext.file_id=dba_data_files.file_id

Ver la estructura de la vista DBA_USERS.


DESC DBA_USERS

Ver los usuarios actualmente definidos.


SELECT USERNAME FROM DBA_USERS;

Tema 3. Almacenamiento y Estructura de Archivos

Administracin de Bases de Datos

Tema 3. Almacenamiento y Estructura de Archivos

Administracin de Bases de Datos

3.7 Tcnicas de Compactacin Consultar los segmentos asignados al usuario SCOTT en el tablespace USERS.
SELECT tablespace_name, segment_name, segment_type, extents, blocks, bytes FROM sys.dba_segments WHERE owner='SCOTT' AND tablespace_name='USERS';

3.8 Gestor de Cach Apagar la instancia de la base datos y volverla a arrancar desde el srvmgrl (repasar Tema 2 ). Comprobar los valores del hit ratio sin usar los scripts utlbstat y utlestat.
SELECT (((cur.value + con.value) - phy.value) / (cur.value + con.value) * 100) Hit_Ratio FROM v$sysstat cur, v$sysstat con, v$sysstat phy WHERE cur.name = 'db block gets' AND con.name = 'consistent gets' AND phy.name = 'physical reads'

Consultar los segmento y n de extensiones del usuario SYS del tablespaces SYSTEM donde el n de extensiones es mayor de 10 ordenado descendentemente de mayor a menor.
SELECT segment_name, extents FROM sys.dba_segments WHERE owner='SYS' AND tablespace_name='SYSTEM' AND extents > 10 ORDER BY extents DESC

Realizar varias consultas sobre tablas del catlogo.


A libre eleccin del alumno.

Comprobar si el hit ratio mejora o empeora. Explicar los motivos.


SELECT (((cur.value + con.value) - phy.value) / (cur.value + con.value) * 100) Hit_Ratio FROM v$sysstat cur, v$sysstat con, v$sysstat phy WHERE cur.name = 'db block gets' AND con.name = 'consistent gets' AND phy.name = 'physical reads'

Consultar las extensiones asignadas al segmento EMP de SCOTT junto con el fichero asignado a la extensin.
SELECT segment_name, extent_id, ext.bytes, ext.file_id, file_name FROM dba_extents ext, dba_data_files df WHERE owner='SCOTT' AND segment_name='EMP' AND ext.file_id=df.file_id

Ejecutar el script utlbstat (completar con la ruta adecuada).


@$ORACLE_HOME/rdbms/admin/utlbstat.sql

Conectamos con el usuario SCOTT/TIGER.


connect scott/tiger

Realizar varias consultas sobre tablas del catlogo u otro tipo de operacin.
A libre eleccin del alumno, sin olvidar hacer un commit de las inserciones.

Crear una tabla de prueba en el tablespace users.


CREATE TABLE pp(pp varchar2(10)) TABLESPACE USERS;

Ejecutar el script utlestat (completar con la ruta adecuada).


@$ORACLE_HOME/rdbms/admin/utlestat.sql

Insertar filas en dicha tabla.


A libre eleccin del alumno introducir datos usando INSERT en la tabla creada (hacer commit al final del proceso).

Exportar la tabla de prueba.


$ exp scott/tiger file=pp.dmp compress=y tables=pp

Revisar el fichero report.txt y calcular el hit ratio. Deducir si el valor es correcto y comparar con los valores ya calculados. Que modificaciones podramos hacer ?
Por defecto debera existir un fichero report.txt en el directorio $HOME de nuestro usuario. Redimensionar el parmetro DB_BLOCK_BUFFERS para comprobar nuevos resultados aumentando o bajando el valor. Parar y arrancar de nuevo la instancia para comprobar nuevos resultados.

Borrar la tabla de prueba.


DROP TABLE pp;

Importar el contenido de la tabla de prueba.


$ imp scott/tiger file=pp.dmp

Verificar que se ha recuperado la tabla sin ningn error.


SELECT * FROM pp;