IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

[Oracle 9i] FTL_UTL ne marche plus après un pénible reboot de la base


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 45
    Points : 39
    Points
    39
    Par défaut [Oracle 9i] FTL_UTL ne marche plus après un pénible reboot de la base
    Bonjour,

    J'ai crée une série de procédure avec l'utilisation du package utl_file

    Tout marchait nickel : fopen, création de fichier, écriture etc....

    Suite à un incident sur ma base TEST1; j'ai du redémarrer service/listerner... Depuis mes procédures ne marchent plus : utl_file lance une exception:
    Error -29280: ORA-29280: chemin de répertoire non valide

    Pourtant aucun droit d'accès n'a changé entre temps...

    Sur ce même serveur, j'ai une base TEST2 (moins fournie en données, je dois travailler sur TEST1 malgré tout), j'ai testé une même procédure avec utl_file => tout marche parfaitement bien...

    Comment réactiver le package utl_file sur TEST1? J'ai cru comprendre qu'il faut paramétrer dans le fichier init<SID>.ora, mais j'ai plusieurs fichier init*.ora, mais aucun initTEST1.ora...

    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Important : quelle est ta version d'Oracle ?

    A tous les coups, la variable UTL_FILE_DIR a été modifiée à la main sans que cette modif ait été reportée dans le init.ora => au premier redémarrage de la base, la modif. est écrasée...
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    C'est une version 9.2.0.8.0

    Ou ce trouve les fichier init.ora? Sont t'ils éditables via notepad?

    Merci

  4. #4
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Si tu es sur unix il doit être dans $ORACLE_HOME/dbs, son nom doit être initTEST1.ora. Tu peux l'éditer à la main pour modifier le paramètre utl_file_dir et redémarrer ta base pour que ça soit pris en compte
    Mais attention à vérifier que tu n'utilises pas un spfile qui serait prioritaire par rapport à ton pfile au démarrage de la base
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Attention, si tu as un spfile, il ne faut pas le modifier à la main.

    Applique la modification à ta base en étant loggué en tant que sysdba et précise que tu veux appliquer la modification à la fois à l'instance et au fichier de conf à l'aide de l'instruction SCOPE=BOTH. Fait quelques recherches sur les fichiers d'init, tu devrait trouvé ton bonheur

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    Bonjour merci pour vos réponses


    J'ai fais une recherche sur le paramétrage de utl_file_dir avec la commande:

    SELECT value FROM v$parameter WHERE name LIKE '%utl_file_dir%';
    > D:\Partage\Olivier

    J'ai essayé de faire un
    ref_fichier := UTL_FILE.FOPEN('D:\Partage\Olivier','resultat.txt','w'); (avant j'écrivais dans D:\temp')
    et la ca marche, le fichier est bien crée, je n'ai plus l'erreur
    Error -29280: ORA-29280: chemin de répertoire non valide

    faut il que je lance, en admin system, la commande :
    ALTER SYSTEM SET UTL_FILE_DIR=*

    Afin d'avoir
    SELECT value FROM v$parameter WHERE name LIKE '%utl_file_dir%';
    > *

    Pour créer un fichier n'importe où avec UTL_FILE.FOPEN

    J'ai peur de tout casser dans ma base

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Je ne pense pas que ça marche, tu es obligé de spécifier un à un, et explicitement, chaque répertoire dans lequel tu veux accéder.
    Tu ne peux même pas accéder à un sous-répertoire d'un répertoire déclaré sans déclarer le sous-répertoire également.
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    Je me suis connecté en admin et j'ai fais la commande:

    ALTER SYSTEM SET UTL_FILE_DIR='*' SCOPE=spfile


    J'ai redémarré la base, et maintenant, je peux faire avec succès:
    ref_fichier := UTL_FILE.FOPEN(xxx,'resultat.txt','w')

    avec xxx le répertoire de mon choix... sans avoir l'erreur:
    Error -29280: ORA-29280: chemin de répertoire non valide


    par contre je voudrais rebondir sur ton tout premier message:
    "A tous les coups, la variable UTL_FILE_DIR a été modifiée à la main sans que cette modif ait été reportée dans le init.ora => au premier redémarrage de la base, la modif. est écrasée..."

    Est-ce que "ALTER SYSTEM SET UTL_FILE='*' SCOPE=spfile" est ce que tu appeles une modification à la main? Je vais rebooter la base pour voir si je perd mon paramétrage '*' pour UTL_FILE_DIR

    merci pour vos aides réspectives.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Autant pour moi donc (pour le UTL_FIL_DIR = '*'), il me semblait... peut-être en 8i...

    Ce que je voulais dire, c'était sans le SCOPE=spfile.
    Là, je ne sais pas, mais tiens-nous au courant après ton reboot...
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    En fait on peut dire qu'il y a deux types de configuration :
    - Statique via le fichier initSID.ora
    - Dynamique (via des commandes du type "ALTER")

    Et il existe deux type de fichier d'init :
    - initSID.ora : fichier à editer manuellement
    - spfileSID.ora : fichier à ne surtout pas éditer manuellement

    Si ta base est démarré avec un fichier de conf de type initSID.ora, et si tu veux modifier ton paramètrage, tu as plusieurs solutions :
    - Tu modifie le fichier d'init et tu redémarre ta base pour faire prendre en compte les modifs (à chaque redémarrage de la base, elles le seront)
    - Tu modifie à la volée les paramètres à l'aide de commandes mais au redémarrage de la base, tout est perdu
    - Tu fait les deux (ce qui ne t'oblige pas à redémarrer la base) mais là danger car au redémarrage tu n'es pas sur d'avoir une conf exactement identique.

    Si ta base est démarré avec un fichier de type spfile, tu execute les commandes à la volée et tu spécifie SCOP=BOTH pour que Oracle reporte automatiquement les modif. de la conf dans le fichier d'init.

    Des infos sur le fonctionnement du spfile :
    http://www.trivadis.com/Images/utili...tcm18-7379.pdf
    http://www.developpez.net/forums/arc...hp/t-9689.html

    Voilou, en espérant avoir été clair

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    Merci pour ces explications cheprod

    De mon coté j'ai redémarré la base, et j'ai toujours:
    SELECT value FROM v$parameter WHERE name LIKE '%utl_file_dir%';
    > *


    Donc je peux utiliser utl_file sans avoir l'erreur Error -29280: ORA-29280: chemin de répertoire non valide

    Merci pour vos aides et retours

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    sont-ce mes yeux où personne n'a parlé de créer une DIRECTORY plutôt que faire une grosse faille de sécurité en mettant utl_file_dir à * ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    On est en 9i...

    Edit : finalement, après vérif, je crois que les DIRECTORY sont utilisables depuis la 9i.
    Ca doit être en 8i que ça n'existait pas encore...
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  14. #14
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    en effet, depuis la 9i les directory doivent remplacer utl_file_dir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/05/2009, 19h38
  2. Réponses: 9
    Dernier message: 26/11/2008, 15h48
  3. Réponses: 6
    Dernier message: 02/06/2008, 10h17
  4. [Classloader]mon progr ne marche plus après modif des *.class
    Par Melchisedec dans le forum API standards et tierces
    Réponses: 16
    Dernier message: 30/04/2006, 20h48
  5. [.net] keypress marche plus après click
    Par noinneh dans le forum MFC
    Réponses: 1
    Dernier message: 24/02/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo