пока на металинке другие ищут релевантное инфо, попробую здесь спросить.
Версия 10.2.0.4.0
Eсть схема local1@mydb, соединённая по db-link'у с master1@remotedb.
В local1@mydb есть таблицы, а также есть синонимы на пакеты и типы, развёрнутые в localapi@mydb с AUTHID current_user, а также синонимы на нужные пакеты master1@remotedb.
localapi потребовалась из-за того, что в реальности связок local1 -> remote1 может быть N.
Обычная ситуация: клиентский код подключается к local1, вызывает какой-нибудь метод какого-нибудь пакета, который может сделать несколько операций над таблицами local1, а также вызвать удалённый ф-л схемы remote1.
Что наблюдаем: после определённого периода неактивности на local1 первый подключившийся и дёрнувший пакет напарывается на ORA-04062 по расхождению таймстемпов по удалённым пакетам remote1. При этом на remote1 эти пакеты никто не трогает (select * from dba_objects показывает последний ddl за январь).
До этого не было localapi, а все локальные пакеты дублировались в схеме local1 с прямыми зависимостями от пакетов master1, тогда после периода неактивности мы обнаруживали, что эти пакеты инвалидировались (что приводило иногда с другим ошибкам у первых подключившихся).
На данный момент прямой зависимости от remote1-пакетов нет, они вызываются через execute immediate.
Вопрос: что именно может вызывать расхождение таймстемпов? [Судя по всему, та же самая причина, будь она неладна, приводила раньше к инвалидациям на нашей стороне, когда была прямая зависимость].
ps. пока будем пробовать workaround с REMOTE_DEPENDENCIES_MODE=SIGNATURE, но есть ощущение, что лучше понять причину.