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.