sql >> Database teknologi >  >> RDS >> Oracle

Sådan viser du alle tabeller i Oracle

Som med de fleste relationelle databaser, kan der opstå en situation, hvor du har brug for at se de underliggende metadata og gennemse den faktiske tabelliste og ejerskab af din database. Heldigvis er der flere måder at udføre denne relativt enkle opgave på i Oracle, så vi vil kort undersøge hver mulighed nedenfor for at finde den, der bedst passer til dine behov.

Hvad er Oracle Data Dictionaries?

En dataordbog i Oracle er en samling af skrivebeskyttede tabeller, der giver nyttige oplysninger om databasen, herunder skemaer, brugere, privilegier og endda revisionsdata. Værdierne i disse lagrede ordbøger opdateres automatisk af Oracle, hver gang en sætning udføres på serveren, der ændrer data.

Derfra kan de skrivebeskyttede ordbøger læses og forespørges ligesom enhver standardtabel, der, som vi vil se nedenfor, giver nogle meget nyttige funktioner.

Visning af tabeller, der ejes af den nuværende bruger

På det mest grundlæggende niveau ønsker du måske at se en liste over alle borde ejet af den nuværende Oracle-bruger. Dette kan opnås med en simpel SELECT forespørgsel på USER_TABLES dataordbog.

Når du har oprettet forbindelse til Oracle, skal du udsende denne erklæring:

SELECT
  table_name, owner
FROM
  user_tables
ORDER BY
  owner, table_name

Dette vil returnere en liste over alle tabeller, som den aktuelle bruger er ejer af, som angivet i owner kolonne.

Visning af tabeller, der er tilgængelige for nuværende bruger

I en situation, hvor du kun er interesseret i, hvilke tabeller den nuværende Oracle-bruger har adgang til, uanset ejerskab, skal du bruge ALL_TABLES dataordbog i stedet.

SELECT
  table_name, owner
FROM
  all_tables
ORDER BY
  owner, table_name

Det er sandsynligt, at denne forespørgsel vil returnere langt flere resultater, end du er interesseret i, da du ser alt, selv fjerntilgængeligt for brugeren, så du ønsker måske at begrænse din forespørgsel ved at angive en passende owner , sådan:

SELECT
  table_name, owner
FROM
  all_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Visning af alle tabeller

Til sidst, når du absolut har brug for at se hver tabell i systemet skal du ikke lede længere end den store og kraftfulde DBA_TABLES dataordbog.

SELECT
  table_name, owner
FROM
  dba_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Det er vigtigt at bemærke, at denne sidste DBA_TABLES ordbogen kan kræve brugerrettigheder ud over, hvad den aktuelle bruger har. Hvis det er nødvendigt, skal du muligvis tildeles SELECT ANY DICTIONARY privilegiet eller SELECT_CATALOG_ROLE rolle. Flere oplysninger om tildeling af disse privilegier kan findes i den officielle dokumentation.


  1. Forskellen mellem JOIN og INNER JOIN

  2. Tilladt hukommelsesstørrelse på 8589934592 bytes opbrugt

  3. MySQL fejler på:mysql FEJL 1524 (HY000):Plugin 'auth_socket' er ikke indlæst

  4. postgresql portforvirring 5433 eller 5432?