Kā veikt Oracle datubāzes vaicājumu, lai parādītu visu tajā esošo tabulu nosaukumus?
SELECT owner, table_name
FROM dba_tables
Tiek pieņemts, ka jums ir piekļuve DBA_TABLES
datu vārdnīcas skatam. Ja jums nav šo privilēģiju, bet tās ir nepieciešamas, varat lūgt, lai DBA skaidri piešķir jums privilēģijas attiecībā uz šo tabulu, vai arī lai DBA piešķir jums SELECT ANY DICTIONARY
privilēģijas vai SELECT_CATALOG_ROLE
lomu (abas šīs tiesības ļautu jums veikt vaicājumus jebkurā datu vārdnīcas tabulā). Protams, jūs varat izslēgt dažas shēmas, piemēram, SYS
un SYSTEM
, kurās ir liels skaits Oracle tabulu, kas jums, iespējams, nav svarīgas.
Ja jums nav piekļuves DBA_TABLES
, varat arī apskatīt visas tabulas, kurām jūsu kontam ir piekļuve, izmantojot skatu ALL_TABLES
:
SELECT owner, table_name
FROM all_tables
Lai gan tas var būt datu bāzē pieejamo tabulu apakškopa (ALL_TABLES
parāda informāciju par visām tabulām, kurām jūsu lietotājam ir piešķirta piekļuve).
Ja jūs interesē tikai tās tabulas, kas jums pieder, nevis tās, kurām jums ir piekļuve, varat izmantot USER_TABLES
:
SELECT table_name
FROM user_tables
Tā kā USER_TABLES
satur informāciju tikai par tabulām, kas jums pieder, tajā nav slejas OWNER
- īpašnieks pēc definīcijas esat jūs.
Oracle ir arī vairāki mantotie datu vārdnīcas skati, piemēram, TAB
, DICT
, TABS
un CAT
, kurus var izmantot. Kopumā es nerekomendētu izmantot šos novecojušos skatījumus, ja vien jums nav obligāti nepieciešams atgriezt savus skriptus uz Oracle 6. Oracle jau ilgu laiku nav mainījis šos skatus, tāpēc tiem bieži ir problēmas ar jaunākiem objektu tipiem. Piemēram, gan TAB
, gan CAT
skatījumi parāda informāciju par tabulām, kas atrodas lietotāja atkritumu tvertnē, bet [DBA|ALL|USER]_TABLES
skatījumi tos visus filtrē. CAT
rāda arī informāciju par materializēto skatījumu žurnāliem ar TABLE_TYPE
"TABLE", kas, visticamāk, nav tas, ko jūs patiešām vēlaties. DICT
apvieno tabulas un sinonīmus, un nepaziņo, kam pieder objekts.