powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пакет инвалидируется сразу после компиляции
6 сообщений из 6, страница 1 из 1
Пакет инвалидируется сразу после компиляции
    #39301569
Есть пакет на БД А.

Там есть пакет, который использует БД Б. В пакете в основном открываются курсовы.

Код: plsql
1.
select * from dba_dependencies



№OWNERNAMETYPEREFERENCED_OWNERREFERENCED_NAMEREFERENCED_TYPEREFERENCED_LINK_NAMEDEPENDENCY_TYPE1LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1STATUS_DESCTABLELNK_01HARD2LOAD_USRLOAD_PACKAGEPACKAGEUSR1STATUS_DESCTABLELNK_01HARD3LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1APPLICATION_CLIENT_INFOTABLELNK_01HARD4LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1REGISTER_CLIENTSTABLELNK_01HARD5LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1TASKTABLELNK_01HARD6LOAD_USRLOAD_PACKAGEPACKAGEUSR1TASKTABLELNK_01HARD7LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1TASK_PARAMS_TYPESTABLELNK_01HARD8LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1PARAMETERSTABLELNK_01HARD9LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1PARAMETERS_DESCTABLELNK_01HARD10LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1PHASE_DESCTABLELNK_01HARD11LOAD_USRLOAD_PACKAGEPACKAGEUSR1PHASE_DESCTABLELNK_01HARD12LOAD_USRLOAD_PACKAGEPACKAGE BODYUSR1PRIORITY_DESCTABLELNK_01HARD13LOAD_USRLOAD_PACKAGEPACKAGEUSR1PRIORITY_DESCTABLELNK_01HARD


Ставил аудит на базе БД Б на ддл. там пусто, т.е. никаких изменений на таблицах никто не делает.

Собственно вопрос как поймать причину инвалидации пакета?

База А
Код: plsql
1.
2.
3.
4.
5.
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production



ОС Solaris 11 SPARC

База Б
Код: plsql
1.
2.
3.
4.
5.
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production



ОС Solaris SPARC
...
Рейтинг: 0 / 0
Пакет инвалидируется сразу после компиляции
    #39301576
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в параметре REMOTE_DEPENDENCIES_MODE?
Что по-поводу DBA_OBJECTS.LAST_DDL_TIME на зависимых таблицах?
Как сделан линк?
Используются ли EDITIONS?
Лагутин АлександрСтавил аудит на базе БД Б на ддл.
Как именно?

Лагутин АлександрБаза А
Код: plsql
1.
TNS for Linux: Version 11.2.0.4.0 - Production



ОС Solaris 11 SPARC

База Б
Код: plsql
1.
TNS for Linux: Version 11.2.0.3.0 - Production



ОС Solaris SPARC
...
Рейтинг: 0 / 0
Пакет инвалидируется сразу после компиляции
    #39301613
Вячеслав ЛюбомудровЧто в параметре REMOTE_DEPENDENCIES_MODE?
Что по-поводу DBA_OBJECTS.LAST_DDL_TIME на зависимых таблицах?
Как сделан линк?
Используются ли EDITIONS?
Лагутин АлександрСтавил аудит на базе БД Б на ддл.
Как именно?

AUDIT TABLE,ALTER TABLE BY ACCESS;

Вячеслав ЛюбомудровЛагутин АлександрБаза А
Код: plsql
1.
TNS for Linux: Version 11.2.0.4.0 - Production



ОС Solaris 11 SPARC

База Б
Код: plsql
1.
TNS for Linux: Version 11.2.0.3.0 - Production



ОС Solaris SPARC


ну а почему нет?



Вячеслав Любомудров,

Выяснил еще кое что.

В базе А есть еще пользователь(LOAD_USR_2) у которого почти такой же по содержанию пакет и одинаковый по имени, и от этого пользователя каждые 3 секунды он выполняется.

Видно из v$db_cache_objects.

Смысл в том что если компилить пакет LOAD_USR.LOAD_PACKAGE то инвалидится LOAD_USR_2.LOAD_PACKAGE, потом соответсвенно идет вызов LOAD_USR_2.LOAD_PACKAGE, он автоматом компилиться инвалидируя LOAD_USR.LOAD_PACKAGE.

Как можно добраться до места откуда идет вызов? v$db_cache_objects c v$sql по hash_value не вяжется, c v$latch, v$latch_children тоже.

Какие операции над таблицей в данном случае могут инвалидировать зависимости?


Вячеслав ЛюбомудровЧто в параметре REMOTE_DEPENDENCIES_MODE?
TIMESTAMP

Вячеслав ЛюбомудровЧто по-поводу DBA_OBJECTS.LAST_DDL_TIME на зависимых таблицах?
Очень давно

Вячеслав ЛюбомудровКак сделан линк?

CREATE DATABASE LINK LNK_01
CONNECT TO USR1 IDENTIFIED BY /*Зашифрованный пароль*/
USING 'XXXX/XXX';



Вячеслав ЛюбомудровИспользуются ли EDITIONS?
Нет
...
Рейтинг: 0 / 0
Пакет инвалидируется сразу после компиляции
    #39301617
Лагутин АлександрВ базе А есть еще пользователь(LOAD_USR_2) у которого почти такой же по содержанию пакет и одинаковый по имени, и от этого от какого то пользователя каждые 3 секунды он выполняется.
...
Рейтинг: 0 / 0
Пакет инвалидируется сразу после компиляции
    #39301721
а если создать вью с дблинком и в процедуре пользоваться этой вьюхой?
...
Рейтинг: 0 / 0
Пакет инвалидируется сразу после компиляции
    #39305567
В общем все очень интересно.

Открыли SR и получили совет пройти по Bug 4991675 : EVENT TO TRACE INVALIDATION OF OBJECTS IN THE DATA DICTIONARY

По описанию патч просто позволяет трассировать изменения в словарь при инвалидации.
Сделал все как надо, пошел проверять... в алерте абсолютно ничего интересного. Просто пишет мол спид такой то вызвал инвалидацию, в трейсе соответсвенно команда альтер.

заодно обнаружил что есть джоб который выполняется каждые 5 сек и фэйлится. у хозяина этого джоба(LOAD_USR_3) пакет LOAD_PACKAGE инвалидный(нет необходимых дб линков).
Отключил джоб. Скомпилил пакет у пользователя LOAD_USR, все скомпилилилось и проблема ушла.

Вывод: не понятно что решило проблему, то ли патч, то ли джоб. потому что удалив патч воспроизвести проблему не получается. Все отрабатывает как положено.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пакет инвалидируется сразу после компиляции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]