8
votes

ORA-29283: Opération de fichier non valide ORA-06512: à "SYS.UTL_FILE", ligne 536

ci-dessous est le code que j'utilise pour extraire des données d'une table à un fichier plat.

Oracle directory 'SEND' points to some UNIX directory which has rights as 
       'rwxrwsr-x' (Octal 2775)
Oracle Version:11g


7 commentaires

Le répertoire a-t-il été envoyé dans le nouveau DB créé? L'utilisateur DB dans la nouvelle DB a-t-il lu et écriture des droits sur l'objet de répertoire DB?


Avez-vous essayé un chemin explicite pour "envoyer"? Qui est propriétaire du dossier? Si vous modifiez les autorisations à: rwxrwsrwx, fonctionne-t-il?


@schurik: Oui, le répertoire est présent dans la nouvelle DB et il a lu et écriture des droits sur le répertoire Oracle. @forsvairr: Pouvons-nous utiliser un chemin explicite au lieu d'envoyer? Si nous pouvons alors comment? Je pensais que Oracle Directory est le seul moyen de spécifier le chemin. Je ne peux pas modifier l'autorisation du répertoire, pas d'accès. Ce dossier appartient à "Build" et "Batch" Créera un fichier dans ce dossier. Les utilisateurs, «Construire» et 'Batch' sont dans le même groupe


Et quel utilisateur du système d'exploitation est-il la nouvelle instance de DB exécutée (le propriétaire de Oracle-Processes)? A-t-il accès au répertoire Send-Unix.


Le fichier est en cours de création par l'utilisateur 'Oracle' vient de remarquer cela dans notre base de données de développement. Je reçois cette erreur car, le répertoire où j'essaie de créer le fichier ne dispose pas d'un accès en écriture pour «Autres» et «Oracle» dans la catégorie «Autres». Merci les gars de m'avoir aidé :)


Dupliqué possible de Procédure UTL_FILE.FOPEN () N'acceptez pas le chemin du répertoire ?


@scurik: Veuillez poster votre commentaire comme réponse. Afin que je puisse l'accepter qui rend la question «résolue»


4 Réponses :


7
votes

Ainsi, @Vivek a la solution au problème via un dialogue dans les commentaires plutôt que par une réponse réelle.

"Le fichier est en cours de création par l'utilisateur oracle vient de le remarquer dans notre base de données de développement. Je reçois cette erreur car, le répertoire où j'essaie de créer le fichier n'a pas accès à l'écriture. Pour Autres et utilisateur oracle est livré sous autres catégorie. "

Qui a dit que le site Q & A n'est pas un forum? Euh, moi, entre autres. Quoi qu'il en soit, en l'absence d'une réponse acceptée à cette question, je proférence un lien vers une réponse à la mine sur le sujet de utl_file.fopen () . Trouvez-le ici .

P.s. Je marquais cette réponse Wiki communautaire, car ce n'est pas une réponse appropriée à cette question, juste une redirection à ailleurs.


2 commentaires

+1, je ne comprends pas bien la tendance à répondre aux questions via des commentaires.


@DCOOKIE - assez drôle je me trouve beaucoup de ces jours-ci, car il y a tellement de questions de faible qualité et / ou de doublons qui ne devraient pas obtenir une réponse réelle. Je fournis une sorte de solution dans un commentaire ainsi que le vote à la fermeture (et peut-être aussi la descendant), de sorte que le demandeur obtient ce qu'ils veulent, mais une vague tentative de suivre les règlements du site.



1
votes

Supposez que le fichier est déjà créé dans le répertoire prédéfini avec nom " table.txt code>"

  • 1) Modifiez la propriété du fichier: p>

    sudo chmod 777 table.txt
    
  • 2) Modifiez le mode du fichier p>

    sudo chown username:username table.txt
    


1 commentaires

Tout ce que vous espérez accomplir, chmod 777 est mauvais et dangereux. Vous voudrez revenir aux autorisations Sane Dès que possible (pour votre cas d'utilisation, probablement CHMOD 755 ) et si vous avez eu des fichiers système inscriptibles mondiaux sur un système à face publique, à tout le moins enquêter sur le fait que cela aurait pu être violé et utilisé comme pivot pointez pour briser le réseau de votre organisation.



0
votes

J'avais été confronté à ce problème pendant deux jours et j'ai constaté que le répertoire que vous crédité dans Oracle a également besoin de créer d'abord sur votre disque physique.

Je n'ai pas trouvé ce point mentionné nulle part où j'ai essayé de regarder le solution à cela. p>

Exemple h2>

Si vous avez créé un répertoire, disons: ' db_dir code>'. p>

CREATE OR REPLACE DIRECTORY DB_DIR AS 'E:\DB_WORKS';


0 commentaires

0
votes

sur Windows Vérifiez également si le fichier n'est pas crypté à l'aide d'EFS. J'ai eu le même problème jusqu'à ce que j'ai déchiffré le fichier manualy.


0 commentaires