sql >> Database >  >> RDS >> Oracle

Hoe u alle tabellen in Oracle kunt weergeven

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.


  1. Oracle INTERSECT-operator uitgelegd

  2. Prestaties van SUBSTR op CLOB

  3. PostgreSQL proceduretaal C niet gevonden

  4. Logische weergave van het gegevensmodel in R12.2