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.