У меня есть логическая резервная база данных 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 пользователей (на основном сервере), ссылающиеся на эту роль, завершатся ошибкой.