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

¿Obtener una lista de todas las tablas en Oracle?

SELECT owner, table_name
  FROM dba_tables

Esto supone que tiene acceso a DBA_TABLES vista del diccionario de datos. Si no tiene esos privilegios pero los necesita, puede solicitar que el DBA le otorgue explícitamente privilegios en esa tabla, o que el DBA le otorgue el SELECT ANY DICTIONARY privilegio o el SELECT_CATALOG_ROLE rol (cualquiera de los dos le permitiría consultar cualquier tabla de diccionario de datos). Por supuesto, es posible que desee excluir ciertos esquemas como SYS y SYSTEM que tienen una gran cantidad de tablas de Oracle que probablemente no le interesen.

Alternativamente, si no tiene acceso a DBA_TABLES , puede ver todas las tablas a las que su cuenta tiene acceso a través de ALL_TABLES ver:

SELECT owner, table_name
  FROM all_tables

Aunque, ese puede ser un subconjunto de las tablas disponibles en la base de datos (ALL_TABLES le muestra la información de todas las tablas a las que se le ha otorgado acceso a su usuario).

Si solo le preocupan las tablas que posee, no aquellas a las que tiene acceso, puede usar USER_TABLES :

SELECT table_name
  FROM user_tables

Desde USER_TABLES solo tiene información sobre las tablas que posee, no tiene un OWNER columna:el propietario, por definición, eres tú.

Oracle también tiene varias vistas de diccionario de datos heredadas:TAB , DICT , TABS y CAT por ejemplo, eso podría usarse. En general, no recomendaría usar estas vistas heredadas a menos que sea absolutamente necesario retrotraer sus scripts a Oracle 6. Oracle no ha cambiado estas vistas en mucho tiempo, por lo que a menudo tienen problemas con tipos de objetos más nuevos. Por ejemplo, el TAB y CAT ambas vistas muestran información sobre las tablas que están en la papelera de reciclaje del usuario, mientras que [DBA|ALL|USER]_TABLES todas las vistas las filtran. CAT también muestra información sobre registros de vista materializados con un TABLE_TYPE de "TABLE", que es poco probable que sea lo que realmente desea. DICT combina tablas y sinónimos y no le dice quién es el propietario del objeto.