Pobierz listę wszystkich tabel w Oracle?

Jak odpytywać bazę danych Oracle, aby wyświetlić nazwy wszystkich tabel w niej zawartych?

 1134
Author: a_horse_with_no_name, 2008-10-15

24 answers

SELECT owner, table_name
  FROM dba_tables

Zakłada się, że masz dostęp do widoku słownika danych DBA_TABLES. Jeśli nie masz tych uprawnień, ale ich potrzebujesz, możesz zażądać, aby dba wyraźnie przyznał Ci uprawnienia w tej tabeli, lub aby DBA przyznał Ci uprawnienia SELECT ANY DICTIONARY lub rolę SELECT_CATALOG_ROLE (które z nich pozwoliłyby Ci odpytywać dowolną tabelę słownika danych). Oczywiście możesz wykluczyć niektóre schematy, takie jak SYS i SYSTEM, które mają dużą liczbę tabel Oracle, które prawdopodobnie cię nie interesują około.

Alternatywnie, jeśli nie masz dostępu do DBA_TABLES, możesz zobaczyć wszystkie tabele, do których ma dostęp twoje konto za pośrednictwem widoku ALL_TABLES:

SELECT owner, table_name
  FROM all_tables

Chociaż może to być podzbiór tabel dostępnych w bazie danych (ALL_TABLES pokazuje informacje dla wszystkich tabel, do których Użytkownik otrzymał dostęp).

Jeśli interesują Cię tylko tabele, które posiadasz, a nie te, do których masz dostęp, możesz użyć USER_TABLES:

SELECT table_name
  FROM user_tables

Od USER_TABLES ma tylko informacje o tabel, które posiadasz, nie ma kolumny OWNER - właścicielem z definicji jesteś ty.

Oracle ma również wiele widoków starszego słownika danych-- TAB, DICT, TABS, i CAT na przykład -- to może być użyte. Ogólnie rzecz biorąc, nie sugerowałbym używania tych starszych widoków, chyba że bezwzględnie musisz przenieść swoje skrypty do Oracle 6. Oracle od dawna nie zmieniało tych poglądów, dlatego często mają problemy z nowszymi typami obiektów. Na przykład widoki TAB i CAT pokazują informacje o tabelach znajdujących się w koszu użytkownika, podczas gdy widoki [DBA|ALL|USER]_TABLES filtrują je wszystkie. CAT pokazuje również informacje o zmaterializowanych dziennikach widoków za pomocą TABLE_TYPE "tabeli", która jest mało prawdopodobne, aby była tym, czego naprawdę chcesz. DICT łączy tabele i synonimy i nie mówi, Kto jest właścicielem obiektu.

 1396
Author: Justin Cave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-19 12:38:17

Zapytania user_tables i dba_tables nie zadziałały.
Ten zrobił:

select table_name from all_tables  
 184
Author: vitule,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 18:12:19

Idąc o krok dalej, istnieje inny widok o nazwie cols (all_tab_columns), który może być użyty do ustalenia, które tabele zawierają daną nazwę kolumny.

Na przykład:

SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';

Aby znaleźć wszystkie tabele o nazwie zaczynającej się od EST i kolumny zawierające CALLREF w dowolnym miejscu w ich nazwach.

Może to pomóc w ustaleniu, do których kolumn chcesz dołączyć, na przykład w zależności od konwencji nazewnictwa tabeli i kolumn.

 67
Author: stealth_angoid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-11 05:41:44

Dla lepszego oglądania z sqlplus

Jeśli używasz sqlplus możesz najpierw ustawić kilka parametrów dla lepszego wyświetlania, jeśli Twoje kolumny są zniekształcone (zmienne te nie powinny się utrzymywać po zakończeniu sesji sqlplus):

set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000

Pokaż Wszystkie Tabele

Możesz użyć czegoś takiego, aby zobaczyć wszystkie nazwy tabel:

SELECT table_name, owner, tablespace_name FROM all_tables;

Pokaż Tabele, Które Posiadasz

Jak wspomina @ Justin Cave, możesz użyć tego, aby pokazać tylko tabele, które własne:

SELECT table_name FROM user_tables;

Nie zapomnij o poglądach

Pamiętaj, że niektóre "tabele" mogą być "widokami", więc możesz również spróbować uruchomić coś w stylu:

SELECT view_name FROM all_views;

Wyniki

To powinno dać coś, co wygląda dość akceptowalnie jak:

wynik

 54
Author: cwd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-17 16:26:21

Proste zapytanie do wyboru tabel dla bieżącego użytkownika:

  SELECT table_name FROM user_tables;
 22
Author: Israel Margulies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 22:15:45
    select object_name from user_objects where object_type='TABLE';

----------------lub------------------

    select * from tab;

----------------lub------------------

    select table_name from user_tables;
 20
Author: Harshil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 09:28:32

Wypróbuj poniższe widoki słownika danych.

tabs
dba_tables
all_tables
user_tables
 15
Author: Mahmoud Ahmed El-Sayed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-28 10:48:27

Baza danych Oracle do wyświetlania nazw wszystkich tabel za pomocą poniższego zapytania

SELECT owner, table_name FROM dba_tables;

SELECT owner, table_name FROM all_tables;

SELECT table_name FROM user_tables;

Vist więcej: http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html

 10
Author: Brahmareddy K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-17 10:16:09

Spróbuj wybrać z listy user_tables , która wyświetla tabele należące do bieżącego użytkownika.

 9
Author: Eddie Awad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 18:08:50

Z którymkolwiek z nich możesz wybrać:

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';
 8
Author: Van Gogh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 22:10:26
select * from dba_tables

Podaje wszystkie tabele wszystkich użytkowników tylko wtedy, gdy użytkownik, z którym się zalogowałeś, ma uprawnienia sysdba.

 6
Author: praveen2609,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:54:10

Nie znalazłem odpowiedzi, która wskazywałaby na użycie

DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)

Więc postanowiłem dodać również moją wersję. Widok ten zwraca więcej niż DBA_TABLES, ponieważ zwraca również tabele obiektów ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).

 4
Author: Rusty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-11 15:31:02

Możesz użyć Oracle Data Dictionary , aby uzyskać informacje o obiektach oracle.

Możesz uzyskać listę tabel na różne sposoby:

select * 
from dba_tables

Lub na przykład:

select * 
from dba_objects 
where object_type = 'TABLE' 

Następnie możesz uzyskać kolumny tabeli używając nazwy tabeli:

select * 
from dba_tab_columns

Następnie można uzyskać listę zależności (wyzwalaczy, widoków itp.):

select * 
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name 

Następnie można uzyskać źródło tekstu tego obiektu:

select * from dba_source

I możesz użyć USER lub ALL zamiast DBA, jeśli chcesz.

 4
Author: Slava Babin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 12:58:30

Łącznie z odsłonami:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS
 4
Author: Punnerud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 11:44:29

Możemy uzyskać wszystkie tabele wraz ze szczegółami kolumn z poniższego zapytania:

SELECT * FROM user_tab_columns;
 4
Author: aim_thebest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 17:41:34

Poniżej znajduje się skomentowany fragment zapytań SQL opisujący, w jaki sposób można skorzystać z opcji:

-- need to have select catalog role
SELECT * FROM dba_tables;

-- to see tables of your schema
SELECT * FROM user_tables;

-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;
 4
Author: Prashant Mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 17:47:26

Nowa funkcja dostępna w SQLcl( co jest darmowym interfejsem wiersza poleceń dla bazy danych Oracle) jest

Tables alias.

Oto kilka przykładów pokazujących użycie i dodatkowe aspekty tej funkcji. Najpierw połącz się z sesją linii poleceń sql (sql.exe w systemie windows). Zaleca się wprowadzenie tego polecenia sqlcl przed uruchomieniem innych poleceń lub zapytań, które wyświetlają data.

SQL> set sqlformat ansiconsole     -- resizes the columns to the width of the 
                                   -- data to save space 

SQL> tables

TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..

Aby dowiedzieć się, do czego odnosi się alias tables, możesz po prostu użyć alias list <alias>

SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------

 select table_name "TABLES" from user_tables

Nie musisz definiować tego aliasu, ponieważ jest on domyślnie ustawiony w sqlcl. Jeśli chcesz wyświetlić listę tabel z określonego schematu, używając nowego aliasu zdefiniowanego przez użytkownika i przekazując nazwę schematu jako argument bind z wyświetlanym tylko zestawem kolumn, możesz to zrobić używając

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;

Potem możesz po prostu przejść nazwa schematu jako argument

SQL> tables_schema HR

OWNER   TABLE_NAME               LAST_ANALYZED
HR      DUMMY1                   18-10-18
HR      YOURTAB2                 16-11-18
HR      YOURTABLE                01-12-18
HR      ID_TABLE                 05-12-18
HR      REGIONS                  26-05-18
HR      LOCATIONS                26-05-18
HR      DEPARTMENTS              26-05-18
HR      JOBS                     26-05-18
HR      EMPLOYEES                12-10-18
..
..

Bardziej wyrafinowany predefiniowany alias znany jest jako Tables2, który wyświetla kilka innych kolumn.

SQL> tables2

Tables
======
TABLE_NAME                 NUM_ROWS   BLOCKS   UNFORMATTED_SIZE COMPRESSION     INDEX_COUNT   CONSTRAINT_COUNT   PART_COUNT LAST_ANALYZED
AN_IP_TABLE                       0        0                  0 Disabled                  0                  0            0 > Month
PARTTABLE                         0        0                  0                           1                  0            1 > Month
TST2                              0        0                  0 Disabled                  0                  0            0 > Month
TST3                              0        0                  0 Disabled                  0                  0            0 > Month
MANAGE_EMPLYEE                    0        0                  0 Disabled                  0                  0            0 > Month
PRODUCT                           0        0                  0 Disabled                  0                  0            0 > Month
ALL_TAB_X78EHRYFK                 0        0                  0 Disabled                  0                  0            0 > Month
TBW                               0        0                  0 Disabled                  0                  0            0 > Month
DEPT                              0        0                  0 Disabled                  0                  0            0 > Month

Aby wiedzieć jakie zapytanie uruchamia się w tle, wpisz

alias list tables2

To pokaże Ci nieco bardziej złożone zapytanie wraz z predefiniowanymi definicjami column powszechnie używanymi w SQL * Plus.

Jeff Smith wyjaśnia więcej o aliasach proszę.

 3
Author: Kaushik Nayak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-31 15:49:04

Poniższe zapytanie zawiera tylko wymagane dane, podczas gdy inne odpowiedzi dały mi dodatkowe dane, które tylko mnie zdezorientowały.

select table_name from user_tables;
 2
Author: Mateen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-29 09:16:41

Szukałem listy wszystkich nazw kolumn należących do tabeli schematu posortowanej według kolejności ID kolumny.

Oto zapytanie, którego używam: -

SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
 1
Author: Rakesh Narang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 05:33:55

Rzeczywiście, możliwe jest posiadanie listy tabel poprzez SQL queries.it możliwe jest to również za pomocą narzędzi umożliwiających generowanie słowników danych, takich jak ERWIN, Toad Data Modeler lub ERBuilder. Dzięki tym narzędziom, oprócz nazw tabel, będziesz mieć pola, ich typy, obiekty takie jak (wyzwalacze, sekwencje, domeny, widoki...)

Poniżej kroki, które należy wykonać, aby wygenerować definicję tabel:

  1. musisz odtworzyć swój baza danych
    • W Toad data modeler: Menu - > File - > reverse engineer - > reverse engineering wizard
    • W ERBuilder data modeler: Menu - > File - > reverse engineer

Twoja baza danych zostanie wyświetlona w oprogramowaniu jako schemat relacji encji.

  1. Wygeneruj słownik danych, który będzie zawierał definicję tabel
    • W Toad data modeler: Menu - > Model - > Generuj raport - > Uruchom
    • w danych Erbuildera modeler: Menu - > narzędzie - > generowanie dokumentacji modelu
 1
Author: parash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-09 15:39:03

wykonaj poniższe polecenia:

Pokaż wszystkie tabele w bazie danych Oracle

sql> SELECT table_name FROM dba_tables;

Pokaż tabele należące do bieżącego użytkownika

sql> SELECT table_name FROM user_tables;

Pokaż tabele dostępne dla bieżącego użytkownika

sql> SELECT table_name FROM all_tables ORDER BY table_name; Poniższy obrazek ilustruje tabele, które mogą być zwracane z widoków user_tables, all_tables i dba_tables:

 0
Author: Prasenjit Mahato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-16 12:14:51
select * from all_all_tables

To dodatkowe "wszystko" na początku daje dodatkowe 3 kolumny, które są:

OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE
 -1
Author: dealwithit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-03 14:07:10

Aby uzyskać wszystkie nazwy tabel, możemy użyć:

Select  owner, table_name  from sys.all_tables;

Aby uzyskać nazwy kolumn dla wszystkich tabel, możemy użyć:

Select owner, table_name, column_name, data_type, data_length from sys.all_tab_columns
 -1
Author: The AG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-30 21:04:01

Tabele w bieżącym schemacie logowania użytkownika

select * from tabs;
 -1
Author: Ejrr1085,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-06 16:03:15