Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Коллеги, привет.

Кратко: насколько потенциально опасно делать DB-LINK на другую схему в ту же базу?
Грант не помогает :(

Детально:
Находимся в схеме-1 (C1). Есть вторая схема (C2), где надо вызвать функцию F (сторонний вендор, куча кода). Эта функция использует вызов функции sys_context(). Контекст же устанавливается триггером на LOGON.
Если коннектимся на схему S2: триггер отрабатывает, у функции один результат.
Если коннектимся на схему S1: права вызова через грант, триггер не отрабатывает, у функции другой результат.
Получается запустить, если сделать DB-LINK в пределах одной базы со схемы-1 на схему-2.
Насколько это опасно? Ну вдруг оракл не рекомендует такой финт. Вроде бы тесты работают.

Ну или вдруг подскажете решение проще?
Спасибо.
4 дек 18, 08:53    [21752576]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
shurka22,
Сам себе отвечу: есть решение без ДБ-линка, если на схеме-1 повторить логику триггера схемы-2 ON LOGON. Надо разбираться в логике этого кода, он местами завязан на USER. В общем затея возможная, но не самая простая.
4 дек 18, 09:08    [21752588]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
A K
Member

Откуда:
Сообщений: 352
dblink в той же бд, разумно использовать если у вас схемы могут мигрировать между базами (их могут перемещать в другие бд в зависимости от разных условий), еще очень удобно, если используется стендбай для балансировки нагрузки при распределении запросов (что бы из праймари обратиться запросом к стендбаю и наоборот), но в вашем случае, насколько я правильно вас понял, нужно создавать хранимки с invoker_rights_clause. Тогда они будут себя вести по-разному в зависимости от того, кто их вызывает. Почитайте Тома Кайта! Он очень хорошо описывает эти хранимки.
4 дек 18, 12:52    [21752804]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
A K
но в вашем случае, насколько я правильно вас понял, нужно создавать хранимки с invoker_rights_clause.

Вы про authid current_user? Кажется, что мне это не поможет.

У меня случай такой: процедура в схеме-2 отрабатывает корректно при следующих условиях:
1) сработал триггер ON LOGON, который устанавливает переменные контекста
2) запрос "SELECT USER FROM DUAL" - возвращает значение "схема-2". На это завязана как минимум раздача неких прикладных прав.

При вызове через DB-link оба условия выполняются.

При вызове через гранты:
1) триггер мы можем щёлкнуть вручную
2) но подменить USER - мне представляется проблематичным. Или как-то можно?
5 дек 18, 06:44    [21753887]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28484
shurka22
Или как-то можно?
Согласовать со "сторонним вендором" не хакерский, а легальный способ взаимодействия - не судьба?
5 дек 18, 08:42    [21753920]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Elic
Согласовать со "сторонним вендором" не хакерский, а легальный способ взаимодействия - не судьба?

Видимо да, не судьба.
Руководство настаивает на анализе кода стороннего вендора, и написании аналога кода, чтобы делать то же самое, но со схемы-1.
Аргументы: нецелевое использование ДБ-линка. Используем не так, как задумал оракл. Уж лучше вообще отказаться от решения задачи, чем через такой дб-линк. Петлю из двух дб-линков (на вторую базу, и потом назад) - тоже отвергли.
Сейчас задача решена через джоб: на схеме-1 создаём задание для джоба. На схеме-2 время от времени запускается джоб, который исполняет это задание. Криво, долго, не синхронно, но работает.
5 дек 18, 08:56    [21753928]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
я бы переформулировал задачу так:

Как из схемы-1 (user-1) вызвать процедуру П() на схеме-2 (user-2), чтобы эта процедура выполнилась, как будто мы зашли в оракл и выполнили её от имени user-2?

А именно:
1) щёлкнулись все триггеры, которые щёлкаются при логине user-2. Это ON LOGON, может быть что-то ещё есть.
2) "select user from dual" говорил бы именно user-2, а не user-1 (user-1 он скажет, если мы просто дадим грант, и позовём из схемы-1).
3) что-то ещё?
5 дек 18, 09:10    [21753932]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
https://oracle-base.com/articles/misc/proxy-users-and-connect-through#proxy-user-and-connect-through
?
5 дек 18, 09:13    [21753939]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28484
shurka22
Используем не так, как задумал оракл.
Не так, как задумал вендор. Голь на выдумки хитра?
5 дек 18, 09:20    [21753943]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Viewer
https://oracle-base.com/articles/misc/proxy-users-and-connect-through#proxy-user-and-connect-through
?

Как я понимаю, вы предлагаете user-1 сделать прокси-пользователем для user-2. Так? То есть залить все объекты схемы-1 в схему-2.
Это можно сделать и без прокси-пользователя. Но крайне нежелательно, а скорее - невозможно. Обе схемы очень большие, старые, давно работают.
5 дек 18, 09:22    [21753948]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Elic
Не так, как задумал вендор. Голь на выдумки хитра?

Ну вдруг есть более изящное решение? ДБ-линк на ту же БД - он мне и самому не сильно нравится. Просто я не вижу решения дешевле.
5 дек 18, 09:25    [21753951]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
shurka22
Как я понимаю, вы предлагаете ... залить все объекты схемы-1 в схему-2

Это ваши домыслы...
Вы же хотели:
shurka22
1) щёлкнулись все триггеры, которые щёлкаются при логине user-2
2) "select user from dual" говорил бы именно user-2, а не user-1
5 дек 18, 09:38    [21753958]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1418
shurka22,

общаться между сессиями (user1/user2) можно через dbms_pipe

user2 логинется как технический (c onlogon-ом, контекстом і тд) и ждет указания какую процедуру/ф-цию вызвать

....
stax
5 дек 18, 09:56    [21753971]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Viewer
shurka22
Как я понимаю, вы предлагаете ... залить все объекты схемы-1 в схему-2

Это ваши домыслы...
Вы же хотели:
shurka22
1) щёлкнулись все триггеры, которые щёлкаются при логине user-2
2) "select user from dual" говорил бы именно user-2, а не user-1

Всё верно. Видимо я вас не понял.

Давайте по шагам:
Схема-1/user-1, схема-2/user-2 - остаются без изменений.
Создаём user-3, который прокси-пользователь для user-2.
То есть логинимся как user-3, но получаем все права, как user-2.
Как я понимаю, схемой для user-3 будет схема-2. Да пусть даже и схема-3 - это не важно.

А дальше-то что?

Когда я из под пользователя user-1 пойду вызывать процедуру схема2.П() (по любой цепочке, через схему-3, или напрямую), то "select user from dual" у меня всё равно будет user-1, а не user-2. То есть процедура П() отработает неверно.
5 дек 18, 09:58    [21753976]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28484
shurka22
Elic
Не так, как задумал вендор. Голь на выдумки хитра?
Ну вдруг есть более изящное решение?
Ещё раз. Не "ломайте" вендора. Лучше договоритесь с ним.
5 дек 18, 10:00    [21753978]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Stax
shurka22,
общаться между сессиями (user1/user2) можно через dbms_pipe

Тут сразу гроздь проблем:
1) пайп - достаточно капризный механизм, это не дб-линк. для чтения пайпы, надо сразу на схеме-2 поднять какой-то джоб или процесс, который будет непрерывно его слушать. любой джоб или процесс - головная боль для админов, надо следить, чтобы не упал. Вовремя опускать/поднимать.
2) нужно не только вызвать функцию, но и узнать результат. В случае процедуры - понять, что процедура не сломалась. Как это сделать через пайп - я не знаю. Ну то есть сделать-то можно, но это ещё более криво, чем всё остальное.
5 дек 18, 10:05    [21753982]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Elic
Ещё раз. Не "ломайте" вендора. Лучше договоритесь с ним.

Вендор уже "поломан" :)
Часть логики вендора уже переписана (до меня).
Видимо, придётся и тут грызть гранит.
5 дек 18, 10:08    [21753986]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28484
shurka22
Часть логики вендора уже переписана (до меня).
Таки голь.
5 дек 18, 10:10    [21753988]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
shurka22
Давайте по шагам:
Схема-1/user-1, схема-2/user-2 - остаются без изменений.
Создаём user-3, который прокси-пользователь для user-2.
То есть логинимся как user-3, но получаем все права, как user-2.

SQL> alter user USER1  grant connect through USER2;

User altered.

SQL> connect USER1[USER2]
Enter password:
   <пароль_user1>
Connected.

SQL> show user
USER is "USER2" 
5 дек 18, 10:11    [21753991]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1418
shurka22,

с помощью джоба как узнаете результат?

pipe не панацея, а как один из вариантов
user1 может через pipe общатся с user2,
не только просить запуск процедуры но и как дела, чем занят, настроение и тд

.....
stax
5 дек 18, 10:20    [21754003]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Stax
shurka22,
с помощью джоба как узнаете результат?

Как узнаЁм сейчас?
Никак не узнаём - в этом-то и беда, асинхрон у нас. Ну то есть узнаём, но позже. Это и есть главная проблема.

Очень хочется сделать так, чтобы когда схема-1 захотела позвать схема2.П(), она сразу бы (в синхронном режиме) получила результат работы.

Stax
pipe не панацея, а как один из вариантов
user1 может через pipe общатся с user2,
не только просить запуск процедуры но и как дела, чем занят, настроение и тд

Спросить-то можно, ответ в синхронном режиме никак не получить.
5 дек 18, 10:48    [21754019]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Viewer
SQL> alter user USER1  grant connect through USER2;

User altered.

SQL> connect USER1[USER2]
Enter password:
   <пароль_user1>
Connected.

SQL> show user
USER is "USER2" 

Спасибо, теперь понял. Видимо всё равно не годится.
Мы не просто вызываем функцию схема2.П() из схемы-1, а из процедур/функций схемы-1. Все обработчики коннектятся на схему-1 и работают с объектами схемы-1. И вот одна из функций схемы-1 (пусть схема1.Ф1()) хочет вызвать процедуру схема2.П(), причём вызвать так, как будто бы схема2.П() исполнялась бы из под пользователя user2. Вызвать, и сразу (в синхронном режиме) получить результат работы - от ответа будет зависеть дальнейшая логика функции схема1.Ф1().
5 дек 18, 10:54    [21754024]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1418
shurka22
Спросить-то можно, ответ в синхронном режиме никак не получить.

я наверное чего-то не понимаю

разработать протокол диалога user1 i user2

грубо
логинется user2 и ждет
1 по пайпу спашивает 2 как дела, готов ли ты к работе
если 2 готов, 1 дает ему задание и переходит в режим ожидания
2 выполнил процедуру и расказывает 1 как все прошло
1 благодарит за оказанную услугу и занимается своим делом
2 переходит в режим ожидания

.....
stax
5 дек 18, 10:59    [21754027]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Stax
разработать протокол диалога user1 i user2

Всё так.
Сейчас всю эту задачу может решить ДБ-линк. Получится куда как проще, дешевле и надёжнее. И время отклика будет на порядки быстрее.
Я и спросил: нет ли более изящного решения, чем ДБ-линк?
5 дек 18, 11:17    [21754046]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
BTM
Member

Откуда:
Сообщений: 117
shurka22,

Это нормальное решение, называется loopback db_link, довольно распространенное,
и Том Кайт одобряет
автор
It is useful for connecting as another user in your current session (eg: the loopback link can connect as scott/tiger whilst you are logged in as bob)

, и вашу задачу решает. Не умножайте сущности.
5 дек 18, 12:21    [21754155]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
BTM
shurka22,
Это нормальное решение, называется loopback db_link, довольно распространенное,
и Том Кайт одобряет

О благодарю вас.
Для потомков, ссылка на кайта:
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:456820211101
5 дек 18, 12:37    [21754201]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
можно ещё так
RTFM
[url=]https://docs.oracle.com/cd/B28359_01/server.111/b28310/general009.htm#ADMIN02101[/url]
5 дек 18, 18:42    [21754835]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Alex URS
можно ещё так
RTFM
[url=]https://docs.oracle.com/cd/B28359_01/server.111/b28310/general009.htm#ADMIN02101[/url]

ALTER SESSION SET CURRENT_SCHEMA = <schema name>
In subsequent SQL statements, Oracle Database uses this schema name as the schema qualifier when the qualifier is omitted. ...
The session retains its original privileges and does not acquire any extra privileges by the preceding ALTER SESSION statement.

... мимо, не говоря уже о том, чтобы
shurka22
1) щёлкнулись все триггеры, которые щёлкаются при логине user-2
2) "select user from dual" говорил бы именно user-2, а не user-1
5 дек 18, 18:52    [21754843]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
Viewer , прочитайте внимательнее, что же написано английским и переводите не в гугле )
and does not acquire any extra privileges by the preceding ALTER SESSION statement

при грамотном подходе всё заработает, тем более у него все триггеры щёлкаются при логине триггером ON LOGON,- переделать триггер, делов то
5 дек 18, 19:03    [21754850]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
-2-
Member

Откуда:
Сообщений: 14095
Alex URS
переделать триггер, делов то
Полагаешь, что вся проблема это написать при обращении к объектам другой схемы ее имя?
5 дек 18, 19:50    [21754895]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Alex URS
Viewer , прочитайте внимательнее, что же написано английским и переводите не в гугле )
and does not acquire any extra privileges by the preceding ALTER SESSION statement

при грамотном подходе всё заработает, тем более у него все триггеры щёлкаются при логине триггером ON LOGON,- переделать триггер, делов то

1) Триггеры можно и вручную щёлкнуть - да.
2) Но вот сколько ни думал, не смог заставить оракл выполнить второй пункт:
"select user from dual" говорил бы именно user-2, а не user-1
Подскажете, как это сделать через ваш метод? Был бы премного благодарен.
6 дек 18, 05:09    [21755244]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Alex URS
Viewer , прочитайте внимательнее, что же написано английским и переводите не в гугле )
and does not acquire any extra privileges by the preceding ALTER SESSION statement

Было бы интересно услышать ваш вариант перевода...

P.S. Пренебрёг вашим советом, и посмотрел перевод гугла. Он подтвердил, что я не безнадёжен...
6 дек 18, 08:04    [21755297]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
shurka22
Alex URS
Viewer , прочитайте внимательнее, что же написано английским и переводите не в гугле )
and does not acquire any extra privileges by the preceding ALTER SESSION statement

при грамотном подходе всё заработает, тем более у него все триггеры щёлкаются при логине триггером ON LOGON,- переделать триггер, делов то

1) Триггеры можно и вручную щёлкнуть - да.
2) Но вот сколько ни думал, не смог заставить оракл выполнить второй пункт:
"select user from dual" говорил бы именно user-2, а не user-1
Подскажете, как это сделать через ваш метод? Был бы премного благодарен.


при использовании ALTER SESSION зачем же использовать это "select user from dual" ?
используй
SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual
6 дек 18, 10:12    [21755415]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
Viewer,

если у вас по переводу всё "сошлось", тогда не понимаю к чему была указана эта нота для ALTER SESSION?
согласно утверждению автора триггер в его системе раздаёт гранты - loopback db_link, тоже вроде как does not acquire any extra privileges
1 пункт делается небольшим изменением триггера ON LOGON
2 пункт заменяем на код, который я указал в предыдущем моём сообщении, если понадобится

в данном случае будет получено именно то, что хочет автор топика
6 дек 18, 10:26    [21755438]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
ну и собственно ответ автору топика на его вопрос:
DB-LINK на другую схему в ту же базу - плохо?
да т.к. это "кривое" решение с доп. накладными расходами и ограничениями (commit/rollback,BLOB)
6 дек 18, 10:35    [21755453]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Alex URS
loopback db_link, тоже вроде как does not acquire any extra privileges

Через частный dblink схемы USER1 совершается коннект для вызова функции в схеме USER2.
В дб-линке прописан логин под именем USER2.
Поробуйте перечитать весь топик и переосмыслить всё под этим углом зрения..
6 дек 18, 10:36    [21755457]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
-2-
Alex URS
переделать триггер, делов то
Полагаешь, что вся проблема это написать при обращении к объектам другой схемы ее имя?


нет, я такого не писал
голова, она не только для того чтобы есть
6 дек 18, 10:43    [21755471]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
Viewer
Alex URS
loopback db_link, тоже вроде как does not acquire any extra privileges

Через частный dblink схемы USER1 совершается коннект для вызова функции в схеме USER2.
В дб-линке прописан логин под именем USER2.
Поробуйте перечитать весь топик и переосмыслить всё под этим углом зрения..


я ж не предлагаю своё решение как панацею
я написал так:

Alex URS
можно ещё так...


можно - не значит, что это будет легче
но с dblink получите кучу проблем с коммитами, ролбеками, лобами,(LOBS), xmlлями....
6 дек 18, 10:48    [21755480]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Alex URS
Viewer
пропущено...

Через частный dblink схемы USER1 совершается коннект для вызова функции в схеме USER2.
В дб-линке прописан логин под именем USER2.
Попробуйте перечитать весь топик и переосмыслить всё под этим углом зрения..

я ж не предлагаю своё решение как панацею
я написал так:
Alex URS
можно ещё так...

Неможно..
Viewer
Попробуйте перечитать весь топик и переосмыслить всё ...
6 дек 18, 10:58    [21755498]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Alex URS
при использовании ALTER SESSION зачем же использовать это "select user from dual" ?
используй
SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual

Увы, 40Mb кода стороннего вендора уже написаны, и они уже используют именно USER, а не SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA'). Переписать этот код будет крайне дорого.
Существующее решение уже использует 2 дб-линка. Создание дополнительной петли дб-линка - сильной роли не сыграют.
6 дек 18, 11:02    [21755504]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
Viewer
...
Неможно..
...


смешно
это из серии "А Баба Яга против"
6 дек 18, 11:08    [21755519]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
-2-
Member

Откуда:
Сообщений: 14095
Alex URS
-2-
Полагаешь, что вся проблема это написать при обращении к объектам другой схемы ее имя?
нет, я такого не писал
голова, она не только для того чтобы есть
Ну так растолкуй тогда, что делает alter session set current_schema, кроме как поменять схему в процессе разрешения имен.

Alex URS
при использовании ALTER SESSION зачем же использовать это "select user from dual" ?
используй
SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual
Поменять код вендора - автор сам об этом заикается. Только код этот наверняка definer и тогда в чем смысл alter session set current_schema?
6 дек 18, 11:17    [21755531]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
-2-
Alex URS
пропущено...
нет, я такого не писал
голова, она не только для того чтобы есть
Ну так растолкуй тогда, что делает alter session set current_schema, кроме как поменять схему в процессе разрешения имен.

Alex URS
при использовании ALTER SESSION зачем же использовать это "select user from dual" ?
используй
SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') from dual
Поменять код вендора - автор сам об этом заикается. Только код этот наверняка definer и тогда в чем смысл alter session set current_schema?


смотрите, что пишет автор
shurka22
shurka22,
Сам себе отвечу: есть решение без ДБ-линка, если на схеме-1 повторить логику триггера схемы-2 ON LOGON. Надо разбираться в логике этого кода, он местами завязан на USER. В общем затея возможная, но не самая простая.


до сих пор definer? не уверен, думаю автор хочет идти (и идёт) по пути наименьшего сопротивления - а это утопия..
красота начнётся позже, когда руководству стрельнёт (например) контейнер с ЭЦП, или blockchain добавить - ох и наплачется автор с dblink

агитируете за dblink? - да, пожалуйста
но я агитирую за рациональное, продуманное и не "кривое" решение
засим разрешите раскланяться - т.к. начинается пустая болтовня ни о чём
как говорится - RTFM
6 дек 18, 11:42    [21755574]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
shurka22
Member

Откуда:
Сообщений: 74
Alex URS
до сих пор definer? не уверен, думаю автор хочет идти (и идёт) по пути наименьшего сопротивления - а это утопия..
красота начнётся позже, когда руководству стрельнёт (например) контейнер с ЭЦП, или blockchain добавить - ох и наплачется автор с dblink

Почему же это утопия? Делать реверс-инжениринг чужого кода (понять, что и в какие таблицы он вставляет) - задача не только неприятная, но и чревата массой ошибок. ДБ-линк, как решение - мне кажется вполе хорошая замена этому.

Конкретная задача: примерно 50 запросов в день, каждый размером в тысячу байт. Изредка, когда всякие миграции - ну пару тысяч запросов за раз. Никаких ЭЦП итд на горизонте нет, и "такая вероятность - крайне мала" (с) :)
6 дек 18, 12:29    [21755639]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
-2-
Member

Откуда:
Сообщений: 14095
Alex URS
до сих пор definer?
Переведи. Я пропустил какую-то пору definer?
Alex URS
агитируете за dblink?
домыслы.
Alex URS
я агитирую за рациональное, продуманное и не "кривое" решение
Есть два направления.
1. Не менять код вендора, пока предложен только вариант через дблинк. Если разобраться с сутью проблемы, возможно достаточно будет добавить пользователя БД в справочник приложения. Или инициализировать контекст прямым вызовом, где-то же оно дергается из триггера по результатам получения user.
2. Менять код вендора. Тут по любому решение "кривое". Нужно еще глубже вникать в суть кода вендора. Может достаточно будет закомментить проверку на user в логон-триггере или прописать константу в параметрах вызываемой из него процедуры. А может этот user разложен по всему коду...
И куда бы тут приткнуть alter session set current_schema? Ах да! До логон-триггера.
6 дек 18, 12:47    [21755676]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28484
Alex URS
агитируете за
Чудак, ты сам себе выдумал тезисы и с пеной у рта агитируешь за попи$деть.
6 дек 18, 12:55    [21755687]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 163
Elic
Alex URS
агитируете за
Чудак, ты сам себе выдумал тезисы и с пеной у рта агитируешь за попи$деть.


раз уж ты вмешался....
Виталий, не я придумал oracle с его костылями и не всегда очевидным решением...
а пена у рта у тут не у меня, а у орущих за dblink.
как по мне - так всё равно, какое решение примет автор топика, я лишь утверждаю, что задача решается вторым постом самого автора топика.

ориентируясь на твой опыт, надеюсь, ты просто поддерживаешь тут писавших, а не здравое решение, т.к. не поверю, что и ты за dblink
6 дек 18, 13:16    [21755720]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Alex URS
а пена у рта у тут не у меня, а у орущих за dblink.

... никто тут ни орёт..

Автор спросил:
shurka22
Получается запустить, если сделать DB-LINK в пределах одной базы со схемы-1 на схему-2.
Насколько это опасно? Ну вдруг оракл не рекомендует такой финт. Вроде бы тесты работают.
Единственный положительный ответ
Ну или вдруг подскажете решение проще?

shurka22
BTM
shurka22,
Это нормальное решение, называется loopback db_link, довольно распространенное,
и Том Кайт одобряет

... и это ВСЁ..
Не клевещите...
6 дек 18, 13:28    [21755734]     Ответить | Цитировать Сообщить модератору
 Re: DB-LINK на другую схему в ту же базу - плохо?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5230
Слегка промахнулся со вставкой.
Фраза "Единственный положительный ответ" должна была располагаться между 2-мя последними цитатами.
6 дек 18, 13:35    [21755747]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Oracle Ответить