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

PL/SQL Oracle Discussion :

Table appartenant à SYS inaccessible


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Table appartenant à SYS inaccessible
    Bonjour,
    Je voudrais effectuer un SELECT sur une table appartenant au schéma SYS dans une fonction d'un autre schéma et j'ai une erreur ORA-00942 : table ou vue inexistante.
    Plus exactement, j'essaie de récupérer les objets invalides dans la DBA_OBJECTS.
    Y'a-t-il une solution sachant que cette requête fonctionne très bien dans SQL Plus ?
    Merci

  2. #2
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,

    C'est un probleme de droit ,
    sous sqlplus c'est quel user ?


    Soit tu fais un grant select on dba_objects to TON_USER_PREFERE

    soit tu utilise user_objects ou all_objects

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci, le fait d'utiliser all_objects solutionne bien le pb.

    Par contre, même soucis avec dba_free_space...
    Ce que je ne comprends pas, c'est que lorsque je suis connecté à SQL Plus avec mon user X, je peux interroger dba_free_space,
    Par contre, si je créé une procédure ou fonction appartenant à ce même user X dans laquelle j'utilise la dba_free_space, j'obtiens une erreur 942 (table inexistante) !

    à côté de quoi je peux passer ?
    Merci pour votre aide,
    Franck

  4. #4
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par gamelu Voir le message
    ...Ce que je ne comprends pas, c'est que lorsque je suis connecté à SQL Plus avec mon user X, je peux interroger dba_free_space...
    Pour les procedures, les grant sur les objets ne doivent pas etre donnes au utilisateur via des ROLES mais directement a l'utilisateur concerne.

    Nicolas.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Mon user a les droits sur la procédure puisqu'il en est le propriétaire.
    Malgré cela, impossible de faire un SELECT sur dba_free_space (ni sur aucune table dba_*).
    Merci

  6. #6
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par gamelu Voir le message
    Mon user a les droits sur la procédure puisqu'il en est le propriétaire.
    Malgré cela, impossible de faire un SELECT sur dba_free_space (ni sur aucune table dba_*).
    Merci
    Je ne parlais pas de droit sur la procedure, mais sur les objets acceder DANS la procedure, donc DBA_FREE_SPACE en particulier dans ce cas.

    Tu pourrais illustrer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SQL> grant create session to newuser identified by newuser;
     
    Grant succeeded.
     
    SQL> grant select on dba_free_space to newuser;
     
    Grant succeeded.
     
    SQL> conn newuser/newuser
    Connected.
    SQL> select count(*) from dba_free_space;
     
      COUNT(*)
    ----------
           939
     
    SQL> set serveroutput on
    SQL> declare
      2  ct number;
      3  begin
      4  select count(*) into ct from dba_free_space;
      5  dbms_output.put_line(ct);
      6  end;
      7  /
    939
     
    PL/SQL procedure successfully completed.
     
    SQL>
    Nicolas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/05/2013, 17h18
  2. Jointure entre tables appartenant à 2 bases différentes
    Par mikeduff dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/02/2010, 15h55
  3. table systeme sys.syscacheobjects
    Par haykelFST dans le forum Administration
    Réponses: 2
    Dernier message: 18/12/2008, 13h19
  4. table système sys.sysprocesses
    Par haykelFST dans le forum Administration
    Réponses: 3
    Dernier message: 17/12/2008, 17h50
  5. Réponses: 3
    Dernier message: 18/07/2008, 11h47

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