Cambiar precisión de number(20,4)a(20,5) en Oracle

Les hago una consulta, trabajo con la version de Oracle 9.2.0.7 y tengo una tabla que tiene, entre otros campos, 6 campos que son number (20,4), esta tabla esta particionada por un campo fecha, cada día contiene 32 millones de registros y tenemos 3 meses vigentes de información.
El problema que tengo es que quiero llevar los 6 campos que están definidos como number(20,4) a (20,5) porque necesito que tengan 5 números decimales.
Estuve pensando de resolverlo de la siguiente manera:
1. Renombrar las columnas afectadas (number (20,4)) con un nombre nuevo
2. Crear columnas nuevas, con el nombre que tenían las columnas renombradas, con la nueva precisión (number 20,5)
3. Copiar el contenido de las columnas renombradas a las nuevas columnas.
4. Una vez copiados todos los datos, borrar las columnas renombradas
El problema se presenta cuando copiemos los datos viejos a los nuevos campos se va a duplicar la información y calculamos que ocupara aproximadamente 826Gb.
Entonces la consulta es la siguiente, ¿existe alguna otra forma más óptima de cambiar la precisión de un campo numérico definido como (number 20,4) a (number 20,5)? ¿Esta solución debería ser efectuada por un DBA o por un desarrollador?

1 respuesta

Respuesta
1
La cuestión que planteas no necesita tanto trabajo como te imaginas, ya que es simplemente ejecutar un comando:
ALTER TABLE NOMBRE_TABLA MODIFY (NOMBRE_COLUMNA NUMBER(20,5));
La ejecución de esta sentencia tiene que ser desde el usuario propietario de la tabla. Si no dispones de este usuario, pero sí de un usuario con permisos de administrador, sería:
ALTER TABLE PROPIETARIO.NOMBRE_TABLA MODIFY (NOMBRE_COLUMNA NUMBER(20,5));

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas