SELECT owner, table_name
FROM dba_tables
Questo presuppone che tu abbia accesso a DBA_TABLES
vista dizionario dati. Se non disponi di quei privilegi ma ne hai bisogno, puoi richiedere che il DBA ti conceda esplicitamente i privilegi su quella tabella, oppure che il DBA ti conceda il SELECT ANY DICTIONARY
privilegio o il SELECT_CATALOG_ROLE
ruolo (uno dei quali ti consentirebbe di interrogare qualsiasi tabella del dizionario di dati). Naturalmente, potresti voler escludere alcuni schemi come SYS
e SYSTEM
che hanno un gran numero di tabelle Oracle di cui probabilmente non ti interessa.
In alternativa, se non hai accesso a DBA_TABLES
, puoi vedere tutte le tabelle a cui ha accesso il tuo account tramite ALL_TABLES
visualizza:
SELECT owner, table_name
FROM all_tables
Anche se potrebbe essere un sottoinsieme delle tabelle disponibili nel database (ALL_TABLES
mostra le informazioni per tutte le tabelle a cui il tuo utente ha avuto accesso).
Se sei interessato solo alle tabelle che possiedi, non a quelle a cui hai accesso, puoi usare USER_TABLES
:
SELECT table_name
FROM user_tables
Da USER_TABLES
contiene solo informazioni sulle tabelle che possiedi, non ha un OWNER
colonna:il proprietario, per definizione, sei tu.
Oracle ha anche una serie di viste del dizionario dei dati legacy:TABS
, DICT
, TABS
e CAT
per esempio-- che potrebbe essere usato. In generale, non suggerirei di utilizzare queste viste legacy a meno che non sia assolutamente necessario eseguire il backport degli script su Oracle 6. Oracle non ha modificato queste viste da molto tempo, quindi spesso hanno problemi con i nuovi tipi di oggetti. Ad esempio, il TABS
e CAT
entrambe le viste mostrano informazioni sulle tabelle che si trovano nel cestino dell'utente mentre [DBA|ALL|USER]_TABLES
le visualizzazioni filtrano tutte. CAT
mostra anche informazioni sui log delle viste materializzate con un TABLE_TYPE
di "TABLE" che è improbabile che sia quello che vuoi veramente. DICT
combina tabelle e sinonimi e non ti dice chi possiede l'oggetto.