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

Откуда:
Сообщений: 46
Здравствуйте,
используем программу внешнего разработчика, но есть проблема- один запросик из формы (может пакета, не знаем) нас не устраивает, т.е. хотелось бы- перехватить этот запрос (а как посмотреть, что это за запрос) и добавить условие, т.к. это не можем обойти стандартной, для данной программы, настройкой доступа пользователям
15 мар 06, 11:14    [2449696]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
SELECT t.sql_text
FROM v$sqltext t, v$session s
WHERE s.sid = <>
AND s.sql_address = t.address
ORDER BY t.piece

Потом написать OUTLINE (каркас)

Best Regards, Bauer.
15 мар 06, 11:16    [2449712]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
FreeManLi
Guest
Оттрасируйте сессию.
Только смысл? Всеравно к разработчику обращаться...
MyHomePage
15 мар 06, 11:17    [2449720]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Про OUTLINE...
проблема будет если запрос не использует связанные переменные. Как я понимаю?
15 мар 06, 11:19    [2449728]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
GorbunovSV
Member

Откуда:
Сообщений: 46
Обратиться я не против, только результат будет в сл. версии :), а результат надо дать срочно :(
15 мар 06, 11:19    [2449741]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
проблема будет если запрос не использует связанные переменные. Как я понимаю?

Про бинды речь?


Best Regards, Bauer.
15 мар 06, 11:20    [2449754]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
GorbunovSV
Member

Откуда:
Сообщений: 46
SELECT t.sql_text
FROM v$sqltext t, v$session s
WHERE s.sid = <>
AND s.sql_address = t.address
ORDER BY t.piece
Потом написать OUTLINE (каркас)
Best Regards, Bauer.

Не понял- т.е. все запросы активных сессий пишутся в v$sqltext? или как?
Слышал, что можно перехватывать запросы и менять их? может кто расскажет про это поподробнее или ссылки даст где прочитать?
Outline- это для чего?
15 мар 06, 11:25    [2449787]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
Фиксация при помощи каркасных планов выполнения...
Много доки на эту тему...



Best Regards, Bauer.
15 мар 06, 11:27    [2449803]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Bauer
проблема будет если запрос не использует связанные переменные. Как я понимаю?
Про бинды речь?

естесно, будет много похожих запросов идти, и для каждого нужен будет нужен свой шаблон...
15 мар 06, 11:30    [2449836]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
http://ln.com.ua/~openxs/projects/oracle/ora052.html


Best Regards, Bauer.
15 мар 06, 11:34    [2449869]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
естесно, будет много похожих запросов идти, и для каждого нужен будет нужен свой шаблон...

Ни каких проблем при работе с биндами нет, работает нормально...

Best Regards, Bauer.
15 мар 06, 11:39    [2449907]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
К примеру:

/* Создается outline для текущего (неэффективного) плана выполнения */

CREATE or REPLACE OUTLINE OUTLN_1
 on
SELECT ID,TEMPL__OID   FROM Table  WHERE TEMPL__OID IN (SELECT ID   FROM TEMPL  WHERE SCHEME__OID = :b1 ) AND AMND_STATE = :b2  AND ORDER_CATEGORY = :b3;

/* Создается outline для правильного плана выполнения */

CREATE or REPLACE OUTLINE HINTOUTLN
 on
SELECT /*+ INDEX (standing_order order_templ) */
       "ID", templ__oid
    FROM standing_order
    WHERE templ__oid IN (SELECT "ID"
                                 FROM templ
                                 WHERE scheme__oid = :b1)
      AND amnd_state = :b2
      AND order_category = :b3;




Best Regards, Bauer.
15 мар 06, 11:43    [2449943]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Bauer
естесно, будет много похожих запросов идти, и для каждого нужен будет нужен свой шаблон...
Ни каких проблем при работе с биндами нет, работает нормально...

я наоборот про то, если байндов нет... Интресно теперь узнать :)
15 мар 06, 11:48    [2449991]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
А какая вообще разница:
есть бинды или их нет? :)



Best Regards, Bauer.
15 мар 06, 11:50    [2450014]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
А вы вообще о чем?? Автор ведь написал:
GorbunovSV
перехватить этот запрос (а как посмотреть, что это за запрос) и добавить условие

ИМХО в общем случае вариант только один - поторопить разработчиков выпустить патч....
15 мар 06, 11:53    [2450049]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
whoami
Member

Откуда:
Сообщений: 224
GorbunovSV

... и добавить условие, т.к. это не можем обойти стандартной, для данной программы, настройкой доступа пользователям


FGAC
ещё
15 мар 06, 11:54    [2450063]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Pavel Zenkevich
Member

Откуда: Минск
Сообщений: 121
Bauer
Потом написать OUTLINE (каркас)
Вопрос читаем? Автору условие в запрос добавить нужно, а не план стабилизировать.
GorbunovSV
... перехватить этот запрос ... и добавить условие


GorbunovSV
а как посмотреть, что это за запрос
Если не знаете, что за запрос, то как вообще собираетесь условие добавлять?
ИМХО сначала надо хотя бы структуру БД приложения понять. После этого сможете вычислить нужный запрос.

Если нужный запрос в пакете и пакет не завраплен, то все просто - изменяем пакет. Если запрос в exe-шнике - смотри в сторону FGA (fine-grained access) и RLS (row level security) - может получится использовать.

-------------------------------------------------------
Кто людям помогает - тот тратит время зря. (с) Шапокляк
15 мар 06, 11:55    [2450065]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Просто так
Guest
Если это "десятка", то есть специальный системный пакетик DBMS_ADVANCED_REWRITE. Для примера - перехватываем запрос к DEPT и подсовываем EMP:

begin
sys.dbms_advanced_rewrite.declare_rewrite_equivalence
( name             => 'DEMO',
  source_stmt      => 'select * from dept',
  destination_stmt => 'select * from emp',
  validate         => FALSE,
  rewrite_mode     => 'TEXT_MATCH' );
end;
/
15 мар 06, 11:55    [2450068]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Bauer
А какая вообще разница:
есть бинды или их нет? :)

ну типа он перхватывает вроде как код. А если код меняется (нет бинд переменных), то перехватываться не будет... Я не прав?
15 мар 06, 11:56    [2450069]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
но есть проблема- один запросик из формы (может пакета, не знаем)

Изходя из этого текста, я предположил что этот запрос явно автором не запускается из под скажем плюса...
т.е. очевидно что там используется (ются) переменные...
А в том случае если даже и нет переменных, то стало быть там явно вшыты конкретные занчения, типа first_name = 'Рядовой' last_name = 'Пупкин'... :)

И потом, возможно
Pavel Zenkevich
прав, мы что-то уехали не в то русло :)
Странно что автор молчит, стало быть ему это на столько нужно...

Best Regards, Bauer.
15 мар 06, 12:18    [2450227]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6910
Bauer
т.е. очевидно что там используется (ются) переменные...

большая ошибка так полагать. Большинство российский систем НЕ ЮЗАЮТ бинды по крайней мере я больше таких видел...
15 мар 06, 12:23    [2450273]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
Bauer
Member

Откуда: МСК +3
Сообщений: 580
Все могет быть в этом грешном мире...



Best Regards, Bauer.
15 мар 06, 12:25    [2450293]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
GorbunovSV
Member

Откуда:
Сообщений: 46
Автор не молчит, у автора инет упал, звеняйте :(
читал http://ln.com.ua/~openxs/projects/oracle/ora052.html
тогда опишу проблему поподробнее-
есть форма, она выдает результат, исходника у меня нет :(
я не знаю запрос, но делая
select a, b,c from test1 where user=111 результат тотже, что и в форме,
мне нужно переделать:
select a.a,a.b,b.c from test1 a, test2 b
where a.user=111 and exists (select 1 from test3 where user=a.user)
and a.user=b.user
15 мар 06, 13:04    [2450547]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
AndrewS
Member

Откуда: Минск
Сообщений: 487
тогда тебе FGA в помощь
15 мар 06, 13:45    [2450800]     Ответить | Цитировать Сообщить модератору
 Re: Перехват и подмена запроса  [new]
AndrewS
Member

Откуда: Минск
Сообщений: 487
хотя FGA скорее поможет в части exists(...), а не добавления второй таблицы во FROM.
15 мар 06, 13:48    [2450823]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить