Oracle Inside
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Desfragmentar un tablespace en Oracle 9i

2 participantes

Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Desfragmentar un tablespace en Oracle 9i

Mensaje  alextroy Miér Ene 30, 2008 11:54 am

Parece ser que voy a inaugurar este foro, lo cual es un privilegio. De modo que intentaré hacerlo con una pregunta interesante, al menos para mi...

Resulta que tengo que desfragmentar el tablespace principal de mi base de datos, ya que según la herramienta de diagnostico del TOAD está fragmentado en un 32%.

Investigando en la red he encontrado dos formas de hacerlo:

La primera consistia en crear un nuevo tablespace, mover todas las tablas del tablespace fragmentado a este nuevo, eliminarlas en el tablespace viejo, y luego renombrarlas en el nuevo.
Pero esta opción es la que intenté con escaso éxito. Resulta que al intentar mover las tablas ´con el comando ALTER TABLE...MOVE TABLESPACE...se movieron unas 850, pero gran cantidad de tablas, no se movieron. Investigando descubrí que esto ocurrión porque tenian un campo LONG, y la solución era moverlas una a una, con sus índices respectivos. Así que decidí volver a dejarlo todo como estaba, osea, fracaso. Además tuve que volver a instalar las aplicaciones, y por poco casi la base de datos.

La otra opción que tengo consiste en hacer un export del contenido del tablespace, luego eliminar los objetos del mismo, colapsar el tablespace y finalmente importar lo que se habia exportado.

Realmente esta opción parece bastante mas sencilla, pero decidí probar con la otra porque me parecia mas "divertida", ahora ya no.

Lo que me gustaria saber es como hago el export de un solo tablespace, es decir, el comando, como eliminar todos los objetos de un plumazo ( no se si será el comando DROP tablespace...) y como volver a volcar los objetos en el mismo tablepace. Realmente lo que necesito es la sintaxis correcta de las operaciones.

Puede que me haya enrollado demasiado, pero el estreno de un foro se lo merece ¿no? Very Happy

alextroy

Cantidad de envíos : 4
Fecha de inscripción : 30/01/2008

Volver arriba Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Re: Desfragmentar un tablespace en Oracle 9i

Mensaje  Melmak7 Miér Ene 30, 2008 12:51 pm

Welcome jejejeje primer respuesta Very Happy

Contesto suponiendo que tengas Oracle 8.1.6 o superior Wink

El tema de la fragmentacion tiene muchos mitos.

Antes que nada fijate si el tablespace es LMT o DMT, si es LMT entonces dejalo a Toad que diga lo que quiera, porque los tablespace manejados localmente se fragmentan insignificativamente.


Suponiendo que es DMT :

Con respecto a como reorganizar el tablespace: La utilidad exp de oracle posee entre sus modos (full,usuario,tabla, tablespace) justamente este ultimo que te permite exportar todas las tablas, indices, etc pertenecientes a un tablespace. Incluso si una tabla particionada tiene una particion en este tablespace se exportan todas las particiones Wink

Fijate si podes exportar el tablespace, eliminarlo, crearlo como LMT e importar todo de nuevo. Asi te olvidas
de que esto vuelva a pasar.

Ejemplo:

-- FULL BACKUP DATABASE Wink

exp TRANSPORT_TABLESPACE=y TABLESPACES=(DATOSTBS,INDICESTBS) TRIGGERS=y CONSTRAINTS=n GRANTS=n FILE=TBS_DATOS_INDICES.dmp

DROP TABLESPACE DATOSTBS INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE INDICESTBS INCLUDING CONTENTS AND DATAFILES;

CREATE TABLESPACE DATOSTBS DATAFILE
'/oradata/BASE/DATOSTBS_01.dbf' SIZE 500M AUTOEXTEND ON NEXT 10M MAXSIZE 2000M
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

CREATE TABLESPACE INDICESTBS DATAFILE
'/oradata/BASE/INDICESTBS_01.dbf' SIZE 500M AUTOEXTEND ON NEXT 10M MAXSIZE 2000M
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

IMP TRANSPORT_TABLESPACE=y FILE=TBS_DATOS_INDICES.dmp DATAFILES= '/oradata/BASE/DATOSTBS_01.dbf','/oradata/BASE/INDICESTBS_01.dbf') TABLESPACES=(DATOSTBS,INDICESTBS) TTS_OWNERS=(MARTA) FROMUSER=(MARTA) TOUSER=(MARTA)

Por cierto, luego de exportar los tablespaces, proba importarlos en otra base hasta que tengas bien en claro la sintaxis y los pasos a seguir, mira si exportas, borras los tablespaces y despues te fallo el import o algo asi ?
Wink

Contame como te fue con el tema.

Saludos

Melmak7


alextroy escribió:Parece ser que voy a inaugurar este foro, lo cual es un privilegio. De modo que intentaré hacerlo con una pregunta interesante, al menos para mi...

Resulta que tengo que desfragmentar el tablespace principal de mi base de datos, ya que según la herramienta de diagnostico del TOAD está fragmentado en un 32%.

Investigando en la red he encontrado dos formas de hacerlo:

La primera consistia en crear un nuevo tablespace, mover todas las tablas del tablespace fragmentado a este nuevo, eliminarlas en el tablespace viejo, y luego renombrarlas en el nuevo.
Pero esta opción es la que intenté con escaso éxito. Resulta que al intentar mover las tablas ´con el comando ALTER TABLE...MOVE TABLESPACE...se movieron unas 850, pero gran cantidad de tablas, no se movieron. Investigando descubrí que esto ocurrión porque tenian un campo LONG, y la solución era moverlas una a una, con sus índices respectivos. Así que decidí volver a dejarlo todo como estaba, osea, fracaso. Además tuve que volver a instalar las aplicaciones, y por poco casi la base de datos.

La otra opción que tengo consiste en hacer un export del contenido del tablespace, luego eliminar los objetos del mismo, colapsar el tablespace y finalmente importar lo que se habia exportado.

Realmente esta opción parece bastante mas sencilla, pero decidí probar con la otra porque me parecia mas "divertida", ahora ya no.

Lo que me gustaria saber es como hago el export de un solo tablespace, es decir, el comando, como eliminar todos los objetos de un plumazo ( no se si será el comando DROP tablespace...) y como volver a volcar los objetos en el mismo tablepace. Realmente lo que necesito es la sintaxis correcta de las operaciones.

Puede que me haya enrollado demasiado, pero el estreno de un foro se lo merece ¿no? Very Happy
Melmak7
Melmak7

Cantidad de envíos : 9
Fecha de inscripción : 30/01/2008

Volver arriba Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Re: Desfragmentar un tablespace en Oracle 9i

Mensaje  Melmak7 Miér Ene 30, 2008 1:08 pm

Por cierto, probaste haciendo un COALESCE ?

ALTER TABLESPACE Ejemplotbs COALESCE ;

Saludos

Melmak7
Melmak7
Melmak7

Cantidad de envíos : 9
Fecha de inscripción : 30/01/2008

Volver arriba Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Re: Desfragmentar un tablespace en Oracle 9i

Mensaje  alextroy Jue Ene 31, 2008 3:28 am

Bien, Gracias por esta primera respuesta...

En primer lugar, tengo Oracle 9i, aunque imagino que no habra mucha diferencia.

En cuanto a si el tablespace es DTM o LMT no tengo ni idea, pero voy a mirarlo ahora mismo.

y referente a COALSECE, sique lo he probado, pero tras ver que no hacia nada investigué un poco mas y pude ver que lo que hace realmente este comando es unificar las extensiones libres contiguas, pero no toca los datos. Aunque si se puede utilizar una vez se haya vaciado el tablespace para dejar una única extensión.

En fin, voy a trastear en el servidor de pruebas y ya te comento como ha ido....

Un saludo

alextroy

Cantidad de envíos : 4
Fecha de inscripción : 30/01/2008

Volver arriba Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Desfragmentar tablespace 9i

Mensaje  alextroy Vie Feb 01, 2008 3:51 am

Pues lo he comprobado y el tablespace es LMT.
Entonces ¿no hace falta desfragmentarlo?

Lo que no entiendo es que de aproximadamente 50 servidores, solo se han fragmentado 3 de ellos...

alextroy

Cantidad de envíos : 4
Fecha de inscripción : 30/01/2008

Volver arriba Ir abajo

Desfragmentar un tablespace en Oracle 9i Empty Re: Desfragmentar un tablespace en Oracle 9i

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.