Назад | Перейти на главную страницу

Логический резервный сервер Oracle не работает с ORA-01919

У меня есть логическая резервная база данных Oracle, управляемая через Data Guard. Буквально сегодня утром процесс повторного применения начал давать сбой с ошибкой ORA-01919, что указывало на то, что одна из ролей нашего приложения не существовала. Однако я могу видеть роль как в первичной, так и в резервной базах данных. У нас также есть физический резерв, который уже давно применяет повторное выполнение там, где это происходит логически, без проблем.

Я открыл SR с Oracle. Мне было интересно, видел ли кто-нибудь это раньше.

Думаю, стоит упомянуть: Oracle 10.2.0.4, Win2003 Server SP2.

ОБНОВЛЕНИЕ: пока служба поддержки Oracle не дала ответа. Я подумал, что выложу здесь то, что узнал до сих пор.

Похоже, что предоставление роли администратора баз данных на основном хосте работает нормально для пользователей, которым назначена роль. Он не работает в логическом режиме ожидания. IOW:

create role TEST;
grant dba to TEST;
grant TEST to auser;
connect auser
set role TEST;
grant <existing role> to <existing user>;

Это работает на первичном экземпляре, но не работает на логическом. Обходной путь, по-видимому, заключается в предоставлении каждой роли на первичном сервере роли TEST с опцией администратора в логическом:

grant <existing role> to TEST with admin option; <== do this on the logical standby

Затем команда работает в логическом режиме ожидания.

это зависит. В логическом резервном сервере любые действия, выполняемые SYS на основном сервере, НЕ будут реплицированы в логический резервный. Таким образом, если вы создали эту роль при входе в систему как SYS (на первичном сервере), эта роль не будет существовать в логическом резервном сервере, следовательно, последующие команды не-SYS пользователей (на основном сервере), ссылающиеся на эту роль, завершатся ошибкой.