Come elenco tutte le tabelle in uno schema in Oracle SQL?
Come elenco tutte le tabelle in uno schema in Oracle SQL?
Risposte:
Per visualizzare tutte le tabelle in un altro schema, è necessario disporre di uno o più dei seguenti privilegi di sistema:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
o il martello, il ruolo DBA.
Con uno di questi, è possibile selezionare:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Senza tali privilegi di sistema, puoi vedere solo le tabelle a cui ti è stato concesso un certo livello di accesso, sia direttamente che attraverso un ruolo.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Infine, puoi sempre eseguire una query sul dizionario dei dati per le tue tabelle, poiché i tuoi diritti sulle tue tabelle non possono essere revocati (a partire da 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
DISTINCTla query. owner, object_nameè unico inALL_OBJECTS
owner, object_namenon è univoco in alcun modo in dba_objects; Corpi e pacchetti di pacchetto appaiono entrambi in quella vista e le tabelle e gli indici sono in spazi dei nomi diversi.
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Puoi interrogare USER_TABLES
select TABLE_NAME from user_tables
Prova questo, sostituisci? con il nome del tuo schema
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
Se si accede a Oracle con JDBC (Java), è possibile utilizzare la classe DatabaseMetadata . Se si accede a Oracle con ADO.NET, è possibile utilizzare un approccio simile.
Se si accede a Oracle con ODBC, è possibile utilizzare la funzione SQLTables .
Altrimenti, se hai solo bisogno delle informazioni in SQLPlus o client Oracle simile, una delle query già menzionate lo farà. Per esempio:
select TABLE_NAME from user_tables
select * from cat;
mostrerà tutte le tabelle nel sinonimo cat schema di user_catalog
È possibile eseguire direttamente la seconda query se si conosce il nome del proprietario.
- In primo luogo è possibile selezionare ciò che tutti i PROPRIETARI esistono:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
--Poi puoi vedere le tabelle in basso da quel proprietario:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
Guarda la mia semplice utility per mostrare alcune informazioni sullo schema db. Si basa su: ingegneria inversa di un modello di dati mediante Oracle Data Dictionary
Se devi ottenere anche le dimensioni del tavolo, questo sarà utile:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
Nome della tabella e contatore delle righe per tutte le tabelle nello OWNERschema:
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
%_OBJECTSposto di%_TABLES.