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

Oracle Discussion :

PLS-00201: identifier 'SYS.DBMS_LOCK'


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut PLS-00201: identifier 'SYS.DBMS_LOCK'
    Bonjour,

    j'essaie d'exécuté une procédure toute bête, exemple d'un livre que je li,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create or replace PROCEDURE wait(
    ain_seconds                    in     number) is
    begin
     SYS.DBMS_LOCK.sleep(ain_seconds);
    end wait;
    mais j’obtiens cette erreur:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR at line 4: PLS-00201: identifier 'SYS.DBMS_LOCK' must be declared
    Je me suis déjà connecter entant que administrateur pour jouer ce code ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT EXECUTE ON DBMS_LOCK TO PUBLIC;
    et là encore une erreur qui indique que je n'ai pas assez de privilège:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01031: insufficient privileges

    Dans le livre c'est aussi dit que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    By default, the SYS.DBMS_LOCK package is not accessible by non-DBA users. The username
    creation script in this book’s appendix will grant you access, but if you don’t use that script, you may need to
    ask your DBA to explicitly grant you execute access to package SYS.DBMS_LOCK

    Je vous remercie d'avance.

  2. #2
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Il faut donner les droits explicitement au utilisateur, pas au role:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    conn sys...
    create user t identified by t;
    grant create session, create procedure to t;
    grant execute on dbms_lock to t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    conn t/t@...
    CREATE OR REPLACE PROCEDURE wait(
    ain_seconds                    IN     number) IS
    begin
     SYS.DBMS_LOCK.sleep(ain_seconds);
    end wait;
    /
     
    set timing on
    exec wait (2);
    Elapsed: 00:00:02.03

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut ORA-01031: insufficiente privileges
    Bonjour et merci pour la réponse,

    Tout ce passe correctement jusqu'à la ligne de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT execute ON dbms_lock TO t
    et même étant logger comme administrateur j'ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01031: insufficiente privileges
    alors qu'avec cet utilisateur je suis capable de donner des privilèges aux autres utilisateurs, je ne comprends pas pourquoi il me manque des privilèges avec cet utilisateur?

    J'informe que je suis sous oracle express.

    Je vous remercie d'avance.
    Images attachées Images attachées  

  4. #4
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Citation Envoyé par Snyper Voir le message
    et même étant logger comme administrateur ....
    Quel administrateur? SYSTEM n'est pas assez fort, il faut utiliser SYS...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Merci ça marche....
    L'administrateur SYS est plus fort que je ne le savais pas.... merci

    Maintenant c'est juste l’exécution qui plante...

    SET timing ON exec wait(2); ne marche pas... comment pouvoir tester ma procédure?

    Je te remercie.

  6. #6
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Citation Envoyé par Snyper Voir le message
    SET timing ON exec wait(2); ne marche pas...
    Sûrement tu as un message d'erreur...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/07/2011, 13h58
  2. Réponses: 4
    Dernier message: 09/02/2007, 14h19
  3. Réponses: 2
    Dernier message: 12/12/2006, 09h48
  4. Erreur PLS-00201
    Par AkA dans le forum Oracle
    Réponses: 2
    Dernier message: 14/04/2006, 12h04
  5. [Débutant][8i]PLS-00320, PLS-00201
    Par Magnus dans le forum Oracle
    Réponses: 16
    Dernier message: 16/12/2005, 14h05

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