Miten kysyn Oracle-tietokannasta kaikkien siinä olevien taulukoiden nimet?
SELECT owner, table_name
FROM dba_tables
Tämä edellyttää, että sinulla on pääsy DBA_TABLES
-tietosanakirjanäkymään. Jos sinulla ei ole näitä oikeuksia, mutta tarvitset niitä, voit pyytää DBA:ta myöntämään sinulle nimenomaisesti oikeudet kyseiseen tauluun tai pyytää DBA:ta myöntämään sinulle SELECT ANY DICTIONARY
-oikeuden tai SELECT_CATALOG_ROLE
-roolin (kummallakin näistä voit kysyä mitä tahansa tietosanakirjataulua). Tietenkin voit halutessasi sulkea pois tietyt skeemat, kuten SYS
ja SYSTEM
, joissa on suuri määrä Oracle-tauluja, joista et todennäköisesti välitä.
Vaihtoehtoisesti, jos sinulla ei ole käyttöoikeutta DBA_TABLES
-näkymään, voit nähdä kaikki taulut, joihin tililläsi on käyttöoikeus ALL_TABLES
-näkymän kautta:
SELECT owner, table_name
FROM all_tables
Tosin se voi olla osajoukko tietokannassa käytettävissä olevista taulukoista (ALL_TABLES
näyttää kaikkien niiden taulukoiden tiedot, joihin käyttäjälläsi on myönnetty käyttöoikeus).
Jos olet huolissasi vain omista taulukoista, etkä niistä, joihin sinulla on pääsy, voit käyttää USER_TABLES
:
SELECT table_name
FROM user_tables
Koska USER_TABLES
sisältää tietoja vain omista taulukoista, siinä ei ole OWNER
-saraketta - omistaja olet määritelmän mukaan sinä.
Oraclella on myös useita vanhoja tietosanakirjanäkymiä - esimerkiksi TAB
, DICT
, TABS
ja CAT
- joita voitaisiin käyttää. Yleisesti ottaen en suosittele näiden vanhojen näkymien käyttämistä, ellei skriptejä välttämättä tarvitse siirtää takaisin Oracle 6:een. Oracle ei ole muuttanut näitä näkymiä pitkään aikaan, joten niissä on usein ongelmia uudentyyppisten objektien kanssa. Esimerkiksi TAB
- ja CAT
-näkymät näyttävät molemmat tietoja taulukoista, jotka ovat käyttäjän roskakorissa, kun taas [DBA|ALL|USER]_TABLES
-näkymät suodattavat ne kaikki pois. CAT
-näkymä näyttää myös tietoja materialisoitujen näkymien lokitiedoista, joiden TABLE_TYPE
on "TABLE", mikä ei todennäköisesti ole sitä, mitä todella haluat. DICT
yhdistää taulukot ja synonyymit eikä kerro, kuka omistaa objektin.