este problema se puede resolver de diferentes maneras, sin embargo te mostramos la respuesta más completa para nosotros.
Solución:
SELECT owner, table_name
FROM dba_tables
Esto es asumiendo que usted tiene acceso a la 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 los 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
puedes ver todas las mesas a las que tu cuenta tiene acceso a través de la ALL_TABLES
vista:
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
Ya que 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 una serie de vistas de diccionario de datos heredados: 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 la [DBA|ALL|USER]_TABLES
todas las vistas las filtran. CAT
también muestra información sobre los 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 a quién pertenece el objeto.
consultando user_tables
y dba_tables
no funcionó
Este lo hizo:
select table_name from all_tables
Yendo un paso más allá, hay otra vista llamada cols (all_tab_columns) que se puede usar para determinar qué tablas contienen un nombre de columna dado.
Por ejemplo:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
para encontrar todas las tablas que tienen un nombre que comienza con EST y columnas que contienen CALLREF en cualquier parte de sus nombres.
Esto puede ayudar a determinar en qué columnas desea unirse, por ejemplo, según las convenciones de nomenclatura de su tabla y columna.