ORA-29283: fichier non valide opération ORA-06512: à “SYS.UTL_FILE”, à la ligne 536
Ci-dessous le code que j'utilise pour extraire des données d'une table vers un fichier plat.
BEGIN
DECLARE
file_name VARCHAR2(50);
file_handle utl_file.file_type;
BEGIN
file_name := 'table.txt';
file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
SELECT column 1
||'~'||column 2
||'~'||column 3 out_line
FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;
Ce code fonctionne très bien dans notre base de données de développement, mais son lancer l'erreur ci-dessous si j'execute dans une nouvelle DB.
Error starting at line 1 in command:
BEGIN
DECLARE
file_name VARCHAR2(50);
file_handle utl_file.file_type;
BEGIN
file_name := 'table.txt';
file_handle := utl_file.fopen('SEND',file_name,'W');
FOR rec in(
SELECT column 1
||'~'||column 2
||'~'||column 3 out_line
FROM table1)LOOP
UTL_FILE.PUT_LINE(file_handle,rec.out_line);
UTL_FILE.FFLUSH(file_handle);
END LOOP;
UTL_FILE.FCLOSE(file_handle);
END;
end;
Error report:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 7
29283. 00000 - "invalid file operation"
*Cause: An attempt was made to read from a file or directory that does
not exist, or file or directory access was denied by the
operating system.
*Action: Verify file and directory access privileges on the file system,
and if reading, verify that the file exists.
Oracle directory 'SEND' points to some UNIX directory which has rights as
'rwxrwsr-x' (Octal 2775)
Oracle Version:11g
Merci de m'aider à résoudre ce problème.
Les gars s'il vous plaît ne laissez-moi savoir si vous avez besoin de plus de données à partir de moi à résoudre cette question.
a l'annuaire ENVOYER dans la nouvelle base de données? L'utilisateur de la base dans la nouvelle bd a LIRE et ÉCRIRE des droits sur la base de données-objet de RÉPERTOIRE?
Avez-vous essayé un chemin pour "ENVOYER"? Qui possède le dossier? Si vous modifiez les autorisations pour: rwxrwsrwx, ça fonctionne?
et ce que l'OS de l'utilisateur est la nouvelle DB-Instance en cours d'exécution, (le propriétaire de l'oracle-processus)? Ne il a accès à l'ENVOYER-répertoire UNIX.
Le fichier est créé par un utilisateur "oracle" juste remarqué cela dans notre base de données de développement. je reçois ce message d'erreur, car le répertoire où j'essaie de créer le fichier n'a pas d'accès en écriture pour les "autres" et l'utilisateur "oracle" vient sous la catégorie autres. Merci les gars pour m'aider 🙂
double possible de UTL_FILE.FOPEN(procédure de non-acceptation de chemin d'accès de répertoire ?
Avez-vous essayé un chemin pour "ENVOYER"? Qui possède le dossier? Si vous modifiez les autorisations pour: rwxrwsrwx, ça fonctionne?
et ce que l'OS de l'utilisateur est la nouvelle DB-Instance en cours d'exécution, (le propriétaire de l'oracle-processus)? Ne il a accès à l'ENVOYER-répertoire UNIX.
Le fichier est créé par un utilisateur "oracle" juste remarqué cela dans notre base de données de développement. je reçois ce message d'erreur, car le répertoire où j'essaie de créer le fichier n'a pas d'accès en écriture pour les "autres" et l'utilisateur "oracle" vient sous la catégorie autres. Merci les gars pour m'aider 🙂
double possible de UTL_FILE.FOPEN(procédure de non-acceptation de chemin d'accès de répertoire ?
OriginalL'auteur Vivek | 2011-05-16
Vous devez vous connecter pour publier un commentaire.
Donc, @Vivek a la solution à ce problème par le biais d'un dialogue dans les Commentaires plutôt que par le biais d'une réponse réelle. Qui l'a dit est un Q&Un site qui n'est pas un forum? Heu, moi, entre autres.
De toute façon, en l'absence d'une accepté de répondre à cette question, je vous en proposons un lien vers une réponse de la mine sur le thème de la
UTL_FILE.FOPEN()
. Le trouver ici.P. S. je suis marquage de cette réponse Wiki de la Communauté, parce que c'est pas une bonne réponse à cette question, juste une redirection vers un autre endroit.
OriginalL'auteur
J'avais été confronté à ce problème pour deux jours et j'ai trouvé que le répertoire que vous créez dans Oracle doit également créé d'abord sur votre disque physique. Je n'ai pas trouver ce point mentionné nulle part j'ai essayé de chercher la solution à ce.
c'est à dire
Si vous avez créé un répertoire, disons, 'DB_DIR'.
Alors vous devez vous assurer que DB_WORKS existe dans votre lecteur E:\ et aussi le système de fichiers en Lecture/Écriture sont disponibles à l'Oracle processus.
Ma compréhension de UTL_FILE de mes expériences ci-dessous, pour ce genre d'opération.
OriginalL'auteur Ayush Pratap Singh
Sur Windows également vérifier si le fichier n'est pas crypté à l'aide de système de fichiers EFS. J'ai eu le même problème jusqu'à ce que je décrypté le fichier à la main.
OriginalL'auteur Khamyl
assumer fichier est déjà créé dans le répertoire prédéfini avec le nom "table.txt"
1. changer le propriétaire du fichier
sudo chown {votre nom d'utilisateur}: {votre nom d'utilisateur} table.txt
2ème modifier le mode du fichier
sudo chmod 777 table.txt
essayez maintenant il devrait fonctionner!!!!
OriginalL'auteur kuldeep