Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie finde ich den EIGENTÜMER eines Objekts in Oracle?

Sie können die Ansicht ALL_OBJECTS abfragen:

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

So finden Sie Synonyme:

select *
  from ALL_SYNONYMS
 where synonym_name = 'FOO'

Nur zur Verdeutlichung, ob ein user Wenn die SQL-Anweisung des Benutzers auf einen Objektnamen ohne Schemaqualifikation verweist (z. B. „FOO“), prüft Oracle ZUERST das Schema des Benutzers auf ein Objekt mit diesem Namen (einschließlich Synonymen im Schema dieses Benutzers). Wenn Oracle die Referenz aus dem Schema des Benutzers nicht auflösen kann, sucht Oracle nach einem öffentlichen Synonym.

Wenn Sie speziell nach Einschränkungen für einen bestimmten Tabellennamen suchen:

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

-- Nachtrag:

Wenn Ihrem Benutzer Zugriff auf die DBA_-Ansichten gewährt wird (z. B. wenn Ihrem Benutzer SELECT_CATALOG_ROLE gewährt wurde), können Sie 'DBA_ ersetzen ' anstelle von 'ALL_ ' in den vorhergehenden SQL-Beispielen. Der ALL_x Ansichten zeigen nur Objekte, denen Sie Privilegien gewährt haben. Der DBA_x Ansichten zeigen alle Datenbankobjekte, unabhängig davon, ob Sie Zugriffsrechte darauf haben oder nicht.