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 :

[creation table] ORA-00942


Sujet :

Oracle

  1. #1
    Invité
    Invité(e)
    Par défaut [creation table] ORA-00942
    Bonjour,

    j'ai un problème pour créer une table sous oracle 10g :

    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
     
    CREATE TABLE publique.etiquette_cello (
           id integer NOT NULL primary key
         , code_of VARCHAR(15)
         , code_societe CHAR(3)
         , code_produit VARCHAR(15)
         , stade_fabrication CHAR(3)
         , code_variante_principale CHAR(3)
         , code_variante_secondaire CHAR(3)
         , code_barre VARCHAR2(255)
         , libelle_famille VARCHAR2(255)
         , libelle_qualite VARCHAR2(255)
         , qte INTEGER NOT NULL
         , quantite_conditionnement NUMBER NOT NULL
         , type_conditionnement VARCHAR2(255)
         , sessionid
         , CONSTRAINT etiquette_cello_fkey_session
                      FOREIGN KEY (sessionid)
                      REFERENCES admin.session_rapport (session_rapport_id)
                      ON DELETE CASCADE
    VALIDATE);
    résultat de cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                      REFERENCES admin.session_rapport (session_rapport_id)
                                       *
     
    ERREUR à la ligne 18 :
    ORA-00942: Table ou vue inexistante
    par vérification je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> describe admin.session_rapport
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ----------------------------
     SESSION_RAPPORT_ID                        NOT NULL NUMBER(38)
     DATE_RAPPORT                              NOT NULL TIMESTAMP(6)
     NOM_RAPPORT                               NOT NULL VARCHAR2(255)
     
    SQL>
    alors cette table existe bien, mon utilisateur à les droits suffissant (même plus) :

    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
     
    ALTER SESSION   
    CREATE SESSION   
    ALTER ANY INDEX   
    ALTER ANY SEQUENCE   
    ALTER ANY TABLE   
    CREATE ANY INDEX   
    CREATE ANY TABLE   
    CREATE ANY VIEW   
    DELETE ANY TABLE   
    DROP ANY INDEX   
    DROP ANY SEQUENCE   
    DROP ANY TABLE   
    DROP ANY VIEW   
    INSERT ANY TABLE   
    SELECT ANY SEQUENCE   
    SELECT ANY TABLE   
    UNDER ANY TABLE   
    UPDATE ANY TABLE
    CREATE CLUSTER   
    CREATE INDEXTYPE   
    CREATE OPERATOR   
    CREATE PROCEDURE   
    CREATE SEQUENCE   
    CREATE TABLE   
    CREATE TRIGGER   
    CREATE TYPE 
    CREATE DATABASE LINK
    :
    que ce passe-t-il?
    manque-t-il des droits ?
    j'ai essayé avec l'utilisateur system, pareil !

    que faire ?

    merci

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il y a bien une PK sur SESSION_RAPPORT_ID ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    oui oui il y a bien une PK sur session_rapport_id

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    le shema ne doit pas être renseigné dans le code d'un alter table.

    connecte toi admin et passe l'ordre suivant :

    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
    CREATE TABLE publique.etiquette_cello (
           id integer NOT NULL primary key
         , code_of VARCHAR(15)
         , code_societe CHAR(3)
         , code_produit VARCHAR(15)
         , stade_fabrication CHAR(3)
         , code_variante_principale CHAR(3)
         , code_variante_secondaire CHAR(3)
         , code_barre VARCHAR2(255)
         , libelle_famille VARCHAR2(255)
         , libelle_qualite VARCHAR2(255)
         , qte INTEGER NOT NULL
         , quantite_conditionnement NUMBER NOT NULL
         , type_conditionnement VARCHAR2(255)
         , sessionid
         , CONSTRAINT etiquette_cello_fkey_session
                      FOREIGN KEY (sessionid)
                      REFERENCES session_rapport (session_rapport_id)
                      ON DELETE CASCADE
    VALIDATE);
    j'ai supprimé le préfixe admin

    pour info : http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=1048823.6

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    La table est crée à partir d'un troisiéme schéma : christal , il faut effectivement soit que tu l'a crée à partir de ton schéma ADMIN , attention de bien vérifier que tu as les droits pour , soit à partir du schéma PUBLIQUE

  6. #6
    Invité
    Invité(e)
    Par défaut
    quels droits doivent avoir mes utilisateurs admin et publique pour pouvoir créé une clé étrangère ?

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    quelles sont les droits du user Publique et que donne la création de cette table à partir du schéma Publique ?

    Create any table
    select any table

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ici c'est pas un problème de droit, c'est un problème de syntaxe

    sinon, les droits en lecture doivent suffir il me semble

  9. #9
    Invité
    Invité(e)
    Par défaut
    c'est bon, j'ai trouvé. Ce sont des droits objet qu'il faut attribué.
    ainsi en attribuant le Privilège objet REFERENCES à l'utilisateur publique je peut faire ma clé etrangère vers admin.session_rapport à partir de du shéma publique.

    Ce qui est lourd c'est de précisé à chaque fois le nom SchemaName.ObjectName pour attribuer les privilèges objet. Ne peut-on pas le faire sur un schéma complet ?

    par exemple : GRANT REFERENCES ON admin.* TO global

    ?

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Donc c'est bien un probléme de droit .

    Pour ton probléme un simple script sql dynamique pourra résoudre ton affaire

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    la note metalink affirme pourtant que le préfixe n'est pas admis :

  12. #12
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    N'oublie pas le bouton résolue

    Orafrance , il me semble bel et bien que ce soit un probléme de droits car même car aprés le grant , le dbatest peut créer la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SQL> grant references on dept to usera;

  13. #13
    Invité
    Invité(e)
    Par défaut
    et pour attribuer les privilèges sur un shema complet comment fait-on ?

    la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT REFERENCES ON admin.* TO global
    ne marche pas

  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 : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par jaouad
    Pour ton probléme un simple script sql dynamique pourra résoudre ton affaire
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    FOR list_table IN (SELECT table_name name FROM all_tables WHERE owner='ADMIN') LOOP
     
       EXECUTE IMMEDIATE 'GRANT REFERENCES ON admin.'|| list_table.name ||' TO global'
     
    END LOOP;
    END;
    /
    il est important de lire toutes les réponses pour avancer convenablement

  15. #15
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Le sql dynamique est ton salut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Set feedback off 
    Set Linesize 200 
    Set Heading off 
    Set Pagesize 0 
    Set Trimspool off 
    Set Verify off 
    select ' grant references admin. '||table_name|| ' to User ; '
    from user_tables  ;

  16. #16
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par orafrance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    FOR list_table IN (SELECT table_name name FROM all_tables WHERE owner='ADMIN') LOOP
     
       EXECUTE IMMEDIATE 'GRANT REFERENCES ON admin.'|| list_table.name ||' TO global'
     
    END LOOP;
    END;
    /
    LA méthode d'orafrance est meilleure

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    bof, c'est pareil

    La mienne s'interromp à la moindre erreur contrairement à la tienne

  18. #18
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Citation Envoyé par orafrance
    La mienne s'interromp à la moindre erreur contrairement à la tienne
    Un bloc PL/SQL sans section Exception, c'est pas top !

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    les exceptions c'est pour gérer les erreurs... mes scripts ne font pas d'erreur 8)


  20. #20
    Invité
    Invité(e)
    Par défaut
    OK pour le sql dynamique on verra plus tard.

    En tout cas merci jaouad pour avoir suivi mes problèmes en message privée, et merci à tous pour ces réponses rapides

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. ORA-00942 Table ou vue inexistante
    Par BONNEFOI Patrick dans le forum Oracle
    Réponses: 9
    Dernier message: 02/10/2014, 14h40
  2. ORA-00942: table or view does not exist
    Par xoco dans le forum Langage SQL
    Réponses: 9
    Dernier message: 12/01/2009, 20h11
  3. Réponses: 0
    Dernier message: 30/12/2008, 11h19
  4. ORA-00942 Table ou vue inexistante
    Par mullger dans le forum SQL
    Réponses: 8
    Dernier message: 10/09/2007, 19h01
  5. comment eviter ora-00942 lors d'un drop table
    Par sqlakf76 dans le forum Oracle
    Réponses: 22
    Dernier message: 11/10/2005, 15h48

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