¿Cómo enumero todas las tablas en un esquema en Oracle SQL?¿Cómo enumero todas las tablas en un esquema en Oracle SQL?
Respuesta
Para ver todas las tablas en otro esquema, es necesario tener uno o más de los siguientes privilegios del sistema:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
o el gran martillo, el papel de DBA.
Con cualquiera de ellos, puede seleccionar:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Sin esos privilegios del sistema, sólo se puede ver tablas se le ha concedido un cierto nivel de acceso a, ya sea directamente oa través de un papel.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Por último, siempre se puede consultar el diccionario de datos para sus propias tablas, ya que sus derechos a sus tablas no pueden ser revocados (a partir de 10 g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
Puede consultar USER_TABLES
select TABLE_NAME from user_tables
Esas son todas las tablas en SU esquema, no todas las tablas en el esquema A. Además, las vistas del diccionario de datos * _TABLES (DBA_TABLES, ALL_TABLES, USER_TABLES) incluyen vistas. –
reemplazar "incluir vistas" con "puede incluir vistas en versiones similares de Oracle". –
@ Adam Musch Probado usando Oracle 10g R2, no devolvió las vistas. – Sathya
probar esto, reemplazar? con su nombre de esquema
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
Esto es más agnóstico de base de datos, por lo que creo que este tipo de solución es mejor que todas las alternativas. Creo que INFORMATION_SCHEMA funciona en casi todas las principales bases de datos que he visto. Aunque algunos difieren en la información que puede obtener, al menos es un lugar consistente para buscar. Sin embargo, al hacer una búsqueda rápida en Internet, parece que Oracle es la única base de datos que no admite Information_Schema, aunque es parte del estándar SQL-92. – Kibbee
Por supuesto, OP pidió específicamente una solución de Oracle ... – DCookie
Look at my simple utility para mostrar algo de información sobre el esquema de db. Se basa en: Reverse Engineering a Data Model Using the Oracle Data Dictionary
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
El schemanaame debería estar en MAYÚSCULAS –
Esto solo mostrará * todas * las tablas en YOURSCHEMA si las ejecuta YOURSCHEMA o las ejecuta un usuario con los privilegios mencionados por Adam Musch. De lo contrario, solo muestra las tablas en YOURSCHEMA a las que se nos han otorgado privilegios. – APC
Si accede a Oracle con JDBC (Java) se puede utilizar DatabaseMetadata clase. Si está accediendo a Oracle con ADO.NET, puede usar un enfoque similar.
Si está accediendo a Oracle con ODBC, puede usar la función SQLTables.
De lo contrario, si solo necesita la información en SQLPlus u otro cliente Oracle similar, una de las consultas ya mencionadas lo hará. Por ejemplo:
select TABLE_NAME from user_tables
Si inició la sesión como usuario normal sin permiso de DBA, puede utilizar el siguiente comando para ver todas las tablas y vistas de su propio esquema.
select * from tab;
select * from cat;
se mostrará todas las tablas en el esquema de sinónimos gato de user_catalog
select TABLE_NAME from user_tables;
Por encima de consulta le dará los nombres de todas las tablas presentes en ese usuario;
select * from user_tables;
(mostrando todas las tablas)
Si usted necesita para obtener el tamaño de la mesa, así, esto será muy útil:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
nombre_tabla SELECT, dueño DE all_tables donde owner = 'schema_name' order por table_name
- 1. Obtenga recuentos de todas las tablas en un esquema
- 2. Consulta SQL al esquema de búsqueda de todas las tablas
- 3. Cómo vaciar todas las filas de todas las tablas en mysql (en sql)
- 4. Quiero valor específico de búsqueda en todas las columnas de todas las tablas en Oracle 11g
- 5. Oracle todas las referencias de clave externa
- 6. ¿Cómo enumero todas las zonas horarias en .NET?
- 7. Listar todas las tablas en postgresql information_schema
- 8. ¿Cómo truncar todas las tablas de usuario?
- 9. SQL: elimine todos los datos de todas las tablas disponibles
- 10. Insertar valores en tablas Oracle SQL
- 11. actualización SQL con dos tablas en Oracle
- 12. Listar todas las tablas en una base de datos
- 13. ¿cómo enumero todos los nombres de tablas en SQL Server usando T-SQL?
- 14. SQL Server 2008 borre todas las tablas bajo el esquema especial
- 15. Cómo hacer combinación externa en las Tablas 2> (Oracle)
- 16. Buscar todas las columnas de un cierto tipo en todas las tablas en una base de datos SQL Server
- 17. Mantener las tablas sincronizadas en Oracle
- 18. Buscar todos los campos en todas las tablas para un valor específico (Oracle)
- 19. ¿Cómo enumero todas las vistas disponibles de una tabla particular en SQLite?
- 20. Deshabilitar todas las restricciones de tabla en Oracle
- 21. ¿Cómo enumero todas las propiedades en un objeto y obtengo sus valores?
- 22. ¿Cómo enumero todas las identidades html en un documento con javascript?
- 23. ¿Cómo se eliminan todas las restricciones de clave externa en todas las tablas?
- 24. Exportar todas las tablas de SQL Server a archivos separados
- 25. Oracle ¿el mismo nombre de tabla en un esquema diferente?
- 26. esquema sqlalchemy oracle
- 27. Psql enumera todas las tablas
- 28. tablas temporales globales - SQL Server vs Oracle
- 29. Seleccionar todas las columnas de todas las tablas de SQL Server 2008
- 30. MySQL OPTIMIZE todas las tablas?
la "respuesta más completa" aparte de su uso de '% _OBJECTS' en lugar de'% _TABLES'. – APC
Recuerdo en el 9i que las vistas se enumerarían en% _TABLES, por lo que, por ejemplo, tratar de automatizar el vaciado de un esquema terminaría con sentencias como DROP TABLE REALLY_A_VIEW CASCADE CONSTRAINTS arrojando errores. Por lo tanto, tendrá que eliminar las vistas con MINUS/NOT IN/NOT EXISTS o avanzar% _OBJECTS. Además, ¡ir en contra de% _OBJECTS deja una sugerencia tentadora de qué más podría estar ahí! –
No hay absolutamente ninguna necesidad de 'DISTINCT' en la consulta. 'owner, object_name' es único en' ALL_OBJECTS' –