jueves, 20 de noviembre de 2008

Cómo recrear un tablespace con datos

En algunas oportunidades nos podemos encontrar con la necesidad de recrear un talespace que ya contiene datos, como por ejemplo cuando queremos cambiar una opción del tablespace , la cual la sentencia “alter tablespace” no nos permite modificar. En estos casos podemos seguir los siguientes pasos para re-crear el tablespace sin perder los datos que contiene el mismo, de una forma sencilla:

Paso 1.- Primero confirmamos el espacio ocupado por el tablespace actualmente:
sql>select sum(bytes)/1024/1024 MB from user_segments where tablespace_name = 'tbsname';

Paso 2.- Exportar los datos existentes en el tablespace que se desea recrear:
# exp system/psswd tablespaces=tbsname compress=n direct=y file=nombre.dmp log=nombre.log;

Paso 3.- Borrar el tablespace, desde el Enterprise Manager o via comandos:
sql> drop tablesapce tbsname including contents and datafiles;

Paso 4.- Recrear el tablespace. En este caso, por ejemplo, se quería cambiar la clausula de “segment space management” de manual a auto. De igual forma se puede re-crear el TBS vía EM o por linea de comandos:
sql> create tablespace tbsname datafile '/…./…dbf' size 20M autoextend on next 2048K maxsize 4000M logging extent management local segment space management auto;

Paso 5.- Importar el tablespace:
# imp system/psswd full=y file=nombre.dmp log=nombre.log tablespaces=tbsname rows=y indexes=y constraints=y commit=y ignore=y grants=n buffer=500000
Y con eso ya tendríamos los datos.

Paso 6.- Finalmente deberíamos comprobar que existe la misma cantidad de información el TBS luego de realizar el import:
sql>select sum(bytes)/1024/1024 MB from user_segments where tablespace_name = 'tbsname';

0 comentarios: