Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment puis-je trouver le PROPRIÉTAIRE d'un objet dans Oracle ?

Vous pouvez interroger la vue ALL_OBJECTS :

select owner
     , object_name
     , object_type
  from ALL_OBJECTS
 where object_name = 'FOO'

Pour trouver des synonymes :

select *
  from ALL_SYNONYMS
 where synonym_name = 'FOO'

Juste pour clarifier, si un utilisateur l'instruction SQL de l'utilisateur fait référence à un nom d'objet sans qualification de schéma (par exemple, "FOO"), Oracle FIRST vérifie le schéma de l'utilisateur pour un objet de ce nom (y compris les synonymes dans le schéma de cet utilisateur). Si Oracle ne peut pas résoudre la référence à partir du schéma de l'utilisateur, Oracle recherche alors un synonyme public.

Si vous recherchez spécifiquement des contraintes sur un table_name particulier :

select c.*
  from all_constraints c 
 where c.table_name = 'FOO'
 union all
select cs.*
  from all_constraints cs
  join all_synonyms s 
    on (s.table_name = cs.table_name
     and s.table_owner = cs.owner 
     and s.synonym_name = 'FOO'
       )

HTH

-- addendum :

Si votre utilisateur a accès aux vues DBA_ (par exemple, si votre utilisateur a reçu SELECT_CATALOG_ROLE), vous pouvez remplacer 'DBA_ ' à la place de 'ALL_ ' dans les exemples SQL précédents. Le ALL_x les vues ne montrent que les objets pour lesquels vous avez reçu des privilèges. Le DBA_x les vues afficheront tous les objets de la base de données, que vous ayez ou non des privilèges sur eux.