¿Cómo enumero todas las tablas en un esquema en Oracle SQL?
159
Para ver todas las tablas en otro esquema, debe 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 esos, puede seleccionar:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Sin esos privilegios del sistema, solo puede ver las tablas a las que se le ha otorgado algún nivel de acceso, ya sea directamente o mediante un rol.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Por último, siempre puede consultar el diccionario de datos para sus propias tablas, ya que sus derechos sobre sus tablas no se pueden revocar (a partir de 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
lugar de%_TABLES
.DISTINCT
en la consulta.owner, object_name
es único enALL_OBJECTS
owner, object_name
no es único de ninguna manera en dba_objects; Los cuerpos de paquete y los paquetes aparecen en esa vista, y las tablas e índices están en diferentes espacios de nombres.fuente
Puedes consultar
USER_TABLES
fuente
Si inició sesión como Usuario normal sin permiso de DBA, puede usar el siguiente comando para ver todas las tablas y vistas de su propio esquema.
fuente
Intenta esto, ¿reemplazar? con tu nombre de esquema
fuente
Si accede a Oracle con JDBC (Java), puede usar la clase DatabaseMetadata . 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 o un cliente de Oracle similar, una de las consultas ya mencionadas servirá. Por ejemplo:
fuente
mostrará todas las tablas en su sinónimo de gato de esquema de user_catalog
fuente
La consulta anterior le dará los nombres de todas las tablas presentes en ese usuario;
fuente
(mostrando todas las tablas)
fuente
SELECCIONA table_name, owner FROM all_tables donde owner = 'schema_name' ordena por table_name
fuente
Puede ejecutar directamente la segunda consulta si conoce el nombre del propietario.
--Primero puede seleccionar qué existen todos los PROPIETARIOS que existen:
- Entonces puede ver las tablas debajo de ese propietario:
fuente
Mira mi sencilla utilidad para mostrar información sobre el esquema db. Se basa en: Ingeniería inversa de un modelo de datos utilizando el Diccionario de datos de Oracle
fuente
Si necesita obtener el tamaño de la tabla también, esto será útil:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
fuente
Nombre de la tabla y el contador de filas para todas las tablas bajo
OWNER
esquema:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
fuente