Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso trovare il PROPRIETARIO di un oggetto in Oracle?

Puoi interrogare la vista ALL_OBJECTS:

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

Per trovare i sinonimi:

select *
  from ALL_SYNONYMS
 where synonym_name = 'FOO'

Giusto per chiarire, se un utente l'istruzione SQL dell'utente fa riferimento a un nome oggetto senza qualifica dello schema (ad es. 'FOO'), Oracle FIRST controlla lo schema dell'utente per un oggetto con quel nome (inclusi i sinonimi nello schema di quell'utente). Se Oracle non riesce a risolvere il riferimento dallo schema dell'utente, Oracle verifica la presenza di un sinonimo pubblico.

Se stai cercando specificamente i vincoli su un nome_tabella particolare:

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:

Se al tuo utente è concesso l'accesso alle viste DBA_ (ad es. se al tuo utente è stato concesso SELECT_CATALOG_ROLE), puoi sostituire 'DBA_ ' al posto di 'ALL_ ' negli esempi SQL precedenti. Il ALL_x le viste mostrano solo gli oggetti a cui sono stati concessi privilegi. Il DBA_x le visualizzazioni mostreranno tutti gli oggetti del database, indipendentemente dal fatto che tu abbia i privilegi o meno.