2017-06-13 2 views
0

Un utilisateur de ma base de données Oracle 12c a créé plusieurs vues en sélectionnant des colonnes dans les tables d'un autre utilisateur. Par exemple:L'utilisateur de la base de données Oracle ne peut pas voir les données dans sa propre vue

CREATE OR REPLACE FORCE EDITIONABLE VIEW "MYSER"."VIEW1" (column1, column2, column3) 
    AS SELECT (column1, column2, column3) 
    FROM OTHERSCHEMA.TABLENAME; 

maintenant lors de l'exécution

select count(1) from MYSER.VIEW1 

en tant qu'utilisateur sys, je peux voir toutes les lignes sont là. Cependant, dès que je me connecte au schéma MYSER et que j'essaie d'exécuter la même instruction select count, je reçois soit un nombre inférieur ou des lignes inférieures au total, soit aucune ligne du tout. (Lorsque vous faites cela pour plusieurs des vues faites de la même façon)

J'ai accordé de sélection sur l'ensemble des de tables à d'un autre utilisateur myuser

Ces données ont été importées d'une autre base de données. Je ne sais pas si c'est ce qui pourrait causer les problèmes.

EDIT: J'ai aussi essayé accorder

Grant execute on DBMS_RLS to MYUSER; 

Pensant que cela pourrait être un problème avec les partitions dans la table. Il pourrait être quelque chose de génial que les gens qui ont codé cette application il ya des années ont permis que je devais savoir où ils niveaux de sécurité ou quelque chose en place.

Merci!

Répondre

0

Une vue est simplement une instruction SQL stockée. Lorsque vous êtes connecté comme myser

select * from view1; 

devrait revenir exactement les mêmes que

select column1, column2, column3 FROM OTHERSCHEMA.TABLENAME; 
+0

Comme cela est exact, dans les deux cas que vous avez dit, (que je l'ai essayé dans les deux sens), il affiche encore que ce soit 0 lignes, ou pas le montant total. Il n'y a pas de clause where, donc il devrait afficher TOUTES les lignes. – kalebm3991