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

¿Cómo enumero todas las tablas en un esquema en Oracle SQL?

Para ver todas las tablas en otro esquema, debe tener uno o más de los siguientes privilegios del sistema:

SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE

o el gran martillo, el rol de DBA.

Con cualquiera de ellos, puede seleccionar:

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM DBA_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

Sin esos privilegios del sistema, solo puede ver las tablas a las que se le ha otorgado cierto nivel de acceso, ya sea directamente o a través de un rol.

SELECT DISTINCT OWNER, OBJECT_NAME 
  FROM ALL_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'
   AND OWNER = '[some other schema]'

Por último, siempre puede consultar el diccionario de datos para sus propias tablas, ya que sus derechos sobre sus tablas no se pueden revocar (a partir de 10g):

SELECT DISTINCT OBJECT_NAME 
  FROM USER_OBJECTS
 WHERE OBJECT_TYPE = 'TABLE'