Περισσότερα
Λίστα όλων των πινάκων στην Oracle;
Πώς μπορώ να κάνω ερώτημα σε μια βάση δεδομένων Oracle για να εμφανίσω τα ονόματα όλων των πινάκων της;
1069
3
Αυτό προϋποθέτει ότι έχετε πρόσβαση στην προβολή του λεξικού δεδομένων
DBA_TABLES
. Εάν δεν έχετε αυτά τα δικαιώματα αλλά τα χρειάζεστε, μπορείτε να ζητήσετε από τον DBA να σας χορηγήσει ρητά δικαιώματα στον εν λόγω πίνακα ή, να σας χορηγήσει το δικαίωμαSELECT ANY DICTIONARY
ή το ρόλοSELECT_CATALOG_ROLE
(οποιοδήποτε από τα δύο θα σας επιτρέψει να κάνετε ερωτήσεις σε οποιονδήποτε πίνακα του λεξικού δεδομένων). Φυσικά, μπορεί να θέλετε να εξαιρέσετε ορισμένα σχήματα όπως ταSYS
καιSYSTEM
τα οποία έχουν μεγάλο αριθμό πινάκων Oracle που πιθανώς δεν σας ενδιαφέρουν.Εναλλακτικά, αν δεν έχετε πρόσβαση στο
DBA_TABLES
, μπορείτε να δείτε όλους τους πίνακες στους οποίους έχει πρόσβαση ο λογαριασμός σας μέσω της προβολήςALL_TABLES
:Παρόλο που, αυτό μπορεί να είναι ένα υποσύνολο των πινάκων που είναι διαθέσιμοι στη βάση δεδομένων (η προβολή
ALL_TABLES
σας δείχνει τις πληροφορίες για όλους τους πίνακες στους οποίους ο χρήστης σας έχει πρόσβαση).Αν σας ενδιαφέρουν μόνο οι πίνακες που σας ανήκουν και όχι αυτοί στους οποίους έχετε πρόσβαση, μπορείτε να χρησιμοποιήσετε το
USER_TABLES
:Δεδομένου ότι η
USER_TABLES
έχει πληροφορίες μόνο για τους πίνακες που σας ανήκουν, δεν έχει στήληOWNER
- ο ιδιοκτήτης, εξ ορισμού, είστε εσείς.Η Oracle διαθέτει επίσης έναν αριθμό παλαιών προβολών λεξικού δεδομένων -
TAB
,DICT
,TABS
καιCAT
για παράδειγμα - που θα μπορούσαν να χρησιμοποιηθούν. Σε γενικές γραμμές, δεν θα πρότεινα τη χρήση αυτών των παλαιών προβολών, εκτός αν πρέπει οπωσδήποτε να μεταφέρετε τα σενάριά σας στην Oracle 6. Η Oracle δεν έχει αλλάξει αυτές τις προβολές εδώ και πολύ καιρό, οπότε συχνά έχουν προβλήματα με νεότερους τύπους αντικειμένων. Για παράδειγμα, οι προβολέςTAB
καιCAT
δείχνουν και οι δύο πληροφορίες σχετικά με τους πίνακες που βρίσκονται στον κάδο ανακύκλωσης του χρήστη, ενώ οι προβολές[DBA|ALL|USER]_TABLES
τις φιλτράρουν όλες. ΗCAT
εμφανίζει επίσης πληροφορίες σχετικά με τα αρχεία καταγραφής υλοποιημένων προβολών μεTABLE_TYPE
"TABLE" που είναι απίθανο να είναι αυτό που πραγματικά θέλετε. ΤοDICT
συνδυάζει πίνακες και συνώνυμα και δεν σας λέει σε ποιον ανήκει το αντικείμενο.Η αναζήτηση των
user_tables
καιdba_tables
δεν λειτούργησε.Αυτό εδώ έπιασε:
Δοκιμάστε να επιλέξετε από το user_tables, το οποίο απαριθμεί τους πίνακες που ανήκουν στον τρέχοντα χρήστη.