Como listar todas as tabelas em um esquema no Oracle SQL?
158
Para ver todas as tabelas em outro esquema, você precisa ter um ou mais dos seguintes privilégios do sistema:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
ou o grande martelo, o papel do DBA.
Com qualquer um desses, você pode selecionar:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Sem esses privilégios do sistema, você pode ver apenas as tabelas às quais você concedeu algum nível de acesso, seja diretamente ou através de uma função.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Por fim, você sempre pode consultar o dicionário de dados em busca de suas próprias tabelas, pois seus direitos a elas não podem ser revogados (a partir de 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
vez de%_TABLES
.DISTINCT
a consulta.owner, object_name
é único emALL_OBJECTS
owner, object_name
não é exclusivo por nenhum meio em dba_objects; Os corpos e os pacotes do pacote aparecem nessa exibição e as tabelas e os índices estão em diferentes namespaces.fonte
Você pode consultar
USER_TABLES
fonte
Se você efetuou login como Usuário Normal sem a permissão do DBA, pode usar o seguinte comando para ver todas as tabelas e visualizações do seu próprio esquema.
fonte
Tente isso, substitua? com o seu nome do esquema
fonte
Se você estiver acessando o Oracle com JDBC (Java), poderá usar a classe DatabaseMetadata . Se você estiver acessando o Oracle com o ADO.NET, poderá usar uma abordagem semelhante.
Se você estiver acessando o Oracle com ODBC, poderá usar a função SQLTables .
Caso contrário, se você precisar apenas das informações no SQLPlus ou em um cliente Oracle similar, uma das consultas já mencionadas será suficiente. Por exemplo:
fonte
mostrará todas as tabelas no seu gato de esquema, sinônimo de user_catalog
fonte
A consulta acima fornecerá os nomes de todas as tabelas presentes nesse usuário;
fonte
(mostrando todas as tabelas)
fonte
SELECT table_name, owner FROM all_tables em que owner = 'schema_name' ordena por table_name
fonte
Você pode executar diretamente a segunda consulta se souber o nome do proprietário.
- Primeiro, você pode selecionar o que todos os PROPRIETÁRIOS existem:
--Então você pode ver as tabelas abaixo desse proprietário:
fonte
Veja meu utilitário simples para mostrar algumas informações sobre o esquema db. Ele se baseia em: Engenharia reversa de um modelo de dados usando o Oracle Data Dictionary
fonte
Se você precisar obter o tamanho da tabela também, isso será útil:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
fonte
Nome do contador de tabela e linhas para todas as tabelas no
OWNER
esquema:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
fonte