sql >> Base de Datos >  >> RDS >> Oracle

Cómo enumerar todas las tablas en Oracle

Al igual que con la mayoría de las bases de datos relacionales, puede surgir una situación en la que necesite ver los metadatos subyacentes y revisar la lista de tablas real y la propiedad de su base de datos. Afortunadamente, hay varias formas de realizar esta tarea relativamente simple en Oracle, por lo que exploraremos brevemente cada opción a continuación para encontrar la que mejor se adapte a sus necesidades.

¿Qué son los diccionarios de datos de Oracle?

Un diccionario de datos en Oracle es una colección de tablas de solo lectura que brindan información útil sobre la base de datos, incluidos esquemas, usuarios, privilegios e incluso datos de auditoría. Oracle actualiza automáticamente los valores en estos diccionarios almacenados cada vez que se ejecuta una declaración en el servidor que modifica los datos.

A partir de ahí, los diccionarios de solo lectura se pueden leer y consultar como cualquier tabla estándar, que, como veremos a continuación, proporciona una funcionalidad muy útil.

Ver tablas propiedad del usuario actual

En el nivel más básico, es posible que desee ver una lista de todas las mesas propiedad por el usuario actual de Oracle. Esto se puede lograr con un simple SELECT consulta en USER_TABLES diccionario de datos.

Una vez conectado a Oracle, emita esta declaración:

SELECT
  table_name, owner
FROM
  user_tables
ORDER BY
  owner, table_name

Esto devolverá una lista de todas las tablas de las que el usuario actual es propietario, como se especifica en el owner columna.

Ver tablas accesibles por el usuario actual

En una situación en la que solo está interesado en qué tablas tiene acceso el usuario actual de Oracle para, independientemente de la propiedad, utilizará el ALL_TABLES diccionario de datos en su lugar.

SELECT
  table_name, owner
FROM
  all_tables
ORDER BY
  owner, table_name

Es probable que esta consulta arroje muchos más resultados de los que le interesan, ya que está viendo todo lo que el usuario puede acceder incluso de forma remota, por lo que es posible que desee limitar su consulta especificando un owner apropiado. , así:

SELECT
  table_name, owner
FROM
  all_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Ver todas las tablas

Por último, cuando sea absolutamente necesario ver todas las tablas en el sistema, no busque más que el gran y poderoso DBA_TABLES diccionario de datos.

SELECT
  table_name, owner
FROM
  dba_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Es importante tener en cuenta que este DBA_TABLES final El diccionario puede requerir privilegios de usuario más allá de los que tiene el usuario actual. Si es necesario, es posible que deba obtener el SELECT ANY DICTIONARY privilegio o el SELECT_CATALOG_ROLE role. Puede encontrar más información sobre cómo otorgar estos privilegios en la documentación oficial.