8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Misc | PL / SQL | SQL | RAC | WebLogic | Linux
Inicio «Artículos» 8i «aquí
Oracle 8i introdujo la capacidad de eliminar una columna de una tabla. Antes de esto, era necesario eliminar toda la tabla. y reconstruirla. Ahora puede marcar una columna como no utilizada (eliminación lógica) o eliminarla por completo (eliminación física).
- Eliminación lógica
- Eliminación física
- Consideraciones
Eliminación lógica
En tablas grandes, el proceso de eliminación física de una columna puede consumir mucho tiempo y recursos. Por esta razón, puede decidir eliminar lógicamente
alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);
Una vez hecho esto, las columnas ya no serán visibles para el usuario. Si en una fecha posterior tiene tiempo para eliminar físicamente las columnas, puede hacer usando lo siguiente.
alter table table_name drop unused columns;
En tablas grandes, puede reducir la cantidad de registros de deshacer acumulados usando la opción CHECKPOINT que fuerza un punto de control después del número especificado de Las filas se han procesado.
La vista DBA_UNUSED_COL_TABS
se puede utilizar para ver el número de columnas no utilizadas por tabla.
Eliminación física
Para eliminar físicamente una columna, puede utilizar una de las siguientes sintaxis, dependiendo de si desea eliminar una columna única o varias.
alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);
Eliminar una columna de una tabla hará que todas las columnas no utilizadas en esa tabla se eliminen al mismo tiempo.
Consideraciones
Eliminar una columna puede no resultar en espacio libre utilizable adicional en el bloque. Si la columna es pequeña, solo obtendrá pequeñas porciones de espacio en cada bloque que pueden no ser reutilizables. La única forma en que se liberará para su reutilización es reconstruir / mover la tabla. Es más eficaz marcar la columna como inutilizable y luego reconstruir la tabla. Por defecto, un movimiento no es una operación en línea.
alter table table_name set unused (column_name);alter table table_name move;
En versiones posteriores de la base de datos, la operación de movimiento se puede realizar en línea.
alter table table_name set unused (column_name);alter table table_name move online;
Espero que esto ayude. Saludos Tim …
Volver al principio.