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

Administration Oracle Discussion :

Objet de mon propre schéma inaccessible mais accessible depuis un autre schéma! [11gR2]


Sujet :

Administration Oracle

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut Objet de mon propre schéma inaccessible mais accessible depuis un autre schéma!
    Bonjour tout le monde,

    Je suis confronté à un sacré problème qui me fait tourner bourrique : un user n'arrive pas à accéder à un de ses objets mais les autres users y ont accès!!!!!

    Le user ISIHOMAPP a un synonyme de nom V_FBTR qui est valide.
    Voilà le code sous TOAD de l'onglet script qui me montre la création de la vue sur laquelle pointe ce synonyme. ATTENTION : nous avons eu des problèmes de droits car cette vue est créée dans le schéma ISI$OWNER par rapport à une vue du schéma SIR_ODS$OWNER et nous avons dû donner au user ISI$OWNER les droits de SELECT en direct sur les tables de SIR_ODS$OWNER sinon, le droit via un rôle ne permettait pas de créer la vue.

    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
    DROP VIEW ISI$OWNER.V_FBTR;
     
    /* Formatted on 15/04/2016 13:08:57 (QP5 v5.115.810.9015) */
    CREATE OR REPLACE FORCE VIEW ISI$OWNER.V_FBTR
    (
       FBT_ID,
       FBT_CODE
    )
    AS
       SELECT   DISTINCT VLU_OPTION_VALUE_ENUM AS FBT_ID, ENL_CODE AS FBT_CODE
         FROM   SIR_ODS$OWNER.SERR_SERVICE,
                SIR_ODS$OWNER.OPTR_OPTION,
                SIR_ODS$OWNER.VLUR_OPTION_VALUE,
                SIR_ODS$OWNER.OSVR_OFFERED_SERVICE,
                SIR_ODS$OWNER.OOPR_OFFERED_OPTION,
                SIR_ODS$OWNER.ENLE_ENUM_VALUE
        WHERE       OSV_SER_ID = SER_ID
                AND OOP_OSV_ID = OSV_ID
                AND OOP_OPT_ID = OPT_ID
                AND OPT_SERR_ID = SER_ID
                AND VLU_OPT_ID = OPT_ID
                AND SER_TYPE = '59'
                AND OPT_TYPE = '64'
                AND VLU_OPTION_VALUE_ENUM = ENL_ID;
    COMMENT ON TABLE ISI$OWNER.V_FBTR IS ' Technical keys translation view ';
     
     
    DROP SYNONYM ISIHOMAPP.V_FBTR;
     
    CREATE SYNONYM ISIHOMAPP.V_FBTR FOR ISI$OWNER.V_FBTR;
     
     
    DROP PUBLIC SYNONYM V_FBTR;
     
    CREATE PUBLIC SYNONYM V_FBTR FOR ISI$OWNER.V_FBTR;


    J'ai aussi donné le droit SELECT sur les tables de la vue du schéma SIR_ODS$OWNER en direct à ISIHOMAPP.
    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
     
    select * from dba_tab_privs where owner = 'SIR_ODS$OWNER' AND TABLE_NAME IN ( 
    'SERR_SERVICE',
    'OPTR_OPTION',
    'VLUR_OPTION_VALUE',
    'OSVR_OFFERED_SERVICE',
    'OOPR_OFFERED_OPTION',
    'ENLE_ENUM_VALUE')
    and GRANTEE = 'ISIHOMAPP';
     
     
    GRANTEE                        OWNER                          TABLE_NAME                     GRANTOR                        PRIVILEGE                                GRA HIE
    ------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- ---
    ISIHOMAPP                      SIR_ODS$OWNER                  ENLE_ENUM_VALUE                SIR_ODS$OWNER                  SELECT                                   NO  NO 
    ISIHOMAPP                      SIR_ODS$OWNER                  OOPR_OFFERED_OPTION            SIR_ODS$OWNER                  SELECT                                   NO  NO 
    ISIHOMAPP                      SIR_ODS$OWNER                  OPTR_OPTION                    SIR_ODS$OWNER                  SELECT                                   NO  NO 
    ISIHOMAPP                      SIR_ODS$OWNER                  OSVR_OFFERED_SERVICE           SIR_ODS$OWNER                  SELECT                                   NO  NO 
    ISIHOMAPP                      SIR_ODS$OWNER                  SERR_SERVICE                   SIR_ODS$OWNER                  SELECT                                   NO  NO 
    ISIHOMAPP                      SIR_ODS$OWNER                  VLUR_OPTION_VALUE              SIR_ODS$OWNER                  SELECT                                   NO  NO 
     
    6 rows selected.

    Je précise qu'il existe plusieurs objets avec le même nom dans la base mais avec des owner différents.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select owner, object_type, status, created from dba_objects where object_name = 'V_FBTR';
    OWNER                          OBJECT_TYPE         STATUS  CREATED 
    ------------------------------ ------------------- ------- --------
    PUBLIC                         SYNONYM             VALID   16/11/15
    ISI$OWNER                      VIEW                VALID   15/04/16
    ISIHOMAPP                      SYNONYM             VALID   15/04/16
    [/CODE]


    Le problème est que ce user n'accède pas à son propre synonyme comme s'il n'en était pas le vrai propriétaire ou si on lui avait enlevé le droit de faire des SELECT dessus mais, à ma connaissance ce n'est pas possible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    show user
    select * from V_FBTR;
    select * from ISIHOMAPP.V_FBTR;
     
    User is "ISIHOMAPP"
    select * from V_FBTR
                  *
    Error at line 1
    ORA-00942: Table ou vue inexistante
     
    select * from ISIHOMAPP.V_FBTR
                            *
    Error at line 1
    ORA-00942: Table ou vue inexistante
    Et pour couronner le tout, le user ISI$OWNER accède bien à l'objet ISIHOMAPP.V_FBTR! Là c'est dingue!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    show user
    select * from ISIHOMAPP.V_FBTR;
     
    User is "ISI$OWNER"
     
        FBT_ID FBT_CODE                                          
    ---------- --------------------------------------------------
            71 004                                               
            73 006                                               
            72 005                                               
    3 rows selected.
    J'avoue être complètement perdu dans cette histoire donc si vous pouviez m'aider

    Par avance un gros gros merci pour votre aide.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Le synonyme public point vers quelle table ?

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Le synonyme public V_FBTR pointe vers la vue ISI$OWNER.V_FBTR selon TOAD.

    Petite précision : sous TOAD, quand je clique sur le nom du Synonym dans le schéma browser, celui-ci m'affiche dans la fenêtre centrale une page vide : pas d'onglet Columns, Indexes... et dans les lignes au dessus de ces onglets il y a marqué "Target object : <unknow obj type> ISI$OWNER.V_FBTR.

    S'il ne connait pas le type de l'objet, je comprends qu'il n'affiche pas le détail de cet objet car il ne sait pas où chercher les infos dans le dictionnaire d'Oracle. MAIS pourquoi ce type est-il inconnu? Visiblement c'est lié à mes problèmes.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 393
    Points : 552
    Points
    552
    Par défaut Objet de mon propre schéma inaccessible mais accessible depuis un autre schéma
    La vue ALL_SYNONYMS sous le propriétaire du synonym te donne quoi ?

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Citation Envoyé par dell68 Voir le message
    La vue ALL_SYNONYMS sous le propriétaire du synonym te donne quoi ?
    Voilà! On a les deux synonymes, le public et le privé et celui privé est bien dans le schéma ISIHOMAPP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    show user
    select owner, synonym_name, table_owner, table_name from all_synonyms where synonym_name = 'V_FBTR';
     
    User is "ISIHOMAPP"
     
    OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME                    
    ------------------------------ ------------------------------ ------------------------------ ------------------------------
    ISIHOMAPP                      V_FBTR                         ISI$OWNER                      V_FBTR                        
    PUBLIC                         V_FBTR                         ISI$OWNER                      V_FBTR                        
    2 rows selected.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 393
    Points : 552
    Points
    552
    Par défaut Objet de mon propre schéma inaccessible mais accessible depuis un autre schéma
    Ton méssage d'erreur oracle est très claire, pour en être sûre, tu n'as
    qu'une solution selon oracle, vérifie bien ces trois requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT owner, table_name FROM DBA_TABLES WHERE TABLE_NAME = 'nom_table';
     
    SELECT * FROM DBA_SYNONYM WHERE SYNONYM_NAME = 'nom_synonyme';
     
    SELECT * FROM DBA_VIEWS WHERE VIEW_NAME = 'nom_vue';
    tu peux ajouter aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    select object_name, object_type, owner from dba_objects where object_name='nom_table' ;
    bonne chance !

  7. #7
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Voici les résultats. J'espère que vous pourrez faire quelques chose avec ça


    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
    select object_name, object_type, owner from dba_objects where object_name='V_AVTL' ;
    OBJECT_NAME          OBJECT_TYPE         OWNER                         
    -------------------------------------------------------------------------------------------------------------------------------
    V_AVTL                    SYNONYM             PUBLIC                        
    V_AVTL                     VIEW                ISI$OWNER                     
    V_AVTL                    SYNONYM             ISIHOMAPP                     
     
     
    SELECT owner, table_name FROM DBA_TABLES WHERE TABLE_NAME = 'V_AVTL';
    no rows selected.
     
     
    SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME = 'V_AVTL';
    OWNER             SYNONYM_NAME                   TABLE_OWNER       TABLE_NAME                    DB_LINK                                                                                                                         
    ----------------------------------------------------------------------------------------------------------------------------
    PUBLIC                         V_AVTL                         ISI$OWNER                      V_AVTL                        
    ISIHOMAPP                      V_AVTL                         ISI$OWNER                      V_AVTL                        
     
     
    SELECT * FROM DBA_VIEWS WHERE VIEW_NAME = 'V_AVTL';
    OID_TEXT      VIEW_TYPE_OWNER                VIEW_TYPE                      SUPERVIEW_NAME                 E R
    ------------------------------ ------------------------------ ------------------------------ - -
    ISI$OWNER                      V_AVTL                                 103 SELECT AVT_ID, AVT_LNG_ID, AVT_LONG_LABEL, AVT_SHORT_LABEL                                       
                                                                                 FROM SIR_ODS$OWNER.AVTL_AVAILABILITY_TYPE                                                     
                                                                                                 N N
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    J'ai l'impression qu'il vous manque le droit d'accès à la vue ISI$OWNER.V_FBTR.

  9. #9
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    OUF, on a enfin trouvé!

    C'est un SELECT qui n'avait pas été donné avec l'option WITH GRANT OPTION. On l'a rajouté et maintenant c'est OK mais putaing qu'est-ce qu'on a galéré

    Merci pour votre aide!
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    ...On l'a rajouté et maintenant c'est OK mais putaing qu'est-ce qu'on a galéré
    Il est certes que la prochaine fois ça va aller bien plus vite.

  11. #11
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Pour compléter l'explication, voilà ce que j'ai compris du problème :
    Schéma 01 : des tables.
    Schéma 02 : des vues sur les tables du schéma 01.
    Schéma 03 : des synonymes sur les vues du schéma 02 et donc, in fine, sur les tables du schéma 01.

    Le user du schéma 02 a le droit SELECT sur tous les objets du schéma 01 et 03 (et 02 bien sur).
    Le user du schéma 03 a le droit SELECT sur tous les objets du schéma 01, aucun sur 02 (et 03 bien sur).

    Et donc, si je ne me suis pas trompé :
    User schéma 03 : SELECT * FROM SCHEMA03.SYNONYM01; --> KO (absence des droits sur les objets du schéma 02).
    User schéma 02 : SELECT * FROM SCHEMA03.SYNONYM01; --> OK car il a les droits sur les objets du schéma 03.
    On se retrouve donc par le jeu des droits et d'objets appartenant à d'autres schémas à la situation suivante qui m'avait bien perturbé : un user n'a pas accès à ses objets mais un autre schéma y accède sans problème...

    Je risque pas d'oublier ce problème
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

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

Discussions similaires

  1. Objet existant reconnu dans une fonction mais pas dans une autre
    Par Jiyuu dans le forum Général Python
    Réponses: 0
    Dernier message: 20/09/2011, 18h19
  2. DTPicker non accessible depuis un autre onglet
    Par Julien01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/05/2008, 08h27
  3. Réponses: 1
    Dernier message: 11/04/2008, 16h08
  4. Port 8080 non accessible depuis une autre machine
    Par olof dans le forum Réseau
    Réponses: 2
    Dernier message: 03/04/2008, 08h08
  5. Piloter plusieurs bases Access depuis une autre base
    Par BAYRAL dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/01/2008, 15h06

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