Como acontece com a maioria dos bancos de dados relacionais, pode ocorrer uma situação em que você precise visualizar os metadados subjacentes e examinar a lista de tabelas real e a propriedade do seu banco de dados. Felizmente, existem várias maneiras de executar essa tarefa relativamente simples no Oracle, portanto, exploraremos brevemente cada opção abaixo para descobrir qual melhor atende às suas necessidades.
O que são os dicionários de dados Oracle?
Um dicionário de dados no Oracle é uma coleção de tabelas somente leitura que fornecem informações úteis sobre o banco de dados, incluindo esquemas, usuários, privilégios e até mesmo dados de auditoria. Os valores nesses dicionários armazenados são atualizados automaticamente pelo Oracle sempre que uma instrução é executada no servidor que modifica os dados.
A partir daí, os dicionários somente leitura podem ser lidos e consultados como qualquer tabela padrão, que, como veremos abaixo, fornece algumas funcionalidades muito úteis.
Visualizando tabelas de propriedade do usuário atual
No nível mais básico, você pode querer ver uma lista de todas as tabelas de propriedade pelo usuário Oracle atual. Isso pode ser feito com um simples
SELECT
consulta no USER_TABLES
dicionário de dados. Uma vez conectado ao Oracle, emita esta instrução:
SELECT
table_name, owner
FROM
user_tables
ORDER BY
owner, table_name
Isso retornará uma lista de todas as tabelas das quais o usuário atual é proprietário, conforme especificado no
owner
coluna. Visualizando tabelas acessíveis pelo usuário atual
Em uma situação em que você está interessado apenas em quais tabelas o usuário Oracle atual tem acesso para, independentemente da propriedade, você usará o
ALL_TABLES
dicionário de dados em vez disso. SELECT
table_name, owner
FROM
all_tables
ORDER BY
owner, table_name
É provável que essa consulta retorne muito mais resultados do que você está interessado, já que você está visualizando tudo, mesmo remotamente acessível ao usuário, portanto, você pode limitar sua consulta especificando um
owner
apropriado , igual a:SELECT
table_name, owner
FROM
all_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Visualizando todas as tabelas
Por último, quando você realmente precisa ver todas as tabelas no sistema, não procure mais do que o excelente e poderoso
DBA_TABLES
dicionário de dados. SELECT
table_name, owner
FROM
dba_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
É importante notar que este
DBA_TABLES
final dicionário pode exigir privilégios de usuário além do que o usuário atual tem. Se necessário, você pode precisar receber o SELECT ANY DICTIONARY
privilégio ou o SELECT_CATALOG_ROLE
Função. Mais informações sobre como conceder esses privilégios podem ser encontradas na documentação oficial.