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

Откуда:
Сообщений: 63
add_segment_space Задание выполнено с ошибкой: ORA-12008: ошибка в пути обновления материализованного представления ORA-04045: ошибки во время перекомпиляции/перепроверки DMS_LOAD.VW_ACCOUNT_ADDRESSES ORA-00600: код внутренней ошибки, аргументы: [kgl-hash-collision], [], [], [DMS_LOAD], [.], [DMS_LOAD], [], [], [], [], [], []

PROCEDURE add_segment_space IS
    vCoun_p      INT;
    vOld_count_p INT;
    vNew_count_p INT;
    vOld_p       VARCHAR2(14);
    vNew_p       VARCHAR2(14);
    vdate_new_p  VARCHAR2(10);
    sErr         VARCHAR2(512);
    squery       VARCHAR2(4000);
    vdt_start    DATE;

    CURSOR cMain IS
     SELECT COUNT(1) AS coun_p,
            SUM(CASE WHEN upper(p.partition_name) =
                          'P_LOG_'||to_char(add_months(SYSDATE,-13), 'YYYY_MM') THEN 1
                     ELSE 0
                END) old_count_p,
            SUM(CASE WHEN upper(p.partition_name) =
                          'P_LOG_'||to_char(add_months(SYSDATE, 1), 'YYYY_MM') THEN 1
                     ELSE 0
                END) new_count_p,
            'P_LOG_'||to_char(add_months(SYSDATE,-13), 'YYYY_MM') AS old_p,
            'P_LOG_'||to_char(add_months(SYSDATE, 1), 'YYYY_MM') AS new_p,
            to_char(add_months(trunc(SYSDATE, 'MM'), 2), 'DD.MM.YYYY') AS date_new_p
      FROM user_tab_partitions p
       WHERE upper(p.table_name) = 'AD_LOG';

    BEGIN
      INSERT INTO temp_user_segments (segment_name, partition_name, segment_type,
      tablespace_name, bytes, blocks, extents, initial_extent, next_extent, min_extents,
      max_extents, pct_increase, freelists, freelist_groups, buffer_pool, procedure_text,
      dtmodify)
      (SELECT segment_name, partition_name, segment_type, tablespace_name, bytes, blocks,
              extents, initial_extent, next_extent, min_extents, max_extents, pct_increase,
              freelists, freelist_groups, buffer_pool,
   'BEFORE LOAD_DAY ', SYSDATE
        FROM user_segments);

      COMMIT;

      IF trunc(SYSDATE) = trunc(SYSDATE, 'MM') THEN
        BEGIN
          vdt_start := SYSDATE;
          OPEN  cMain;
            FETCH cMain INTO vCoun_p,  vOld_count_p,  vNew_count_p,  vOld_p,  vNew_p, vdate_new_p;
          CLOSE cMain;

          IF vOld_count_p = 1 THEN
            squery := 'ALTER TABLE AD_LOG DROP PARTITION '||
                    vOld_p ||' UPDATE GLOBAL INDEXES';
            EXECUTE IMMEDIATE squery;
          END IF;

          IF vNew_count_p = 0 THEN
            squery := 'ALTER  TABLE AD_LOG ADD PARTITION p_LOG_'||
                    vNew_p ||' VALUES LESS THAN(to_date('|| vdate_new_p ||'))';
            EXECUTE IMMEDIATE squery;
          END IF;

        EXCEPTION WHEN OTHERS THEN
             BEGIN
               sErr :=   SQLERRM;
               INSERT INTO log_work_job (id, dt_start, ajob, acomment, dt_end)
                VALUES (gen_id.nextval, vdt_start, lpad(squery,4000), sErr, SYSDATE);
               COMMIT;
             END;
        END;
      END IF;
    END;

Oracle 11.2.0.2.0
22 июл 11, 12:40    [11011924]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении джоба  [new]
joe_satirus
Member

Откуда:
Сообщений: 63
Если кому нужно решение, вот оно:

Oracle Database 11g Release 11.2.0.2.0
ORACLE DATABASE Patch for Bug# 9564886 for Linux-x86-64 Platforms
25 июл 11, 18:24    [11024777]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить