ORA-29283:La operación de archivos no válidos es un error bastante común.
Ocurre principalmente por dos razones
(1) El directorio y el archivo deben tener el permiso adecuado en el nivel del sistema operativo para el mismo usuario que inició la base de datos de Oracle
Por ejemplo
The directory does not exists on OS ls /u555/app/oracle No such file or directory SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('/u555/app/oracle','k', 'w'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
Esto también sucede si el directorio no tiene el permiso adecuado para el usuario de Oracle desde el que se inicia la base de datos.
Si está realizando algún cambio a nivel de grupo en Unix y los usuarios de Oracle están involucrados, se recomienda rebotar tanto la base de datos como el oyente también
Esto también puede suceder si ha creado un directorio de Oracle como este
SQL> create directory TESTDIR as '/u555/oracle/tmp'; SQL> grant read,write on directory TESTDIR to public;
Pero no existe en OS
SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('TESTDIR','k', 'w'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
Esto también puede suceder cuando está leyendo el archivo y el usuario del sistema operativo Oracle no tiene permiso para hacerlo
SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('/u555/app/oracle','k', 'r'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
(2) La segunda razón más importante de este error es la configuración de ORA_NLS10 en la base de datos Oracle y el entorno de escucha.
Si habilita truss en el proceso, el archivo de truss muestra que se lee un bloque del archivo y los bloques posteriores no se pueden leer o corromper debido a la configuración de NLS (ORA_NLS10).
El siguiente error podría mostrarse en el truss
file read error
file write error
internal error
invalid maximum line size
invalid file name
directory access denied
invalid offset specified for seek
file remove operation failed
file rename operation failed
A stream error occurred during compression or uncompression.
A data error occurred during compression or uncompression.
invalid mime header tag
invalid encoded string
The compressed representation is too big
Se recomienda tener configuraciones consistentes en la base de datos y el oyente.
Tanto la base de datos como el Listener tienen el mismo ORA_NLS10 configurado o ambos tienen los valores sin configurar.
Configuración de ORA_NLS10
ORACLE_SID=TEST ORA_NLS10=< > sqlplus / as sysdba shutdown immediate startup lsnrctl stop TEST lsnrctl start TEST
Desactivar ORA_NLS10
ORACLE_SID=TEST unset ORA_NLS10 sqlplus / as sysdba shutdown immediate startup lsnrctl stop TEST lsnrctl start TEST
Si la base de datos y el agente de escucha se inician con el clúster de Oracle, podemos realizar esta configuración en srvctl.
Podemos verificar la configuración de ORA_NLS usando el siguiente comando en el sistema operativo
Encuentra el proceso PMON
ps -ef|grep pmon|grep TEST For Linux: $ strings /proc/<pmon process ID>/environ | grep NLS For Solaris: $ pargs -e <process ID> | grep NLS
Encuentra el proceso de escucha
ps -ef|grep list|grep TEST For Linux: $ strings /proc/<pmon process ID>/environ | grep NLS For Solaris: $ pargs -e <process ID> | grep NLS
Ejemplo
Podemos hacer lo siguiente para reproducir el problema
ORA_NLS10=< > sqlplus / as sysdba shutdown immediate startup lsnrctl stop TEST lsnrctl start TEST Now unset ORA_NLS10 Now Setup Bequeath connection sqlplus / as sysdba SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('TESTDIR','k', 'w'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
Espero que te guste esta publicación sobre Cómo resolver ORA-29283:operación de archivo no válida y que esto te ayude en la solución de problemas
También, Leer
Cómo cambiar la contraseña de las aplicaciones en R12.2
Comando FNDLOAD:El comando/cargador FNDLOAD es una utilidad de propósito general que mueve datos estructurados entre un archivo de texto y una base de datos en un entorno EBS.
ORA-29280:ruta de directorio no válida
ORA-29285:error de escritura de archivo