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.