Como listar todas as tabelas em um esquema no Oracle SQL?
Como listar todas as tabelas em um esquema no Oracle SQL?
Respostas:
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'
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.
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Você pode consultar USER_TABLES
select TABLE_NAME from user_tables
Tente isso, substitua? com o seu nome do esquema
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
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:
select TABLE_NAME from user_tables
select * from cat;
mostrará todas as tabelas no seu gato de esquema, sinônimo de user_catalog
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:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
--Então você pode ver as tabelas abaixo desse proprietário:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
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
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
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'
%_OBJECTS
vez de%_TABLES
.