ORA-04062: timestamp из package % изменена
От: C0s Россия  
Дата: 16.02.11 12:40
Оценка:
приветствую, Коллективный разум,

пока на металинке другие ищут релевантное инфо, попробую здесь спросить.

Версия 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, но есть ощущение, что лучше понять причину.
oracle dblink
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.