sql >> Databasteknik >  >> RDS >> Oracle

Hur man listar alla tabeller i Oracle

Som med de flesta relationsdatabaser kan det uppstå en situation där du behöver se den underliggande metadatan och titta igenom den faktiska tabelllistan och ägandet av din databas. Tack och lov finns det flera sätt att utföra denna relativt enkla uppgift i Oracle, så vi ska kort utforska varje alternativ nedan för att hitta det som bäst passar dina behov.

Vad är Oracle Data Dictionaries?

En dataordbok i Oracle är en samling skrivskyddade tabeller som ger användbar information om databasen inklusive scheman, användare, privilegier och till och med revisionsdata. Värdena i dessa lagrade ordböcker uppdateras automatiskt av Oracle när en sats exekveras på servern som modifierar data.

Därifrån kan de skrivskyddade ordböckerna läsas och frågas precis som vilken standardtabell som helst, vilket som vi kommer att se nedan ger mycket användbar funktionalitet.

Visa tabeller som ägs av nuvarande användare

På den mest grundläggande nivån kanske du vill se en lista över alla tabeller som ägs av den nuvarande Oracle-användaren. Detta kan åstadkommas med en enkel SELECT fråga på USER_TABLES dataordbok.

När du är ansluten till Oracle, utfärda detta uttalande:

SELECT
  table_name, owner
FROM
  user_tables
ORDER BY
  owner, table_name

Detta kommer att returnera en lista över alla tabeller som den aktuella användaren är ägare till, enligt vad som anges i owner kolumn.

Visa tabeller som är tillgängliga för nuvarande användare

I en situation där du bara är intresserad av vilka tabeller den nuvarande Oracle-användaren har åtkomst för att, oavsett ägande, använder du ALL_TABLES dataordbok istället.

SELECT
  table_name, owner
FROM
  all_tables
ORDER BY
  owner, table_name

Det är troligt att den här frågan kommer att ge mycket fler resultat än du är intresserad av eftersom du ser allt som är tillgängligt på distans för användaren, så du kanske vill begränsa din fråga genom att ange en lämplig owner , som så:

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

Visa alla tabeller

Slutligen, när du absolut behöver se alla bord i systemet behöver du inte leta längre än de stora och kraftfulla DBA_TABLES dataordbok.

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

Det är viktigt att notera att denna sista DBA_TABLES ordbok kan kräva användarbehörigheter utöver vad den aktuella användaren har. Om det behövs kan du behöva beviljas SELECT ANY DICTIONARY privilegium eller SELECT_CATALOG_ROLE roll. Mer information om att bevilja dessa privilegier finns i den officiella dokumentationen.


  1. SQLalchemy begår inte ändringar vid inställning av roll

  2. Hur man optimerar webbplatsdatabasen

  3. Hur konverterar man datumtid till unix-epokvärde i Postgres?

  4. Ska nya indexkolumner finnas i nyckeln eller inkluderas?