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

Obter lista de todas as tabelas no Oracle?

SELECT owner, table_name
  FROM dba_tables

Isso pressupõe que você tenha acesso ao DBA_TABLES vista do dicionário de dados. Se você não tiver esses privilégios, mas precisar deles, poderá solicitar que o DBA conceda explicitamente privilégios nessa tabela ou que o DBA conceda a você o SELECT ANY DICTIONARY privilégio ou o SELECT_CATALOG_ROLE função (qualquer uma das quais permitiria consultar qualquer tabela de dicionário de dados). Claro, você pode querer excluir certos esquemas como SYS e SYSTEM que possuem um grande número de tabelas Oracle com as quais você provavelmente não se importa.

Como alternativa, se você não tiver acesso a DBA_TABLES , você pode ver todas as tabelas às quais sua conta tem acesso através do ALL_TABLES visualizar:
SELECT owner, table_name
  FROM all_tables

Embora isso possa ser um subconjunto das tabelas disponíveis no banco de dados (ALL_TABLES mostra as informações de todas as tabelas às quais seu usuário teve acesso).

Se você está preocupado apenas com as tabelas que você possui, não com aquelas às quais você tem acesso, você pode usar USER_TABLES :
SELECT table_name
  FROM user_tables

Desde USER_TABLES só tem informações sobre as tabelas que você possui, não tem um OWNER coluna – o proprietário, por definição, é você.

A Oracle também tem várias visualizações de dicionários de dados legados-- TAB , DICT , TABS e CAT por exemplo - que poderia ser usado. Em geral, eu não sugeriria usar essas visualizações legadas, a menos que você precise fazer backport de seus scripts para o Oracle 6. A Oracle não altera essas visualizações há muito tempo, então eles geralmente têm problemas com tipos mais novos de objetos. Por exemplo, a TAB e CAT ambas exibem informações sobre as tabelas que estão na lixeira do usuário enquanto o [DBA|ALL|USER]_TABLES todas as visualizações filtram-nas. CAT também mostra informações sobre logs de visualização materializados com um TABLE_TYPE de "TABLE" que é improvável que seja o que você realmente deseja. DICT combina tabelas e sinônimos e não informa quem é o proprietário do objeto.