Объекты Oracle можно смотреть в словаре данных в различных системных вьюшках.
Вьюшки по объектам своей схемы (по объектам пользователя, под которым сейчас залогинен) начинаются с префикса "user_".
Вьюшки по объектам всех схем начинаются с префикса "all_", а в остальном пишутся так же.
Вьюшки по объектам всех схем (с админскими) начинаются с префикса "dba_", а в остальном пишутся так же.
В нижеприведенных запросах можно поменять "user_" на "all_", чтобы делалась выборка по всем схемам.
При замене "user_" на "all_" во вьюшках добавляется поле OWNER (название схемы).
Важно понимать, что все объекты в словаре данных хранятся написанными большими буквами, если только при их создании не были использованы двойные кавычки, что делается редко.
select * from user_tables; -- все таблицы
select * from user_tab_columns where table_name = 'MY_TABLE'; -- Столбцы таблицы MY_TABLE, с порядком следования (column_id), типами данным, размерами. Обратите внимание, что в user_tab_columns также хранятся и столбцы вьюшек.
select * from user_source; -- код функций, процедур, пакетов, триггеров (хранятся построчно с указанием номеров строк)
select * from user_views; -- код вьюшек (тела вьюшек хранятся в поле text типа long)
select * from user_mviews; -- код материализованных вьюшек (о них будет глава позже)
select * from user_objects; -- все объекты
select * from user_segments; -- занимаемое таблицами и индексами место на диске
select * from user_tablespaces; -- тэйблспейсы (физические пространства для таблиц и индексов)
select * from user_indexes; -- индексы
select * from user_ind_columns; -- столбцы индексов
select * from user_synonyms; -- синонимы (дополнительные имена для объектов)
select * from user_db_links; -- database links
select * from user_constraints; -- констрейнты (о них далее будет глава)
select * from user_tab_partitions; -- партиции
select * from user_tab_subpartitions; -- субпартиции
Бывает, что таблица состоит из нескольких вложенных таблиц одинаковой структуры – партиций. Партиции в свою очередь могут содержать в себе субпартиции, то есть таблицы второго уровня вложенности. Третьего уровня вложенности не бывает. Разделение таблицы на партиции осуществляется согласно значениям определенного поля таблицы (по которому производится партиционирование). Отнесение каждой строки к конкретной партиции может осуществляться по интервалам (by range) или по перечню значений (by list), которые может принимать поле (по которому производится партиционирование). Пример использования партиций: таблица звонков абонентов сотовой сети с партиционированием по дате звонка (by range) и субпартиционированием по коду региона (by list). Предлагается посмотреть в боевой базе на какую-либо партиционированную таблицу и посмотреть на код создания таблицы.
select * from user_dependencies where name = 'PCK_XS'; -- какие объекты используются в объекте(пакете) PCK_XS
select * from user_dependencies where referenced_name = 'ST_CLIENTS'; -- какие объекты используют объект(таблицу) ST_CLIENTS
Взимозависимости объектов можно смотреть в PL/SQL Developer-е, раскрыв в дереве объектов узел с именем интересующего объекта, а затем раскрыв узлы “References” и “Referenced by”.