Solución:
Las preguntas frecuentes de Oracle dicen:
Oracle solo permite agregar columnas al final de una tabla existente.
Tendrías que recrear tu mesa.
RENAME tab1 TO tab1_old;
CREATE TABLE tab1 AS SELECT id, <the rest of your columns> FROM tab1_old;
La forma más sencilla de modificar el orden lógico de las columnas de una tabla es cambiar el nombre de la tabla y crear una vista con las posiciones de columna “correctas”:
ALTER TABLE your_table RENAME TO your_table_t;
CREATE VIEW your_table AS SELECT <columns in the right order> FROM your_table_t;
-- grants on the view (the same as the table)
GRANT ** TO ** ON your_table;
Su aplicación se comportará como si las columnas estuvieran en la posición “correcta”. No tienes que tocar la estructura física.
En Oracle 12c ahora es más fácil reorganizar las columnas de forma lógica. Se puede lograr haciendo que la columna sea invisible / visible. Si cambia una columna invisible a visible, la columna aparecerá en último lugar en el orden.
Considere el uso de columnas invisibles
Crear tabla wxyz:
CREAR TABLA t (w INT,
y VARCHAR2, z VARCHAR2, x VARCHAR2
);
reorganizar la columna x en el medio:
ALTER TABLE wxyz MODIFY (y INVISIBLE, z INVISIBLE); ALTER TABLE wxyz MODIFY (y VISIBLE, z VISIBLE);
DESCRIBE wxyz;
Nombre
w
X
y
z