Zoals met de meeste relationele databases, kan er een situatie komen waarin u de onderliggende metadata moet bekijken en de daadwerkelijke tabellijst en eigendom van uw database moet bekijken. Gelukkig zijn er meerdere manieren om deze relatief eenvoudige taak in Oracle uit te voeren, dus we zullen elke optie hieronder kort bespreken om te zien welke het beste bij uw behoeften past.
Wat zijn Oracle Data Dictionaries?
Een datadictionary in Oracle is een verzameling alleen-lezen tabellen die nuttige informatie over de database bieden, inclusief schema's, gebruikers, privileges en zelfs controlegegevens. De waarden in deze opgeslagen woordenboeken worden automatisch bijgewerkt door Oracle telkens wanneer een instructie wordt uitgevoerd op de server die gegevens wijzigt.
Van daaruit kunnen de alleen-lezen woordenboeken worden gelezen en opgevraagd, net als elke standaardtabel, die, zoals we hieronder zullen zien, een aantal zeer nuttige functionaliteit biedt.
Tabellen bekijken die eigendom zijn van huidige gebruiker
Op het meest basale niveau wil je misschien een lijst bekijken van alle tafels die eigendom zijn door de huidige Oracle-gebruiker. Dit kan worden bereikt met een simpele SELECT
zoekopdracht op de USER_TABLES
gegevenswoordenboek.
Zodra u verbonden bent met Oracle, geeft u deze verklaring af:
SELECT
table_name, owner
FROM
user_tables
ORDER BY
owner, table_name
Dit geeft een lijst terug van alle tabellen waarvan de huidige gebruiker eigenaar is, zoals gespecificeerd in de owner
kolom.
Tabellen bekijken die toegankelijk zijn voor huidige gebruiker
In een situatie waarin u alleen geïnteresseerd bent in welke tabellen de huidige Oracle-gebruiker toegang heeft om, ongeacht het eigendom, de ALL_TABLES
. te gebruiken datawoordenboek in plaats daarvan.
SELECT
table_name, owner
FROM
all_tables
ORDER BY
owner, table_name
Het is waarschijnlijk dat deze zoekopdracht veel meer resultaten zal opleveren dan waar u in geïnteresseerd bent, aangezien u alles bekijkt, zelfs op afstand toegankelijk voor de gebruiker, dus u kunt uw zoekopdracht beperken door een geschikte owner
op te geven. , zoals zo:
SELECT
table_name, owner
FROM
all_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Alle tabellen bekijken
Ten slotte, wanneer u absoluut elke tafel moet bekijken in het systeem, zoek niet verder dan de geweldige en krachtige DBA_TABLES
gegevenswoordenboek.
SELECT
table_name, owner
FROM
dba_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Het is belangrijk op te merken dat deze laatste DBA_TABLES
woordenboek kan gebruikersrechten vereisen die verder gaan dan wat de huidige gebruiker heeft. Indien nodig moet u mogelijk de SELECT ANY DICTIONARY
. krijgen privilege of de SELECT_CATALOG_ROLE
rol. Meer informatie over het toekennen van deze privileges is te vinden in de officiële documentatie.