1031 votos

Obtener la lista de todas las tablas en Oracle?

¿Cómo puedo realizar una consulta en una base de datos de Oracle para mostrar los nombres de todas las tablas en él?

1291voto

Justin Cave Puntos 114578
SELECT owner, table_name
  FROM dba_tables

asumiendo que usted tiene acceso a las DBA_TABLES diccionario de datos de la vista. Si usted no tiene esos privilegios, pero los necesitamos a ellos, usted puede solicitar que el DBA explícitamente le concede privilegios en la mesa o que la DBA le otorga la SELECT ANY DICTIONARY privilegio o la SELECT_CATALOG_ROLE función que le permitirá consultar cualquier diccionario de datos tabla. Por supuesto, es posible que desee excluir ciertos esquemas como SYS y SYSTEM que tienen un gran número de tablas que probablemente no se preocupan porque todos esos son entregados por Oracle.

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

SELECT owner, table_name
  FROM all_tables

a pesar de que puede ser un subconjunto de las tablas disponibles en la base de datos (ALL_TABLES muestra la información de todas las tablas que el usuario se ha concedido el acceso).

Si sólo se preocupan con las tablas que posee, no a los que tiene acceso, puede usar USER_TABLES

SELECT table_name
  FROM user_tables

Desde USER_TABLES sólo tiene información acerca de las tablas que posee, no tiene un OWNER columna, el propietario, por definición, es usted.

Oracle también tiene un número de legado del diccionario de datos de puntos de vista-- TAB, DICT, TABSy CAT por ejemplo-que pueda ser utilizado. En general, no me gustaría sugerir el uso de estos antiguos puntos de vista, a menos que sea absolutamente necesario backport sus guiones para Oracle 6. Oracle no ha cambiado estas opiniones en un largo tiempo, por lo que suelen tener problemas con los nuevos tipos de objetos. Por ejemplo, la TAB y CAT opiniones ambos muestran información acerca de las tablas que están en el usuario de la papelera de reciclaje, mientras que el [DBA|ALL|USER]_TABLES opiniones de todos los filtros, los que están fuera. CAT también se muestra información acerca de la vista materializada registros con un TABLE_TYPE de "MESA" que es poco probable que sea lo que realmente quieres. DICT combina tablas y sinónimos y no te dice que posee el objeto.

173voto

vitule Puntos 3464

Consultar user_tables y dba_tables no trabajo.
Éste lo hizo:

select table_name from all_tables

62voto

stealth_angoid Puntos 429

Yendo un paso más allá, hay otro punto de vista llamado cols (all_tab_columns) que puede ser usado para determinar las tablas que contienen un determinado nombre de la columna.

Por ejemplo:

SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';

para encontrar todas las mesas de tener un nombre que comienza con EST y columnas que contienen CALLREF en cualquier lugar de sus nombres.

Esto puede ayudar cuando se trabaja fuera de las columnas que se desea unir, por ejemplo, en función de su tabla y de la columna de las convenciones de nomenclatura.

21voto

Israel Margulies Puntos 1713

Simple consulta para seleccionar las tablas para el usuario actual:

  SELECT table_name FROM user_tables;

14voto

Trate de la continuación del diccionario de datos de puntos de vista.

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