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 :

ORA-00942: Problème de droits ?


Sujet :

Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Par défaut ORA-00942: Problème de droits ?
    Bonjour à toutes et tous.

    Je dois créer un nouveau schéma sous Oracle 9i dans une DB de développement abritant déja plusieurs schémas.
    Pour ce faire, j'ai dupliqué un utilisateur existant (Fonction Clone de Toad) en le renommant ...

    J'ai ensuite fair tourner (toujours avec ToAd) mon script de création de tables généré par Case Studio.
    Lorsque je consulte la liste des tables avec Toad, je vois bien mes 3 tables .. Bingo !

    Oui... Mais lorsque je tente de faire un select moi même
    je reçois le message ORA-00942 (Table ou vue inexistante)
    Aaargh...

    J'ai fait plusieurs tentatives, en vain.
    J'ai essayé en forcant le nom des tables en majuscules.
    Là, je pouvais faire un
    mais pas un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID, VALUE FROM T_HANDLE
    (* fonctionnait mais si je donnais explicitement la liste des champs... bernique !)

    Je pense qu'il s'agit d'un problème de droits mais n'étant pas DBA et n'ayant pas de DBA sous la main pour le développement, je suis pour le moins coincé...

    Quelqu'un a-t-il une piste à me proposer ?

    Merci d'avance,

    Michel

  2. #2
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    Peux tu utiliser les c'est tres pénible de lire sinon

    Tu as essayé les SELECT en te connectant avec le nouveau user ?
    Dans tes scripts les nom d'objets sont-ils préfixés du OWNER ?

    Bref, ils nous foudrait la script de création du nouveau user et les scripts de création de table aussi sinon c'est impossible de répondre !

    C'est un inconvénient de TOAD, il permet des manipulations très jolies mais après si tu sais pas ce qu'il fait tu es perdu !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Par défaut Oups !
    Oups !
    Désolé... J'ai corrigé mon premier post (Et dire que je viens de lire le bétisier ! )

    La procédure que j'ai suivie est :

    je me connecte en tant qu'utilisateur BABE (babe est un schéma existant avec des doits ad-hoc semble-t-il)
    Je duplique un utilisateur existant avec le nom RUBIS
    je me connecte en tant que RUBIS
    je lance le script de création des tables

    Comme cela ne foncitonne pas, j'ai créé un utilisateur "from scratch" en recopiant les droits de BABE

    voici le script :
    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
     
    CREATE USER "RUBIS" IDENTIFIED BY "xxxxxxx"
     DEFAULT TABLESPACE USERS
     TEMPORARY TABLESPACE TEMP
     PROFILE DEFAULT
     QUOTA  UNLIMITED  ON USERS;
     
    GRANT ALTER USER TO "RUBIS";
    GRANT CREATE PUBLIC SYNONYM TO "RUBIS";
    GRANT CREATE ROLE TO "RUBIS";
    GRANT CREATE USER TO "RUBIS";
    GRANT GRANT ANY PRIVILEGE TO "RUBIS";
    GRANT GRANT ANY ROLE TO "RUBIS";
    GRANT INSERT ANY TABLE TO "RUBIS" WITH ADMIN OPTION;
    GRANT LOCK ANY TABLE TO "RUBIS" WITH ADMIN OPTION;
    GRANT SELECT ANY SEQUENCE TO "RUBIS" WITH ADMIN OPTION;
    GRANT SELECT ANY TABLE TO "RUBIS" WITH ADMIN OPTION;
    GRANT UNLIMITED TABLESPACE TO "RUBIS";
    GRANT "AQ_ADMINISTRATOR_ROLE" TO "RUBIS";
    GRANT "CONNECT" TO "RUBIS";
    GRANT "DBA" TO "RUBIS";
    GRANT "SELECT_CATALOG_ROLE" TO "RUBIS";
    ALTER USER "RUBIS" DEFAULT ROLE "AQ_ADMINISTRATOR_ROLE", "CONNECT", "DBA", "SELECT_CATALOG_ROLE";
    GRANT EXECUTE ON "SYS"."DEFAULT_CONSUMER_GROUP" TO "RUBIS";
    GRANT READ ON DIRECTORY "SYS"."BFILE_DIR" TO "RUBIS" WITH GRANT OPTION;
    GRANT WRITE ON DIRECTORY "SYS"."BFILE_DIR" TO "RUBIS" WITH GRANT OPTION;

    Et Voici le script des tables (désolé, c'est un peu long)
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    /*
    Created		02/10/2006
    Modified		04/10/2006
    Project		R.U.B.I.S
    Model		
    Company		
    Author		Michel Baily
    Version		
    Database		Oracle 9i 
    */
    Drop Sequence "S_HandelSetType"
    /
    Drop Sequence "S_HandleSet"
    /
    Drop table "T_Handle"
    /
    Drop table "T_HandleSet"
    /
    Drop table "T_HandleSetType"
    /
    -- Create Types section
    -- Create Tables section
    Create table "T_HandleSetType" (
    	"Id" Integer NOT NULL ,
    	"Name" Varchar2 (256),
    	"code" Varchar2 (5) NOT NULL  UNIQUE ,
    primary key ("Id") 
    ) 
    /
     
    Create table "T_HandleSet" (
    	"id" Integer NOT NULL ,
    	"handleSetTypeId" Integer NOT NULL ,
    	"name" Varchar2 (256),
    	"lastUpdate" Date,
    	"query" Varchar2 (4000) NOT NULL ,
    primary key ("id") 
    ) 
    /
     
    Create table "T_Handle" (
    	"value" Integer NOT NULL ,
    	"HandleSetId" Integer NOT NULL ,
    primary key ("value","HandleSetId") 
    ) 
    /
     
    -- Create Alternate keys section
    -- Create Indexes section
    -- Create Foreign keys section
     
    Alter table "T_HandleSet" add  foreign key ("handleSetTypeId") references "T_HandleSetType" ("Id") 
    /
     
    Alter table "T_Handle" add  foreign key ("HandleSetId") references "T_HandleSet" ("id") 
    /
    /* Auto-created sequence for table T_HandleSetType attribute Id */
    Create sequence "S_HandelSetType"
     start with 1
     increment by 1
    /
     
    /* Auto-created sequence for table T_HandleSet attribute id */
    Create sequence "S_HandleSet"
     start with 1
     increment by 1
    /
     
    /* Trigger for sequence S_HandelSetType for table T_HandleSetType attribute Id */
    Create or replace trigger "t_S_HandelSetType" before insert
    on "T_HandleSetType" for each row
    begin
    	SELECT "S_HandelSetType".nextval INTO :new."Id" FROM dual;
    end;
    /
     
    /* Trigger for sequence S_HandleSet for table T_HandleSet attribute id */
    Create or replace trigger "t_S_HandleSet" before insert
    on "T_HandleSet" for each row
    begin
    	SELECT "S_HandleSet".nextval INTO :new."id" FROM dual;
    end;
    /
     
    -- Create Table comments section
     
    Comment on table "T_HandleSetType" is 'Define the list of availbale handle set types'
    /
    Comment on table "T_HandleSet" is 'Handle set definitions'
    /
     
    -- Create Attribute comments section
     
    Comment on column "T_HandleSetType"."code" is 'HandleSetType Code.'
    /
    Comment on column "T_HandleSet"."query" is 'AsqIt query string.
    By example "Text By Name Pool GetChildren As trwdossier+"
    Will be used in a CreateObject() statement such as
    CreateObject("Text By Name Pool GetChildren As trwdossier+")'
    /
    Comment on column "T_Handle"."value" is 'Handle value'
    /
    Merci d'avance,

    Michel

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    babe est un schéma existant avec des doits ad-hoc semble-t-il
    Que donne l' instruction suivante exécutée par BABE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM rubis.t_handle
    S'il n'y a pas de public synonyme pour rubis.t_handle, il faut préfixer le nom de l'objet par le propriétaire ou exécuter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER SESSION SET CURRENT_SCHEMA=rubis;
    Comment babe a-t-il reçu les droits de lecture sur rubis.t_handle ?
    un GRANT direct ? Par un rôle ?

    Que donnent les instructions suivantes exécutées par BABE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select grantor, table_name, privilege from user_tab_privs where table_name=
    'T_HANDLE';
    select * from session_roles;

  5. #5
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut
    Citation Envoyé par michel baily
    Et Voici le script des tables (désolé, c'est un peu long)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Create table "T_HandleSetType" (
    	"Id" Integer NOT NULL ,
    	"Name" Varchar2 (256),
    	"code" Varchar2 (5) NOT NULL  UNIQUE ,
    primary key ("Id") 
    ) 
    /
    Le problème provient des "" dans ton script de création.

    Par défaut Oracle n'est pas case sensitive. Ce qui veut dire que si crée une table ToTo c'est la même chose que TOTO ou toto et que tu peux utiliser n'importe quelle combinaison de majuscule/minuscule pour faire ton select. Même si dans le dictionnaire ta table apparaîtras comme TOTO. Pareil pour les colonnes

    Sauf que dans ton cas tu as mis (ou case studio a mis) des "" autour de tes noms de tables et de colonnes et dans ce cas Oracles est case sensitive et dans ce cas tu dois non seulement respecter la case exacte de tes noms de tables et colonnes mais tu dois aussi continuer a mettre partout des "".

    En conclusion. Ne JAMAIS mettre de double quote Ca complique la vie pour rien

    Hope this helps

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Par défaut Bigre !
    Ok !
    Je teste à l'instant et vous dis quoi ...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Par défaut Waoooooouw !!!!!
    Génial !

    1000 merci !
    Cela fonctionne maintenant !

    En fait, j'ai installé la dernière version de Case Studio qui a, semble-t-il, l'option "use quote" préselectionnée.

    Merci à toi, Wurlitzer (Je mettrais bien 2 euros dans la musique ) ainsi qu'à tous ceux qui se sont penchés sur le problème.

    Bonne journée à toutes et tous !

    Michel

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

Discussions similaires

  1. [11g] Erreur ORA-00942 - Problème de consultation des Rapports
    Par madmaxou16 dans le forum Administration
    Réponses: 2
    Dernier message: 15/05/2013, 15h04
  2. Problème avec un curseur : ORA-00942
    Par tibal dans le forum PL/SQL
    Réponses: 2
    Dernier message: 23/11/2008, 13h01
  3. Problème de droits sur un fichier
    Par BenoitDenis dans le forum Langage
    Réponses: 8
    Dernier message: 14/02/2006, 16h44
  4. comment eviter ora-00942 lors d'un drop table
    Par sqlakf76 dans le forum Oracle
    Réponses: 22
    Dernier message: 11/10/2005, 15h48
  5. [creation table] ORA-00942
    Par Invité dans le forum Oracle
    Réponses: 21
    Dernier message: 13/04/2005, 14h47

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