Не удается зарегистрироваться для уведомления об изменении СУБД, появляется сообщение об ошибке «Должно быть объявлено уведомление об изменении базы данных» - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь зарегистрироваться для уведомления об изменении СУБД, однако я получаю сообщение об ошибке, в котором говорится, что необходимо объявить DBMS_CHANGE_NOTIFICATION.

Ниже приведен мой код SQL:

DECLARE
  regid     NUMBER;
BEGIN
    --Deregister any existing change notification...
    BEGIN
        SELECT regid INTO regid FROM dba_change_notification_regs WHERE LOWER(table_name) LIKE '%aws_app_change_notif';
        IF (regid IS NOT NULL) THEN
            DBMS_OUTPUT.PUT_LINE('Deregistered aws_app_change_notif');
            DBMS_CHANGE_NOTIFICATION.DEREGISTER(regid);
        END IF;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE('No change notification found for table aws_app_change_notif');
    END;

    --Register change notification...
    DECLARE
        regds             SYS.CHNF$_REG_INFO;
        regid             NUMBER;
        dept_id           NUMBER;
        qosflags          NUMBER;
        operations_filter NUMBER;
        max_id            NUMBER;
    BEGIN
        qosflags := DBMS_CHANGE_NOTIFICATION.QOS_RELIABLE + DBMS_CHANGE_NOTIFICATION.QOS_ROWIDS;
        operations_filter := DBMS_CHANGE_NOTIFICATION.INSERTOP;
        regds := SYS.CHNF$_REG_INFO ('aws_app_change_notif_callback', qosflags, 0,operations_filter,0);
        regid := DBMS_CHANGE_NOTIFICATION.NEW_REG_START (regds); 
        SELECT max(id) INTO max_id FROM aws_app_change_notif;
        DBMS_CHANGE_NOTIFICATION.REG_END;
    END;
END;

, и после выполнения я получаюошибка ниже:

DBMS_CHANGE_NOTIFICATION.DEREGISTER (regid);ОШИБКА в строке 9:

ORA-06550: строка 9, столбец 13: PLS-00201: идентификатор 'DBMS_CHANGE_NOTIFICATION' должен быть объявлен

ORA-06550: строка 9, столбец 13: PL /SQL: оператор игнорируется

ORA-06550: строка 25, столбец 21: PLS-00201: должен быть объявлен идентификатор 'DBMS_CHANGE_NOTIFICATION'

ORA-06550: строка 25, столбец 9: PL / SQL: Оператор игнорируется

ORA-06550: строка 26, столбец 30: PLS-00201: должен быть объявлен идентификатор 'DBMS_CHANGE_NOTIFICATION'

ORA-06550: строка 26, столбец 9: PL / SQL:Инструкция игнорируется

ORA-06550: строка 28, столбец 18: PLS-00201: должен быть объявлен идентификатор 'DBMS_CHANGE_NOTIFICATION'

ORA-06550: строка 28, столбец 9: PL / SQL: инструкцияигнорируется

ORA-06550: строка 29, столбец 41: PL / SQL: ORA-00942: таблица или представление не существует

ORA-06550: строка 29, столбец 9: PL / SQL: Оператор SQL игнорируется

ORA-06550: строка 30, столбец 9: PLS-00201: идентификатор 'DBMS_CHANGE_NOTIFICATION' должен быть объявлен

ORA-06550: строка 30, столбец 9: PL / SQL: оператор игнорируется

Я использую Oracle Database 18c Express Edition, выпуск 18.0.0.0.0 - Производство как моя база данных.

Может кто-нибудь посоветовать, что здесь происходит.

1 Ответ

0 голосов
/ 10 апреля 2019

У меня нет прав, которые вызвали проблему.

После предоставления разрешения я могу устранить ошибку.

Хорошее объяснение с примером можно найти здесь

...