Lisää
Hanki luettelo kaikista Oraclen taulukoista?
Miten kysyn Oracle-tietokannasta kaikkien siinä olevien taulukoiden nimet?
1069
3
Miten kysyn Oracle-tietokannasta kaikkien siinä olevien taulukoiden nimet?
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 sinulleSELECT ANY DICTIONARY
-oikeuden taiSELECT_CATALOG_ROLE
-roolin (kummallakin näistä voit kysyä mitä tahansa tietosanakirjataulua). Tietenkin voit halutessasi sulkea pois tietyt skeemat, kutenSYS
jaSYSTEM
, 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öoikeusALL_TABLES
-näkymän kautta: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
:Koska
USER_TABLES
sisältää tietoja vain omista taulukoista, siinä ei oleOWNER
-saraketta - omistaja olet määritelmän mukaan sinä.Oraclella on myös useita vanhoja tietosanakirjanäkymiä - esimerkiksi
TAB
,DICT
,TABS
jaCAT
- 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. EsimerkiksiTAB
- jaCAT
-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, joidenTABLE_TYPE
on "TABLE", mikä ei todennäköisesti ole sitä, mitä todella haluat.DICT
yhdistää taulukot ja synonyymit eikä kerro, kuka omistaa objektin.user_tables
- jadba_tables
-taulukoiden kysely ei toiminut.Tämä onnistui:
Kokeile valita user_tables, jossa luetellaan nykyisen käyttäjän omistamat taulukot.