Podobnie jak w przypadku większości relacyjnych baz danych, może wystąpić sytuacja, w której będziesz musiał wyświetlić podstawowe metadane i przejrzeć rzeczywistą listę tabel oraz własność bazy danych. Na szczęście istnieje wiele sposobów wykonania tego stosunkowo prostego zadania w Oracle, więc pokrótce omówimy każdą opcję poniżej, aby znaleźć tę, która najlepiej odpowiada Twoim potrzebom.
Co to są słowniki danych Oracle?
Słownik danych w Oracle to zbiór tabel tylko do odczytu, które dostarczają przydatnych informacji o bazie danych, w tym schematach, użytkownikach, uprawnieniach, a nawet danych audytowych. Wartości w tych przechowywanych słownikach są automatycznie aktualizowane przez Oracle za każdym razem, gdy na serwerze zostanie wykonana instrukcja, która modyfikuje dane.
Stamtąd słowniki tylko do odczytu można czytać i odpytywać, tak jak każdą standardową tabelę, która, jak zobaczymy poniżej, zapewnia bardzo przydatną funkcjonalność.
Wyświetlanie tabel należących do bieżącego użytkownika
Na najbardziej podstawowym poziomie możesz wyświetlić listę wszystkich posiadanych stołów przez obecnego użytkownika Oracle. Można to osiągnąć za pomocą prostego SELECT
zapytanie w USER_TABLES
słownik danych.
Po połączeniu z Oracle wydaj to oświadczenie:
SELECT
table_name, owner
FROM
user_tables
ORDER BY
owner, table_name
Spowoduje to zwrócenie listy wszystkich tabel, których właścicielem jest bieżący użytkownik, jak określono w owner
kolumna.
Wyświetlanie tabel dostępnych dla bieżącego użytkownika
W sytuacji, gdy interesuje Cię tylko to, do jakich tabel aktualny użytkownik Oracle ma dostęp do, niezależnie od własności, użyjesz ALL_TABLES
zamiast tego słownik danych.
SELECT
table_name, owner
FROM
all_tables
ORDER BY
owner, table_name
Jest prawdopodobne, że to zapytanie zwróci znacznie więcej wyników, niż jesteś zainteresowany, ponieważ przeglądasz wszystko, nawet zdalnie dostępne dla użytkownika, więc możesz ograniczyć swoje zapytanie, określając odpowiedniego owner
, jak tak:
SELECT
table_name, owner
FROM
all_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Wyświetlanie wszystkich tabel
Wreszcie, gdy absolutnie musisz wyświetlić każdy stół w systemie, nie szukaj dalej niż świetne i potężne DBA_TABLES
słownik danych.
SELECT
table_name, owner
FROM
dba_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Ważne jest, aby pamiętać, że ta ostatnia DBA_TABLES
słownik może wymagać uprawnień użytkownika wykraczających poza te, które posiada bieżący użytkownik. W razie potrzeby może być konieczne przyznanie SELECT ANY DICTIONARY
uprawnienia lub SELECT_CATALOG_ROLE
rola. Więcej informacji na temat nadawania tych uprawnień można znaleźć w oficjalnej dokumentacji.