Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Mover tabla con un campo BLOB

Estas en el tema de Mover tabla con un campo BLOB en el foro de Oracle en Foros del Web. Hola, estoy intentando mover una tabla en 9i con el comando: ALTER TABLE tabla1 MOVE TABLESPACE tablespace1; y esto me mueve la mayoria de las ...
  #1 (permalink)  
Antiguo 21/01/2008, 10:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
Mover tabla con un campo BLOB

Hola, estoy intentando mover una tabla en 9i con el comando:
ALTER TABLE tabla1 MOVE TABLESPACE tablespace1;
y esto me mueve la mayoria de las tablas del tablespcace, unas 800 aproximadamente, pero en algunas me devuelve el error 'ORA-00997 illegal use of LONG datatype'
He buscado información y por lo visto Oracle no permite ejecutar consultas que contengan objetos BLOB dentro de subconsultas. Esto me hace pensar que el comando ALTER TABLE MOVE TABLESPACE... funciona con subconsultas. He podido ver que hay algunas soluciones concretas para esto, pero me han parecido muy aparatosas y creo que no he llegado a entenderlas demasiado bien, además es tendré que repetir esta operación bastante a menudo, de modo que me gustaria conocer una forma mas práctica de hacerlo.
Estaria muy agradecido si alguien pudiese aconsejarme...
  #2 (permalink)  
Antiguo 21/01/2008, 11:28
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Re: Mover tabla con un campo BLOB

Hola,

El error hace referencia a los tipos de datos LONG, no a los LOBS.

Cita:
ORA-00997 illegal use of LONG datatype
Existen varias restricciones cuando se trata de LONG y el ALTER TABLE MOVE es una de ellas, por eso Oracle desarrollo los LOBS que son la nueva version.

La forma de mover una tabla de un tablespace a otro con un tipo de dato LONG, es a traves de un export/import, supongamos que quieres mover la tabla T1

1. creas la tabla T2 en el tablespace de destino con la misma estructura que T1.
2. exp de T1.
3. imp en T2.
4. drop de T1.
5. rename de T2 a T1.

Recuerda que tendras que pasar todos los objetos que dependen de la tabla, por ejemplo, triggers, constraints, indices, privilegios, etc.

Tambien puedes pasar los datos de T1 a T2 con el comando copy del SQL*Plus, pero no lo recomiendo, es mas seguro el exp/imp y la cantidad de pasos son los mismos.

Los LONG estaran discontinuados muy pronto, si puedes, te recomiendo migrar a LOBS.

Saludos
  #3 (permalink)  
Antiguo 25/01/2008, 01:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Mover tabla con un campo BLOB

Ok, Entiendo.
Lo único que no se es como crear una tabla con la misma estructura exacta que otra...
  #4 (permalink)  
Antiguo 25/01/2008, 01:56
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Re: Mover tabla con un campo BLOB

Hola,

Con la misma estructura, me refiero a los cantidad y tipos de campos. Cualquier herramienta de base de datos te puede generar la sentencia DDL para una tabla, despues de eso, lo unico que queda es crearla en el tablespace de destino.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.