Desfragmentar un tablespace en Oracle 9i
2 participantes
Página 1 de 1.
Desfragmentar un tablespace en Oracle 9i
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?
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?
alextroy- Cantidad de envíos : 4
Fecha de inscripción : 30/01/2008
Re: Desfragmentar un tablespace en Oracle 9i
Welcome jejejeje primer respuesta
Contesto suponiendo que tengas Oracle 8.1.6 o superior
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
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
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 ?
Contame como te fue con el tema.
Saludos
Melmak7
Contesto suponiendo que tengas Oracle 8.1.6 o superior
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
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
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 ?
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?
Melmak7- Cantidad de envíos : 9
Fecha de inscripción : 30/01/2008
Re: Desfragmentar un tablespace en Oracle 9i
Por cierto, probaste haciendo un COALESCE ?
ALTER TABLESPACE Ejemplotbs COALESCE ;
Saludos
Melmak7
ALTER TABLESPACE Ejemplotbs COALESCE ;
Saludos
Melmak7
Melmak7- Cantidad de envíos : 9
Fecha de inscripción : 30/01/2008
Re: Desfragmentar un tablespace en Oracle 9i
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
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
Desfragmentar tablespace 9i
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...
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
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.