|
|
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Наткнулся на странное (для меня) поведение - не могу в документации найти почему работает именно так. Дано: два пакета с глобальными переменными (то бишь не stateless) Первый: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Второй: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вызываем метод второго пакета - получаем Код: plaintext 1. 2. 3. 4. 5. Типа всё окей, работает. Теперь в другой сессии меняю значение переменной в теле первого пакета pk_test - с 1 на 2 и перекомпилирую тело, для текущей сессии состояние пакета сбрасывается Если вызвать напрямую тот пакет, который изменили, то получим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. после чего пакет автоматически пересобирается и повторный вызов проходит успешно. Меняем снова тело первого пакета, перекомпилируем body. Теперь если вызывать его через второй пакет, то постоянно получаем: Код: plaintext 1. 2. 3. и пересборки первого пакета не происходит вообще, сколько бы раз мы не вызывали второй пакет, вызывающий первый. Однако если во втором пакете в секцию обработки исключения добавить RAISE - то мы опять получим ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package body "ANVANO.PK_TEST" has been invalidated и всё пересоберётся. Если добавить не просто RAISE, а какое-то конкретное исключение типа RAISE no_data_found - то пересборка опять не происходит. На чем основано такое поведение Oracle? Почему в одном случае первый пакет пересобирается после первого обращения к нему, а в другом случае не пересобирается никогда? -------------------------------------------------------------- Запомните, товарищи офицеры, чтобы ничего не делать, надо уметь делать все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 12:41 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Думаю, для ответа стоит прикинуть, зачем вообще нужна ORA-4068, почему бы просто не перекомпилить тихой сапой и не работать дальше. Ответ на этот вопрос: потому что теряется состояние пакета, и если приложение об этом не узнает, оно, продолжая работу, может натворить дел. Теперь следующий вопрос: почему последующие обращения проходят успешно. Ответ: потому, что требовать глобального переподключения - слишком жестоко, неудобно для клиентов. С другой стороны после 4068 как минимум откатилась транзакция, есть надежда, что клиент обработал эту ошибку, и как следствие, начавшаяся следующая транзакция с большой вероятностью пройдёт правильно. А отсюда получается ответ на Ваш вопрос: именно потому, что клиент должен узнать (и узнаёт) об этой ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:08 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Ну тогда может кто-то посоветует, что делать если в некотором триггере на таблице вставлен анонимный PL/SQL блок для вызова некритичной для бизнес процесса функции стороннего пакета: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Исключение специально гасится, т.к. выполнение метода pk_test.some_test не должно влиять на вставку / апдейты строк таблицы в рамках основного бизнес процесса. Оно желательно, но не обязательно. Так вот после перекомпиляции тела пакета PK_TEST в лог начинает сыпаться вышеописанная ошибка ORA-06508: PL/SQL: could not find program unit being called Естественно метод прекращает отрабатывать и если не переконнектить сессию БД, в которой работает триггер - то вызова пакета PK_TEST больше никогда не происходит вообще никогда. Какие тут могут быть варианты, кроме передёргивания сессии ? Или вообще без вариантов, тронул пакет и всё, хана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:13 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
anvanoи пересборки первого пакета не происходит вообщеПрежде всего не путай инвалидацию программной единицы (dependenies) и инвалидацию состояния пакета (ORA-04061). Первая всегда пытается автоматически "исправиться" рекомпиляцией. Состояние же пакета может быть сброшено только после возврата управления от сервера к клиенту (после завершения server call), но не раньше: явно на уровне пакета (SERIALLY_REUSABLE Pragma) явно на уровне сессии (dbms_session.reset_package/modify_package_state) неявно на уровне сессии, если server call завершился с ORA-04068. Если ORA-04068 не возвращается клиенту, то обращение к пакету будут всё равно обламываться по ORA-06508. Но состояния других пакетов останутся несброшенными и ими можно (нужно ли?), при необходимости воспользоваться. Состояние пакетов сбрасывается, даже если искуственно породить прохождение -4068 от сервера к клиенту: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:16 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
anvano, Курим доку, например Oracle 9i Program With PL-SQL, последняя глава, разделы "Unsuccessful Recompilation" и "Successful Recompilation". А кто будет перекомпилировать второй пакет, Пушкин? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:30 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, особенно Elic. Стало понятнее про сброс состояния пакета и в какую сторону копать доки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2011, 13:34 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
а может кто-то чуть подробней расшифровать вот эту часть феномена: Меняем снова тело первого пакета, перекомпилируем body. Теперь если вызывать его через второй пакет, то постоянно получаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2011, 07:19 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2011, 09:12 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Elicanvanoи пересборки первого пакета не происходит вообщеПрежде всего не путай инвалидацию программной единицы (dependenies) и инвалидацию состояния пакета (ORA-04061). Первая всегда пытается автоматически "исправиться" рекомпиляцией. Состояние же пакета может быть сброшено только после возврата управления от сервера к клиенту (после завершения server call), но не раньше: явно на уровне пакета (SERIALLY_REUSABLE Pragma) явно на уровне сессии (dbms_session.reset_package/modify_package_state) неявно на уровне сессии, если server call завершился с ORA-04068. Если ORA-04068 не возвращается клиенту, то обращение к пакету будут всё равно обламываться по ORA-06508. Но состояния других пакетов останутся несброшенными и ими можно (нужно ли?), при необходимости воспользоваться. Состояние пакетов сбрасывается, даже если искуственно породить прохождение -4068 от сервера к клиенту: Код: plsql 1. Здравствуйте! Подскажите, пожалуйста, а где в документации описан третий вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2012, 16:51 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Elicanvanoи пересборки первого пакета не происходит вообщеПрежде всего не путай инвалидацию программной единицы (dependenies) и инвалидацию состояния пакета (ORA-04061). Первая всегда пытается автоматически "исправиться" рекомпиляцией. Состояние же пакета может быть сброшено только после возврата управления от сервера к клиенту (после завершения server call), но не раньше: явно на уровне пакета (SERIALLY_REUSABLE Pragma) явно на уровне сессии (dbms_session.reset_package/modify_package_state) неявно на уровне сессии, если server call завершился с ORA-04068. Если ORA-04068 не возвращается клиенту, то обращение к пакету будут всё равно обламываться по ORA-06508. Но состояния других пакетов останутся несброшенными и ими можно (нужно ли?), при необходимости воспользоваться. Состояние пакетов сбрасывается, даже если искуственно породить прохождение -4068 от сервера к клиенту: Код: plsql 1. Апну. А на уровне системы что можно что-то сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 15:54 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Melkomyagkii_newbiчто можно что-тоЧто-то чтобы что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 16:07 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
-2-Melkomyagkii_newbiчто можно что-тоЧто-то чтобы что? Торопился. У нас похожая проблема. Есть два пакета с глобальными переменными. Сейчас веб приложение ловит на них ORA-04068: existing state of packages has been discarded После ребута коннекшн пула первый раз процедура из одного и пакетов отрабатывает, потом перестает работать. Код поправить возможности нет( С ТОАДа причем процедуры обоих пакетов без проблем дергаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 16:41 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Melkomyagkii_newbi-2-пропущено... Что-то чтобы что? Торопился. У нас похожая проблема. Есть два пакета с глобальными переменными. Сейчас веб приложение ловит на них ORA-04068: existing state of packages has been discarded После ребута коннекшн пула первый раз процедура из одного и пакетов отрабатывает, потом перестает работать. Код поправить возможности нет( С ТОАДа причем процедуры обоих пакетов без проблем дергаются. Из тоада воспроизводится.. Зависит от порядка вызова пакетов. Если начать с одного, то сколько не вызывай получаю ошибку, если вызвать второй, то после этого и первый нормально вызывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 16:51 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
-2-Melkomyagkii_newbiчто можно что-тоЧто-то чтобы что? Собственно чтобы сброить стэйт пакета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 16:52 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Melkomyagkii_newbiконнекшн пулаStateful Connection Pool?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 16:55 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
ElicMelkomyagkii_newbiконнекшн пулаStateful Connection Pool?! Да вот фиг пойми. Когда они убили пул, я в базе убедился, что сессии отвалились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 17:02 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Melkomyagkii_newbiElicпропущено... Stateful Connection Pool?! Да вот фиг пойми. Когда они убили пул, я в базе убедился, что сессии отвалились Хм, понял что не в тему ответил, не понял вас если честно.. у меня ведь воспроизводится проблема.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 17:04 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Melkomyagkii_newbiне понял вас если честно..нужно ли сохранять значения глобальных переменных между вызовами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 18:08 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
-2-Melkomyagkii_newbiне понял вас если честно..нужно ли сохранять значения глобальных переменных между вызовами. А ну, да, должно быть не нужно, пул же. Понял теперь. Но так сложилось "исторически" - отжали проект у одной индийской компании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 18:11 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
У нас всё в итоге решилось прокидыванием эксепшена ORA-04068 наружу "до клиента". До этого как оказалось, он в некоторых местах гасился в обработчиках WHEN OTHERS, что приводило к такой вот хрени как перманентный ORA-06508. Теперь всё работает как часы. А еще в большей части пакетов вообще удалось отказаться от глобальных переменных. В итоге теперь накатывание такого тела пакета вообще не приводит ни к каким последствиям типа ORA-04068. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2015, 23:26 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите, если вынести в глобальные переменные пакета константы: Код: plsql 1. 2. 3. Указанные выше проблемы возникнут, или при описании CONSTANT, изменение стояния пакета не приведет к отваливанию сеcсии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:26 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Код: Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 10:28 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
GogolУказанные выше проблемы возникнутКакие? http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 13:03 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Gogol, Почему нет? Думаю, константа или не константа - не повлияет на механизм , управляющий состоянием пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 14:39 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Gogol, а не могли бы вы обьяснить зачем вам константы в пакете? почему надо именно F_NEW CONSTANT VARCHAR2(20) = 'F_NEW'; и потом использовать переменную F_NEW вместо того чтобы просто не написать 'F_NEW'? хоть раз за все время проекта такая константа менялась и вам действительно приходилось менять ее значение после выкатки в продакшн? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:14 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
fortnetДумаю, константа или не константа - не повлияет на механизм , управляющий состоянием пакета.Думать - это хорошо, однако и это тоже нужно уметь делать правильно. RTFM Package Treated as Stateless if State is Constant for Life of Session (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:35 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Vintпочему надо именно F_NEW CONSTANT VARCHAR2(20) = 'F_NEW'; и потом использовать переменную F_NEW вместо того чтобы просто не написать 'F_NEW'? хоть раз за все время проекта такая константа менялась и вам действительно приходилось менять ее значение после выкатки в продакшн?Ошибки в написании одной и той же именованной константы в разных местах использования отлавливаются на ранних стадиях компилятором. Говнокод же с ошибками в литералах может жить вечно, не догадываясь о своей говнокодистости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:40 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Elic, я задал вполне конкретные вопросы автору опуса, зачем ты можешь использовать константы я и сам могу придумать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 15:54 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
ElicfortnetДумаю, константа или не константа - не повлияет на механизм , управляющий состоянием пакета.Думать - это хорошо, однако и это тоже нужно уметь делать правильно. RTFM Package Treated as Stateless if State is Constant for Life of Session (FAQ) Реально даже в 11.2.0.2 varchar2 константы делают пакет stateful. А вот number, да разрешили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 16:40 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Elic, Написал пакет, некоторые значения, которые часто используются и возвращаются функцией (отличаются от базы к базе) вынес в глобальные переменные. Есть проблема что пакет очень часто меняет состояние. Есть подозрение что проблема из-за глобальных переменных. Поэтому хочу узнать, поможет ли замена констант на функции. И вообще как при изменении пакета, сделать так, что бы пользователю не валилась ошибка о недоступности функции пакета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 17:42 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Vint, Пакет используется на разных рабочих базах, и на каждой функция возвращает свое значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 17:43 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Gogol Написал пакет, некоторые значения, которые часто используются и возвращаются функцией (отличаются от базы к базе) вынес в глобальные переменные. Есть проблема что пакет очень часто меняет состояние. Есть подозрение что проблема из-за глобальных переменных. Вообщем то, можно решить двумя путями - 1. Не рекомпилировать package body + не инвалидировать если пакет stateful. 2. Сделать пакет stateless, почитав для этого https://docs.oracle.com/cd/E11882_01/appdev.112/e25519/packages.htm#LNPLS804 , чтобы понять какие компоненты пакета и при каких условиях (напр. "Therefore, a package that is stateless when compiled at one optimization level might be stateful when compiled at a different optimization level") делают его stateful. GogolПоэтому хочу узнать, поможет ли замена констант на функции. Нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 18:24 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Gogolчасто меняет состояниеНе надо перевирать своими словами. Излагай факты. GogolЕсть подозрение что проблема из-за глобальных переменных.Это не причина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 18:25 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
GogolИ вообще как при изменении пакета, сделать так, что бы пользователю не валилась ошибка о недоступности функции пакета. ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 18:30 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Вот тут еще про то что официальная документация несколько недоговаривает: http://www.sql.ru/forum/1179250/ora-4068-with-compile-time-constant Оказывается и в 12.1.0.2 не исправили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 07:31 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Ask, На мой взгляд, для 12c есть объяснение http://docs.oracle.com/database/122/LNPLS/plsql-packages.htm#GUID-001EF960-7491-411B-A5F3-D1260A45794B SERIALLY_REUSABLE Packages SERIALLY_REUSABLE packages let you design applications that manage memory better for scalability. If a package is not SERIALLY_REUSABLE, its package state is stored in the user global area (UGA) for each user. Therefore, the amount of UGA memory needed increases linearly with the number of users, limiting scalability. The package state can persist for the life of a session, locking UGA memory until the session ends. In some applications, such as Oracle Office, a typical session lasts several days. If a package is SERIALLY_REUSABLE, its package state is stored in a work area in a small pool in the system global area (SGA). The package state persists only for the life of a server call. After the server call, the work area returns to the pool. If a subsequent server call references the package, then Oracle Database reuses an instantiation from the pool. Reusing an instantiation re-initializes it; therefore, changes made to the package state in previous server calls are invisible. (For information about initialization, see "Package Instantiation and Initialization".) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 10:20 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
dba123На мой взгляд, для 12c есть объяснениеНет, ты просто чего-то не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 10:32 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
GogolElic, Написал пакет, некоторые значения, которые часто используются и возвращаются функцией (отличаются от базы к базе) вынес в глобальные переменные. Есть проблема что пакет очень часто меняет состояние. Есть подозрение что проблема из-за глобальных переменных. Поэтому хочу узнать, поможет ли замена констант на функции. И вообще как при изменении пакета, сделать так, что бы пользователю не валилась ошибка о недоступности функции пакета. Move all constants and variables into a stand-alone package spec and reference those from your initial package. Thus when the status of your original package is invlidated for whatever reason, it has no package state and can be recompiled automatically, however the package containing the vars/const will not become invalidated as it has no dependencies, so the state that is in memory for that package will remain and can continue to be used. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 12:00 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
dba123Ask, На мой взгляд, для 12c есть объяснение [/src] Ну это не объяснение, а еще один вариант как сделать пакет с константами stateless. К сожалению у SERIALLY_REUSABLE есть свои минусы - такие пакеты нельзя дергать из триггеров и sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 12:39 |
|
||
|
Автоматическая перекомпиляция при обращении к пакету. Ткните носом в доку.
|
|||
|---|---|---|---|
|
#18+
Большое спасибо! Константы вынес в отдельный пакет. Пользователь ошибку ORA-04068: existing state of packages has been discarded ловить перестал. Константы добавляются очень редко, а обновления рабочего пакета происходит постоянно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 09:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886332]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 426ms |

| 0 / 0 |
