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.