powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отследить цепочку синонимов и вью.
12 сообщений из 12, страница 1 из 1
Отследить цепочку синонимов и вью.
    #39549537
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Братья, привет.

Вкратце:
Посоветуйте инструмент, который бы удобно визуально(?) отслеживал цепочку из синонимов и вьюх до конечных таблиц и их полей.
Понятно, что (наверное) можно написать самому восьмиэтажный запрос, но вдруг "всё уже написано до нас"? :)

Подробнее:
Начал работать над проектом, в котором (условно говоря) синонимов больше, чем таблиц.
В проекте около 5ти баз (связаны через дб-линки), в каждой базе порядка 20 схем.
Зачастую таблицы, как правило, имеют вьюхи (чтобы удобнее было накладывать политики) с теми же самыми полями.
Когда я выбираю из таблицы(?) в какой-нибудь рабочей схеме, то это чаще всего синоним, который указывает на вьюху в другой схеме, та в свою очередь может опять ссылаться на синоним и вьюху в третьей схеме, а может быть цепочка уходит и дальше в четвёртую схему. А иногда ещё и через дб-линки.
Как правило, все поля конечных таблиц прокомментированы. Но пока до этого конечного поля конечной таблицы дойдёшь - сто раз изругаешься.

Нет ли какого-нибудь инструмента? Который бы работал приблизительно так:
ему скармливаешь имя таблицы (объекта в схеме), а он бы в ответ расписывал бы всю цепочку (всё дерево) связанных объектов, откуда в итоге будут браться данные.
Ещё лучше, чтобы он это делал по каждому полю отдельно, и чтобы для поля он указывал бы не только цепочку объектов (откуда берётся поле), цепочку типов и цепочку комментариев.

Спасибо.
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39549575
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, поможет
all_dependencies
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619211
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увы, инструмента я так и не нашёл, написал коротенький скрипт, который по цепочке (view->synonym..->table ) разворачивает, из каких таблиц в итоге выгребаются данные.

Но остался нерешённым вопрос, откуда выгребаются данные, если очередное вью указывает на объект через дб-линк.
Допустим у меня есть view:

create view view_name_1 (view_field1,view_field2) as
select table_name1.field1, table_name2.field2 from
table_name1, table_name2@db_link_name;

Если посмотреть в all_dependencies, то там видно, что view_name_1 зависит от table_name1. Но никак не видно, что view_name_1 зависит от table_name2, так как table_name2 выбирается через дб-линк. Цепочка обрывается. Есть возможность оследить эту цепочку? Не глазами отследить, а через какое-то view? Ну или ещё какой-нибудь инструмент.

Ну и ещё более интересный вопрос: можно ли отследить, из какой таблицы и какого поля в итоге выбираются данные для конкретного поля view? Для приведённого выше примера хочется видеть, что поле view_name_1.view_field1 - это в итоге значение поля "table_name1.field1". Есть какое-нибудь view в оракле, где это можно было бы посмотреть?
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619258
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shurka22,

Продолжай вести наблюдение своим скриптом через дблинк
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619400
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как? Скриптом парсить текст view?
Сейчас-nj я выгребаю зависимости из all_dependencies. Но там есть информация о таблице table_name1, и нет информации о table_name2 (так как она уже за дб-линком)?

Или это был тонкий сарказм за подъём столь старой темы? :)
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619402
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поторопился. Теперь без ошибок:

А как? Скриптом парсить текст view?
Сейчас-то я выгребаю зависимости из all_dependencies. Но там есть информация о таблице table_name1, и нет информации о table_name2 (так как она уже за дб-линком).

Или это был тонкий сарказм за подъём столь старой темы? :)
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619413
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurka22Поторопился. Теперь без ошибок:

А как? Скриптом парсить текст view?
Сейчас-то я выгребаю зависимости из all_dependencies. Но там есть информация о таблице table_name1, и нет информации о table_name2 (так как она уже за дб-линком).

Или это был тонкий сарказм за подъём столь старой темы? :)
вам же сказали уже
если хотите распарсить вью, которая за дблинком, то и зависимости надо смотреть (не локальные, а..) за дблинком
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619429
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawishвам же сказали уже
если хотите распарсить вью, которая за дблинком, то и зависимости надо смотреть (не локальные, а..) за дблинком
Это понятно.
Но как я вообще узнаю о том, что в моём вью присутствует дб-линк? И какой объект за дб-линком мне надо исследовать?
Сейчас я это делаю только глазами, то есть вручную смотрю на текст view. Вручную - не хочется, много времени занимает. Хочу некий автомат.
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619438
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shurka22Но как я вообще узнаю о том, что в моём вью присутствует дб-линк? И какой объект за дб-линком мне надо исследовать?
Сейчас я это делаю только глазами, то есть вручную смотрю на текст view. Вручную - не хочется, много времени занимает. Хочу некий автомат.
Чтобы было понятнее. Сейчас я делаю запрос:
select .. from all_dependencies where name='VIEW_NAME_1' (разумеется, ещё условие по owner)
И в ответе вижу только запись, где referenced_name = 'TABLE_NAME1'. Но нет записи, где referenced_name = 'TABLE_NAME2'. Хотя table_name2@db_link_name - присутствует в теле VIEW_NAME_1.
Видимо оракл нигде не хранит такую связь?
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39619534
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot shurka22]shurka22Но как я вообще узнаю о том, что в моём вью присутствует дб-линк?
...
Видимо оракл нигде не хранит такую связь?

Код: sql
1.
select * from all_dependencies a WHERE a.REFERENCED_LINK_NAME IS NOT NULL
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39621947
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
efendiselect * from all_dependencies a WHERE a.REFERENCED_LINK_NAME IS NOT NULL
Хм.. Есть такие записи, но для объектов с типами (поле TYPE) 'PROCEDURE', 'PACKAGE BODY' и 'TYPE BODY'.
Почему-то view, которые выбирают данные через дб-линк, у меня не попали в эту выборку. :(
Копаю дальше.
...
Рейтинг: 0 / 0
Отследить цепочку синонимов и вью.
    #39621982
shurka22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shurka22efendiselect * from all_dependencies a WHERE a.REFERENCED_LINK_NAME IS NOT NULL
Хм.. Есть такие записи, но для объектов с типами (поле TYPE) 'PROCEDURE', 'PACKAGE BODY' и 'TYPE BODY'.
Почему-то view, которые выбирают данные через дб-линк, у меня не попали в эту выборку. :(
Копаю дальше.
А, всё, понял.

Читаю: https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_1041.htm#i1576452
ALL_DEPENDENCIES describes dependencies between procedures, packages, functions, package bodies, and triggers accessible to the current user, including dependencies on views created without any database links .

То есть view, которая использует db-link в этой выборке не присутствует. Так было задумано.
Пичалька..
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Отследить цепочку синонимов и вью.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]