SELECT owner, table_name
FROM dba_tables
Това предполага, че имате достъп до DBA_TABLES
изглед на речник с данни. Ако нямате тези привилегии, но се нуждаете от тях, можете да поискате от DBA изрично да ви предостави привилегии върху тази таблица или DBA да ви предостави SELECT ANY DICTIONARY
привилегия или SELECT_CATALOG_ROLE
роля (всяко от които ще ви позволи да направите заявка към всяка таблица с речник с данни). Разбира се, може да искате да изключите определени схеми като SYS
и SYSTEM
които имат голям брой таблици на Oracle, които вероятно не ви интересуват.
Като алтернатива, ако нямате достъп до DBA_TABLES
, можете да видите всички таблици, до които вашият акаунт има достъп чрез ALL_TABLES
изглед:
SELECT owner, table_name
FROM all_tables
Въпреки това, това може да е подмножество от наличните таблици в базата данни (ALL_TABLES
ви показва информацията за всички таблици, до които вашият потребител е получил достъп).
Ако се интересувате само от таблиците, които притежавате, а не тези, до които имате достъп, можете да използвате USER_TABLES
:
SELECT table_name
FROM user_tables
От USER_TABLES
има информация само за таблиците, които притежавате, няма OWNER
колона – собственикът по дефиниция сте вие.
Oracle също има редица наследени изгледи на речник с данни - TAB
, DICT
, TABS
и CAT
например - това може да се използва. Като цяло, не бих предложил да използвате тези наследени изгледи, освен ако нямате абсолютно никаква нужда да архивирате вашите скриптове в Oracle 6. Oracle не е променял тези изгледи от дълго време, така че те често имат проблеми с по-новите типове обекти. Например TAB
и CAT
и двата изгледа показват информация за таблици, които са в кошчето на потребителя, докато [DBA|ALL|USER]_TABLES
изгледи всички ги филтрират. CAT
също така показва информация за материализирани регистрационни файлове за изглед с TABLE_TYPE
на "TABLE", което е малко вероятно да е това, което наистина искате. DICT
комбинира таблици и синоними и не ви казва кой е собственик на обекта.