Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como listar todas as tabelas no Oracle


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.