sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo encontrar el PROPIETARIO de un objeto en Oracle?

Puede consultar la vista ALL_OBJECTS:

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

Para encontrar sinónimos:

select *
  from ALL_SYNONYMS
 where synonym_name = 'FOO'

Solo para aclarar, si un usuario la declaración SQL del usuario hace referencia a un nombre de objeto sin calificación de esquema (por ejemplo, 'FOO'), Oracle PRIMERO verifica el esquema del usuario para un objeto de ese nombre (incluidos los sinónimos en el esquema de ese usuario). Si Oracle no puede resolver la referencia del esquema del usuario, Oracle busca un sinónimo público.

Si está buscando específicamente restricciones en un table_name en particular:

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

-- anexo:

Si a su usuario se le otorga acceso a las vistas DBA_ (por ejemplo, si a su usuario se le ha otorgado SELECT_CATALOG_ROLE), puede sustituir 'DBA_ ' en lugar de 'ALL_ ' en los ejemplos de SQL anteriores. El ALL_x las vistas solo muestran objetos para los que se le han otorgado privilegios. El DBA_x Las vistas mostrarán todos los objetos de la base de datos, ya sea que tenga privilegios sobre ellos o no.