1157 votos

¿Obtener la lista de todas las tablas de Oracle?

¿Cómo puedo consultar una base de datos Oracle para mostrar los nombres de todas las tablas que contiene?

1 votos

Hace SHOW TABLES (como se hace en MySQL) funcionan?

1 votos

@MartinThoma no. Probé eso primero, antes de recurrir a Google

1419voto

Justin Cave Puntos 114578
SELECT owner, table_name
  FROM dba_tables

asumiendo que 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 conceda explícitamente privilegios sobre esa tabla o que el DBA le conceda el SELECT ANY DICTIONARY privilegio o el SELECT_CATALOG_ROLE cualquiera de los cuales le permitiría consultar cualquier tabla del diccionario de datos. Por supuesto, puede querer excluir ciertos esquemas como SYS y SYSTEM que tienen un gran número de tablas que probablemente no le interesan porque todas ellas son suministradas por Oracle.

Como alternativa, si no tiene acceso a DBA_TABLES puede ver todas las tablas a las que su cuenta tiene acceso a través del ALL_TABLES ver

SELECT owner, table_name
  FROM all_tables

aunque 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 su usuario tiene acceso).

Si sólo le preocupan las tablas que posee, y no aquellas a las que tiene acceso, podría utilizar USER_TABLES

SELECT table_name
  FROM user_tables

Desde USER_TABLES sólo 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 heredadas TAB , DICT , TABS y CAT por ejemplo que se podría utilizar. En general, no sugeriría utilizar estas vistas heredadas a menos que sea absolutamente necesario retroceder sus scripts a Oracle 6. Oracle no ha cambiado estas vistas en mucho tiempo por lo que a menudo tienen problemas con los nuevos tipos de objetos. Por ejemplo, la vista TAB y CAT muestran información sobre las tablas que están en la papelera del usuario, mientras que las vistas [DBA|ALL|USER]_TABLES vistas todas las filtran. CAT también muestra información sobre los registros de las vistas materializadas con un TABLE_TYPE de la "TABLA", que es poco probable que sea lo que realmente quieres. DICT combina tablas y sinónimos y no indica a quién pertenece el objeto.

47 votos

Entonces no se le ha dado permiso para ver todas las tablas de la base de datos. Puede consultar la vista del diccionario de datos ALL_TABLES para ver todas las tablas a las que tiene permiso para acceder, que pueden ser un pequeño subconjunto de las tablas de la base de datos.

187voto

vitule Puntos 3464

Consulta de user_tables y dba_tables no funcionó.
Este lo hizo:

select table_name from all_tables

14 votos

@LimitedAtonement Lo siento, eso es simplemente un error. La vista se llama user_tables, no user_table. Si user_tables no funcionaba para vitule, algo más estaba mal.

67voto

stealth_angoid Puntos 429

Yendo un paso más allá, existe otra vista llamada cols (all_tab_columns) que puede utilizarse para saber qué tablas contienen un nombre de columna determinado.

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 tengan un nombre que empiece por EST y columnas que contengan CALLREF en cualquier parte de su nombre.

Esto puede ayudar a la hora de determinar qué columnas desea unir, por ejemplo, en función de las convenciones de nomenclatura de la tabla y la columna.

4 votos

Lo hice select * from cols y obtuvo 0 filas devueltas.

22voto

Israel Margulies Puntos 1713

Consulta simple para seleccionar las tablas del usuario actual:

  SELECT table_name FROM user_tables;

15voto

Pruebe las siguientes vistas del diccionario de datos.

tabs
dba_tables
all_tables
user_tables

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X