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 :

Role et message d'erreur


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Role et message d'erreur
    Bonjour à tous,

    Je suis sous Oracle 8.1.7 et j'ai un message d'erreur qui me semble étrange lorsque j'effectue un grant en utilisant les roles:

    GRANT select ON schema.table TO role_read_schema;
    -> Grant Succeeded.

    GRANT role_read_schema TO role_read_instance;
    -> ORA-01919: role 'role_read_schema' does not exist.

    Comment est ce possible que le role_read_schema n'existe pas vu que je viens de le granter avec succès précédemment?
    Je suppose donc que le message d'erreur est tres peu explicite...
    Le problème pourrait etre il du à un manque de privilège? (je me connecte en tant que le propriétaire du schéma, ne pouvant me connecter en tant que DBA).

    ps: j'espère ne pas traiter un sujet résolu maintes fois, je n'ai pas trouvé mon bonheur dans le "Recherche sur les forums"

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    role_read_schema n'est pas un rôle, mais un user Oracle.

    Avec ta commande :

    GRANT select ON schema.table TO role_read_schema;
    tu as donné le droit à l'utilisateur 'role_read_schema' de faire un select sur la table 'schema.table'

  3. #3
    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
    Quelques commandes utiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Voir tout les rôles :
    SELECT * FROM dba_roles
     
    Voir priviléges pour un user ou un rôle
    SELECT * FROM DBA_SYS_PRIVS
    WHERE grantee='CONNECT'  -- Rôle ou user

  4. #4
    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
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci de vos réponses

    @jaouad:

    Merci pour ces commandes, je ne pensais pas avoir les droits de regarder dans dba_roles

    @rouardg:

    Je confirme role_read_schema a bien été créé comme un role
    (CREATE ROLE rl_r_schema NOT IDENTIFIED; dans le .ddl et présent dans SELECT * FROM dba_roles).
    De meme pour role_read_instance.

    La syntaxe me semble correcte pour créer une "hierachie" de roles.

  6. #6
    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 malaux
    Je confirme role_read_schema a bien été créé comme un role
    (NOT IDENTIFIED; dans le .ddl et présent dans SELECT * FROM dba_roles).
    De meme pour role_read_instance.

    La syntaxe me semble correcte pour créer une "hierachie" de roles.
    CREATE ROLE rl_r_schema est different de role_read_schema

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    oups j'ai changé les "rl_r_" en "role_read_" pour etre plus explicite, mais j'ai oublié de le changer après copier-coller du ddl.

    En tout cas, ce role est bien présent dans le .ddl et dans la table dba_roles.

  8. #8
    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
    ca marche bien chez Moi

    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
     
    SQL> create role role_read_schema NOT IDENTIFIED ;
     
    Rôle créé.
     
    SQL> create role role_read_instance  NOT IDENTIFIED ;
     
    Rôle créé.
     
    SQL> select role from dba_roles where role like 'ROLE_READ%';
     
    ROLE
    ------------------------------
    ROLE_READ_INSTANCE
    ROLE_READ_SCHEMA
    -- les deux roles sont bien crées
     
    SQL> grant select on system.test to  role_read_schema ;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SQL> SELECT grantee , owner , table_name  FROM DBA_TAB_PRIVS
      2  WHERE grantee
      3   LIKE 'ROLE_READ%' ;
     
    GRANTEE                        OWNER                          TABLE_NAME
    ------------------------------ ------------------------------ ---------------------
    ROLE_READ_SCHEMA               SYSTEM                         TEST
    -- Ce role a bien le privilége sur la table 
     
    SQL> grant role_read_schema to role_read_instance ;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SQL>  SELECT * FROM DBA_ROLE_PRIVS
      2   WHERE grantee LIKE 'ROLE_READ%'
      3  ;
     
    GRANTEE                        GRANTED_ROLE                   ADM DEF
    ------------------------------ ------------------------------ --- ---
    ROLE_READ_INSTANCE             ROLE_READ_SCHEMA               NO  YES
    -- Ce role a bien le premier role

  9. #9
    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 malaux
    (CREATE ROLE rl_r_schema NOT IDENTIFIED;
    Pas besoin de spécifier NOT IDENTIFIED car c'est le défaut

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci jaourd, c'est sympas d'avoir testé en live

    Je fais exactement cette procédure, excepté que je n'ai pas le mot de passe DBA, donc ce n'est pas moi qui ai créé les roles.
    Je les vois bien dans la table dba_roles:

    SQL> select * from dba_roles where role in ('ROLE_READ_SCHEMA', 'ROLE_READ_INSTANCE');

    ROLE PASSWORD
    ------------------------------ --------
    ROLE_READ_SCHEMA NO
    ROLE_READ_INSTANCE NO

    Le role ROLE_READ_SCHEMA contient bien les privilèges sur les bonnes tables en regardant dans dba_tab_privs.

    et puis le soucis:

    SQL> GRANT rl_read_schema TO rl_read_instance;

    ERROR at line 1:
    ORA-01919: role 'ROLE_READ_SCHEMA' does not exist

    La seule différence que je vois, c'est que j'ai lancé cette commande en tant que propriétaire, alors que toi vraisemblablement en tant que DBA.

    Je vais attendre demain que mon DBA soit là pour lancer la commande et je vous tiens au courant.

    ps: "Pas besoin de spécifier NOT IDENTIFIED car c'est le défaut"
    Ok ok, mais c'est les ddl que Oracle génère automatiquement

  11. #11
    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 malaux
    La seule différence que je vois, c'est que j'ai lancé cette commande en tant que propriétaire, alors que toi vraisemblablement en tant que DBA.
    Il n'existe pas de propriétaire de rôle comme il existe des propriétaires sur les schéma .
    Il faut juste avoir le privilége CREATE ROLE , par contre on peux avoir ou pas les priviléges d'administration .

  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
    Citation Envoyé par malaux
    SQL> GRANT rl_read_schema TO rl_read_instance;

    ERROR at line 1:
    ORA-01919: role 'ROLE_READ_SCHEMA' does not exist
    ROLE_READ_SCHEMA != rl_read_schema

  13. #13
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par jaouad
    Il n'existe pas de propriétaire de rôle comme il existe des propriétaires sur les schéma .
    Il faut juste avoir le privilége CREATE ROLE , par contre on peux avoir ou pas les priviléges d'administration .
    D'accord, merci de ces précisions.
    Pour récapituler:
    - je lance ces commandes en tant que propriétaire du schéma contenant les tables que je grant en select au ROLE_READ_SCHEMA.
    - je n'ai pas le privilège de faire des create role (ni d'administrer d'ailleurs)

    Citation Envoyé par jaouad
    Shocked Shocked ROLE_READ_SCHEMA != rl_read_schema
    argh Re-erreur de copier-coller sorry, mais n'ai pas peur chez moi j'ai mis les bons nom de roles et ca ne marche bien pas

  14. #14
    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
    Est il possible que tu nous dise qu'elles sont les priviléges et rôles de ton user ?

  15. #15
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par jaouad
    Est il possible que tu nous dise qu'elles sont les priviléges et rôles de ton user ?
    J'ai fouillé dans les ddl et je pense avoir trouvé ce que les proriétaires des schémas n'ont pas les privilèges de faire:

    create_pub_synonyms.sql*
    create_system_priv.sql*
    drop_roles.sql*
    create_role_grants.sql*
    create_tablespaces.sql*
    drop_tablespaces.sql*
    create_roles.sql*
    create_users.sql*
    drop_users.sql*
    create_rollback.sql*
    drop_pub_synonyms.sql*

    A noter le create_role_grants.sql
    J'ai regardé ce fichier et il contient bien les commandes de grant d'un role à un autre role (il manque évidemment celui que je veux rajouter).
    Ca confirme donc bien la thèse de l'insuffisence de droits !

    et le message d'erreur d'Oracle est donc bien TRES peu explicite:
    un "unsufficent privilege" serait plus logique qu'un "role does not exist".

    Je confirme tout ca demain quand la personne ayant tous les privilèges lancera la commande.

  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
    Il me semble que cela ne soit pas aussi illogique que ca
    je m'explique , si un user n'a pas le droit d'administrer un rôle il ne le voit donc pas d'ou le message d'erreur :

    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> conn system/****
    Connecté.
    SQL> create role TEST ;
     
    Rôle créé.
     
    SQL> select role from dba_roles where role='TEST' ;
     
    ROLE
    ------------------------------
    TEST
     
    SQL> create user utilisateur identified by utilisateur ;
     
    Utilisateur créé.
     
    SQL> grant connect to utilisateur   ;
     
    Autorisation de privilèges (GRANT) acceptée.
     
    SQL> conn utilisateur/utilisateur
    Connecté.
     
    SQL> grant test to utilisateur ;
    grant test to utilisateur
    *
    ERREUR à la ligne 1 :
    ORA-01919: role 'TEST' does not exist

  17. #17
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par jaouad
    Il me semble que cela ne soit pas aussi illogique que ca
    je m'explique , si un user n'a pas le droit d'administrer un rôle il ne le voit donc pas d'ou le message d'erreur :
    Je suis d'accord, mais dans ce cas il semble illogique que je puisse le voir quand je fais un select dans dba_roles par exemple.

  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 malaux
    Citation Envoyé par jaouad
    Il me semble que cela ne soit pas aussi illogique que ca
    je m'explique , si un user n'a pas le droit d'administrer un rôle il ne le voit donc pas d'ou le message d'erreur :
    Je suis d'accord, mais dans ce cas il semble illogique que je puisse le voir quand je fais un select dans dba_roles par exemple.
    la vue DBA_ROLES affiche simplement la liste des rôles. si vous avez le droit de Select sur cette vue alors vous voyez tous les rôles.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  19. #19
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par SheikYerbouti
    la vue DBA_ROLES affiche simplement la liste des rôles. si vous avez le droit de Select sur cette vue alors vous voyez tous les rôles.
    Ca parait évident quand on le lit

  20. #20
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Confirmation: la personne avec les bons privilèges (create roles, create roles grants, etc) a pu lancer le GRANT role_read_schema TO role_read_instance avec succès.

    Merci à tous

    -> Résolu

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

Discussions similaires

  1. [TSocket] Message d'erreur
    Par rgz dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2003, 09h16
  2. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  3. Réponses: 4
    Dernier message: 04/03/2003, 01h05
  4. [CR] Message d'erreur
    Par nono1 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/09/2002, 14h54
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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