Oracle
 sql >> Database >  >> RDS >> Oracle

Come elencare tutte le tabelle in Oracle

Come con la maggior parte dei database relazionali, potrebbe verificarsi una situazione in cui è necessario visualizzare i metadati sottostanti e esaminare l'elenco di tabelle effettivo e la proprietà del database. Per fortuna, ci sono diversi modi per eseguire questa attività relativamente semplice in Oracle, quindi esploreremo brevemente ciascuna opzione di seguito per trovare quella più adatta alle tue esigenze.

Cosa sono gli Oracle Data Dictionaries?

Un dizionario di dati in Oracle è una raccolta di tabelle di sola lettura che forniscono informazioni utili sul database inclusi schemi, utenti, privilegi e persino dati di controllo. I valori in questi dizionari memorizzati vengono aggiornati automaticamente da Oracle ogni volta che viene eseguita un'istruzione sul server che modifica i dati.

Da lì, i dizionari di sola lettura possono essere letti e interrogati proprio come qualsiasi tabella standard, che come vedremo di seguito fornisce alcune funzionalità molto utili.

Visualizzazione delle tabelle di proprietà dell'utente corrente

Al livello più elementare, potresti voler visualizzare un elenco di tutti i tavoli posseduti dall'utente Oracle corrente. Questo può essere ottenuto con un semplice SELECT interrogare su USER_TABLES dizionario dati.

Una volta connesso a Oracle, rilascia questa dichiarazione:

SELECT
  table_name, owner
FROM
  user_tables
ORDER BY
  owner, table_name

Ciò restituirà un elenco di tutte le tabelle di cui è proprietario l'utente corrente, come specificato nel owner colonna.

Visualizzazione delle tabelle accessibili dall'utente corrente

In una situazione in cui sei interessato solo a quali tabelle l'attuale utente Oracle ha accesso a, indipendentemente dalla proprietà, utilizzerai ALL_TABLES dizionario dati invece.

SELECT
  table_name, owner
FROM
  all_tables
ORDER BY
  owner, table_name

È probabile che questa query restituirà molti più risultati di quelli a cui sei interessato poiché stai visualizzando tutto ciò che è accessibile anche in remoto all'utente, quindi potresti voler limitare la tua query specificando un owner appropriato , in questo modo:

SELECT
  table_name, owner
FROM
  all_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Visualizzazione di tutte le tabelle

Infine, quando devi assolutamente visualizzare ogni tabella nel sistema, non guardare oltre il fantastico e potente DBA_TABLES dizionario dati.

SELECT
  table_name, owner
FROM
  dba_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

È importante notare che questo DBA_TABLES finale dizionario potrebbe richiedere privilegi utente oltre a quelli dell'utente corrente. Se necessario, potrebbe essere necessario ottenere il SELECT ANY DICTIONARY privilegio o il SELECT_CATALOG_ROLE ruolo. Maggiori informazioni sulla concessione di questi privilegi sono disponibili nella documentazione ufficiale.