Upgrade на 10g

Игорь Мельников (Igor.Melnikov) представляется вашему вниманию полноценный семинар по миграции на 10g. Архив включает презентации, методички к лабораторным работам, а также все исходные тексты используемых в лабораторных работах скриптов. Конечно все прогрессивное человечество готовится к миграции на 11g, но если по какой-то причине вы относите себя к любителям старины - этот семинар для Вас :). Шутка конечно. Просто одна известная компания приучила всех пользователей, что раньше 2 Service Pack пользоваться ее продуктами нельзя. Так эта мысль так крепко засела, что многие ждут 11gR2. И очень зря, надо сказать. Хотите знать почему нужно мигрировать сразу на 11g ? Если Вы партнер Oracle не пропустите 11 сентября этого года и семинар по новым опциям, а если заказчик - 5 ноября и Oracle Technology day !

11 комментариев:

  1. да-да, есть любители старины и им в конце года это все предстоит. Так что архив очень в тему. Большое спасибо!

    А вот насчет семинаров и партнеров, то меня очень удручает ситуация, что "Календарь мероприятий для партнеров по технологиям" на партнерском сайте Oracle уже два с половиной месяца как заканчивается 30 мая. Никакой информации на вторую половину года там нет. Только случайно, через блог Форса я узнал, что в октябре приедут в Новосибирск. Но это конечно, не к Вам претензия.

    ОтветитьУдалить
  2. Анонимный11/8/08 8:32 AM

    А вот у нас тестовая процедура на 11g выполняется 3 часа 20 минут против 3 минут на 9i и 10g. Бьемся долго, ничего понять не можем.
    Кстати Бурлесон тоже считает, что надо дождаться 11gR2.

    ОтветитьУдалить
  3. Ну так если есть процедура что мешает стравнить трассивровки, выяснить sql который стали работать хуже и применить sql plan baseline ? Делов на 5 минут. Бурлесон конечно же будет считать что нужно подождать. Он же консультант. Ему гораздо выгоднее взять с людей 2 раза деньги при миграции с 9 на 10, а потом с 10 на 11 :)))))

    ОтветитьУдалить
  4. Ни трассировка, ни PL/SQL Hierarchical Profiler, ни ADDM аномалий не выявили, но тормозит.
    Вот наш максимально-упрощенный тестовый пример и результаты.
    Платформа AIX 5.3

    create table test as select * from dba_objects where not OBJECT_ID is null;
    alter table test add constraint test_pk primary key(OBJECT_ID);

    CREATE OR REPLACE TRIGGER test_bu
    before UPDATE
    ON test
    referencing new AS new old AS old
    FOR EACH ROW
    BEGIN
    NULL;
    END;
    /

    Вариант 1:
    BEGIN
    FOR dd1 IN
    (SELECT *
    FROM test
    WHERE rownum <= 10000)
    LOOP

    UPDATE test
    SET CREATED = dd1.CREATED +1
    WHERE test.OBJECT_ID = dd1.OBJECT_ID;

    END LOOP;

    COMMIT;
    END;
    /

    Вариант 2:
    DECLARE
    TYPE t_test IS TABLE OF test%ROWTYPE;
    l_tab t_test;
    BEGIN

    SELECT *
    BULK COLLECT INTO l_tab
    FROM test
    WHERE rownum <= 10000;

    FORALL i IN l_tab.first .. l_tab.last
    UPDATE test
    SET CREATED = l_tab(i).CREATED +1
    WHERE test.OBJECT_ID = l_tab(i).OBJECT_ID;

    COMMIT;
    END;
    /


    ------------------------------------------------
    Кол-во строк | Вариант1 | Вариант2
    | триггер | триггер
    | да | нет | да | нет
    ------------------------------------------------
    10000 | 2.4 | 00.6 | 00.5 | 00.3
    20000 | 09.8 | 01.1 | 01.0 | 00.6
    40000 | 39.2 | 02.1 | 02.0 | 01.3

    Как видно, в варианте 1 при включенном триггере зависимость времени выполнения от кол-ва обрабатываемых строк нелинейно.

    Согласен, что вариант 1 далеко не оптимален, но:
    1. он упрощен, в реале все сложнее
    2. таких примеров много и переписывать все приложение весьма проблематично.
    3. на том же сервере на Oracle 9.2.0.7 и 10.2.0.3 все работает великолепно.

    ОтветитьУдалить
  5. Без текста триггера сложно понять проблему.
    Если переписывание кода точно не наш метод, я бы попробовал откомпилировать весь pl/sql - native compilation.

    Интересный реультат может дать установка compatible в 10.2, но optimizer_features_enable в 11.1

    Опять таки не понятно - проблема в выполнении pl/sql или в sql, который внутри процедур...

    ОтветитьУдалить
  6. Текст триггера приведен. Там единственна строчка null;. Native пробовал, различные варианты plsql_optimize_level тоже пробовал.
    Проблема в том, что update внутри pl/sql и при наличии триггеров очень долго выполняется. С compatible=10.2 попробую. Но у меня складывается впечатление, что проблема в переключениях контекстов sql и pl/sql.

    ОтветитьУдалить
  7. Что дал Native ?

    В реальной то жизни наверно в триггере на просто NULL стоит.

    При
    plsql_optimize_level=2
    по идее вариант 1 должен превращаться в варинт 2 оптимизатором.

    Наверно имеет смысл пособираться данные с помощью
    http://asktom.oracle.com/tkyte/runstats.html

    Тогда будет видно в чем разница между вариантами

    ОтветитьУдалить
  8. Оказывается это баг №7173924.

    ОтветитьУдалить
  9. Анонимный29/9/08 7:45 PM

    Несомненно стоит перейти на 11R1 и как можно быстрее, чтобы стать "кроликом" для самого Oracle.
    ;)))

    ОтветитьУдалить
  10. Другой вариант - дотянуть на 9i до пенсии :)

    ОтветитьУдалить
  11. Анонимный29/8/09 2:44 AM

    занятно в баге 7173924 оракловский саппортмен в упор не видит деградации. Клиент не отвязался, саппортмен нашел другой баг 6400175 и указал что 7173924 его дублирует. А баг 6400175 не виден, скромно скрыт от нескромных взоров клиентов. :)
    При переходе на 11g есть реальный шанс огрести корзину скрытых багов по полной.
    Дмитрий, заинтересованность в переходе понятна, но надо же совесть иметь. :)

    ОтветитьУдалить