CftClub.ru
Клуб специалистов ЦФТ-Банк

Трассировка в джобе

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA
Предыдущая тема :: Следующая тема  
Автор Сообщение
lexus
Профи
Межтопэнергобанк (вкл. Алемар)
Совладелец


Вступление в Клуб: 28.09.2007
СообщениеСр Фев 18, 2009 07:00   Трассировка в джобе Ответить с цитатой
Полезность: Нет оценки
Коллеги, подскажите...

Есть операция, в ней:
Код:
-- begin pl/sql
execute immediate 'alter session set query_rewrite_enabled=force';
dbms_mview.refresh('IBS.MV$URSA_FACT_OPER');
-- end pl/sql


Если операцию запускать "руками" из Навигатора - все ок.
Если эта операция дергается из другой (запущенной по расписанию) - не работает.

Попробовал вставить трассировку операции - трейс при запуске джоба не появляется.
Код:
-- begin pl/sql
execute immediate 'alter session set max_dump_file_size =unlimited';
execute immediate 'alter session set events ''10053 trace name context forever, level 1''';
-- end pl/sql

Джоб запускал и под IBS - результат не меняется.

Что не так делаю? Куда смотреть?
lexus
Профи
Межтопэнергобанк (вкл. Алемар)
Совладелец


Вступление в Клуб: 28.09.2007
СообщениеЧт Фев 19, 2009 11:16    Ответить с цитатой
Полезность: Нет оценки
Трейс 10046 (SQL-ный) создается. Но, по нему не понятно - рассматривал ли оптимизатор материализованную вьюшку как вариант.
Комаем дальше... Идей осталось не так уже много Evil or Very Mad
lexus
Профи
Межтопэнергобанк (вкл. Алемар)
Совладелец


Вступление в Клуб: 28.09.2007
СообщениеПт Фев 20, 2009 06:56    Ответить с цитатой
Полезность: Нет оценки
Задача свелась к такой:

Есть select из таблицы. Есть Materialized view, заточенная под этот select.
Если select выполнять явно (SQL+) - цепляется вьюшка и все прекрасно.
Если под тем же пользователем создать джоб с тем же select - вьюшка не цепляется, выборка идет по таблице. Плохо.

Почему такое может быть?

То есть, вопрос перешел уже скорее в плоскость dba...
А админы читают эту ветку? Rolling Eyes
Serj
Профи
ОИКБ Русь


Вступление в Клуб: 02.08.2007
СообщениеПт Фев 20, 2009 12:39    Ответить с цитатой
Полезность: Нет оценки
lexus пишет:
Задача свелась к такой:

Есть select из таблицы. Есть Materialized view, заточенная под этот select.
Если select выполнять явно (SQL+) - цепляется вьюшка и все прекрасно.
Если под тем же пользователем создать джоб с тем же select - вьюшка не цепляется, выборка идет по таблице. Плохо.

Почему такое может быть?

То есть, вопрос перешел уже скорее в плоскость dba...
А админы читают эту ветку? Rolling Eyes
- админы не читают.
Версия платформы сервера и СУБД, статистика ночная / дневная системная собирается, статистика по схеме когда собирается - до запсука job или после? "В слепую" query_rewrite_integrity = trusted - вдруг поможет
lexus
Профи
Межтопэнергобанк (вкл. Алемар)
Совладелец


Вступление в Клуб: 28.09.2007
СообщениеПт Фев 20, 2009 13:35    Ответить с цитатой
Полезность: Нет оценки
Сейчас проверяем на базе, где работы не ведутся. Изменений нет никаких, MV всегда Fresh. Соответственно, и Query_rewrite_ingtegrity не поможет.

Operating System AIX 5.3.0.0 5300-08 (64-bit)
Версия Oracle: 9.2.0.7
Serj
Профи
ОИКБ Русь


Вступление в Клуб: 02.08.2007
СообщениеПт Фев 20, 2009 14:00    Ответить с цитатой
Полезность: Нет оценки
lexus пишет:
Сейчас проверяем на базе, где работы не ведутся. Изменений нет никаких, MV всегда Fresh. Соответственно, и Query_rewrite_ingtegrity не поможет.
Operating System AIX 5.3.0.0 5300-08 (64-bit)
Версия Oracle: 9.2.0.7
- и правда оно обновляется всегда(не сразу заметил), - hint REWRITE тогда в помощь. -
Код:

Rewrite Hints
Hints may be included in SQL statements to control whether query rewrite occurs. Using the NOREWRITE hint in a query prevents the optimizer from rewriting it.

The REWRITE hint with no argument in a query forces the optimizer to use a materialized view (if any) to rewrite it regardless of the cost.

The REWRITE (mv1, mv2, ...) hint with argument(s) forces rewrite to select the most suitable materialized view from the list of names specified.

For example, to prevent a rewrite, you can use:

SELECT /*+ NOREWRITE */ s.city, SUM(s.grocery_sq_ft)
FROM store s
GROUP BY s.city;


To force a rewrite using mv1, you can use:

SELECT /*+ REWRITE (mv1) */ s.city, SUM(s.grocery_sq_ft)
FROM store s
GROUP BY s.city;
yarrr
Участник
УРСА Банк


Вступление в Клуб: 20.02.2009
СообщениеПт Фев 20, 2009 14:25    Ответить с цитатой
Полезность: Нет оценки
rewrite тоже не помогает.

вот тест-кейс

Код:

create table t1 as select * from all_objects;

CREATE UNIQUE INDEX T1_PK ON T1
(OBJECT_ID);

ALTER TABLE T1 ADD (
  CONSTRAINT T1_PK
 PRIMARY KEY
 (OBJECT_ID)
    USING INDEX
);

CREATE MATERIALIZED VIEW LOG ON T1
TABLESPACE USERS
NOCACHE
LOGGING
NOPARALLEL
WITH PRIMARY KEY;

CREATE MATERIALIZED VIEW MV$T1
TABLESPACE USERS
NOCACHE
LOGGING
NOPARALLEL
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
ENABLE QUERY REWRITE
AS
select * from t1 where object_type='TABLE';

ANALYZE TABLE t1 COMPUTE STATISTICS;
ANALYZE TABLE mv$t1 COMPUTE STATISTICS;


запускать надо следующее:
Код:

declare
        cursor CUR is
           select object_id,owner from t1 where object_type='TABLE' and owner='SYS';
        type DCUR is table of CUR%rowtype;
   TMPCUR DCUR;
begin
execute immediate 'alter session set query_rewrite_enabled=true';
execute immediate 'alter session set events ''10046 trace name context forever, level 8''';
            open CUR;
            fetch CUR bulk collect into TMPCUR;
            close CUR;
end;
/


добавление джоба:

Код:
DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
    (
      job        => X
     ,what       => 'declare
        cursor CUR is
           select object_id,owner from t1 where object_type=''TABLE'' and owner=''SYS'';
        type DCUR is table of CUR%rowtype;
    TMPCUR DCUR;
begin
execute immediate ''alter session set query_rewrite_enabled=true'';
execute immediate ''alter session set events ''''10046 trace name context forever, level 8'''''';
            open CUR;
            fetch CUR bulk collect into TMPCUR;
            close CUR;
end;'
     ,next_date  => to_date('02.20.2009 17:08:10','mm/dd/yyyy hh24:mi:ss')
     ,no_parse   => FALSE
    );
:JobNumber := to_char(X);
END;
/
lexus
Профи
Межтопэнергобанк (вкл. Алемар)
Совладелец


Вступление в Клуб: 28.09.2007
СообщениеПн Апр 06, 2009 08:47    Ответить с цитатой
Полезность: Нет оценки
В итоге получилось - наткнулись на баг Oracle. Materialized View не используется в джобе. Наши DBA завели TAR.
Править баг будут уже только в 10g.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Oracle DBA Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru