Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
Возникают вот такие ошибки, при большом количестве динамического SQL. Связанные переменные используются, но довольно часто создаются partition и subpartition. Может ли это быть причиной таких ошибок?
6 ноя 07, 11:46    [4878711]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Oracle
ORA-08103: object no longer exists
Cause: The object has been deleted by another user since the operation began, or a
prior incomplete recovery restored the database to a point in time during the
deletion of the object.
Action: Delete the object if this is the result of an incomplete recovery.
То есть другая сессия "грохнула" объект, с которым вы начали работать
(Например, удалена таблица, по которой идет селект)

Oracle
ORA-04031: unable to allocate string bytes of shared memory
("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the dbms_shared_pool
package to pin large packages, reduce your use of shared memory, or increase the
amount of available shared memory by increasing the value of the INIT.ORA
parameters "shared_pool_reserved_size" and "shared_pool_size". If the large pool
is out of memory, increase the INIT.ORA parameter "large_pool_size".
Скорее всего "динамический SQL" способствовал исчерпанию SHARED POOL.
Попробуйте увеличить.
6 ноя 07, 11:56    [4878774]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
SQL*Plus
Oracle
ORA-08103: object no longer exists
Cause: The object has been deleted by another user since the operation began, or a
prior incomplete recovery restored the database to a point in time during the
deletion of the object.
Action: Delete the object if this is the result of an incomplete recovery.
То есть другая сессия "грохнула" объект, с которым вы начали работать
(Например, удалена таблица, по которой идет селект)

Oracle
ORA-04031: unable to allocate string bytes of shared memory
("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the dbms_shared_pool
package to pin large packages, reduce your use of shared memory, or increase the
amount of available shared memory by increasing the value of the INIT.ORA
parameters "shared_pool_reserved_size" and "shared_pool_size". If the large pool
is out of memory, increase the INIT.ORA parameter "large_pool_size".
Скорее всего "динамический SQL" способствовал исчерпанию SHARED POOL.
Попробуйте увеличить.

1) Другая сессия объект никак не могла грохнуть, потому что в процедуре используется lock и с этими объектами одновременно может работать только одна сессия. Да и вообще это был тест, и был запуск одной сессии.
2) Shared pool 125 MB, и используется только 10-15 MB. Так что эта причина тоже отпадает.
6 ноя 07, 12:02    [4878824]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Посмотрите что пишут по вашим проблемам на metalink.oracle.com
6 ноя 07, 12:22    [4879015]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Nuri
Member

Откуда: Архангельск
Сообщений: 625
А полный текст ORA-04031 нельзя привести?
6 ноя 07, 12:26    [4879053]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
Nuri
А полный текст ORA-04031 нельзя привести?

Вот полный текст:
ORA-04031: unable to allocate 4120 bytes of shared memory ("shared pool","select name,password,datats#...","Typecheck","kgghteInit")
6 ноя 07, 13:05    [4879352]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
SQL*Plus
Посмотрите что пишут по вашим проблемам на metalink.oracle.com

К сожалению к metalink у меня нет доступа.
6 ноя 07, 13:06    [4879359]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Nuri
Member

Откуда: Архангельск
Сообщений: 625
Ну сделайте shared pool больше, хотябы 256 мег, ради проверки :)
6 ноя 07, 14:12    [4879858]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Sarkand
Возникают вот такие ошибки, при большом количестве динамического SQL. Связанные переменные используются, но довольно часто создаются partition и subpartition. Может ли это быть причиной таких ошибок?

Какая версия оракла?
Фрагментацию проверяли?
6 ноя 07, 14:37    [4880041]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Nuri
Ну сделайте shared pool больше, хотябы 256 мег, ради проверки :)

А как temporary tablespace закончится то конечно надо увеличивать. и т.д. и т.п.
6 ноя 07, 14:39    [4880054]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
evgenyg
Какая версия оракла?
Фрагментацию проверяли?

Версия: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Фрагментация конечно есть, но вот как с ней бороться пока не понятно. Отказаться от динамического SQL, не реально. Есть идея закрепить запросы в shared pool, пока правда не очень понятно как.
6 ноя 07, 15:02    [4880256]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Sarkand
evgenyg
Какая версия оракла?
Фрагментацию проверяли?

Версия: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Фрагментация конечно есть, но вот как с ней бороться пока не понятно. Отказаться от динамического SQL, не реально. Есть идея закрепить запросы в shared pool, пока правда не очень понятно как.

Есть несколько вариантов
1) Поставить cursor sharing (в 9-ой версии очень плохо работало )
2)
Посмотреть как распределена память в shared.
select round(SHARABLE_MEM/10000)*10000 "Mem_Range_n_bytes",

count(*) "Obj",sum(SHARABLE_MEM)/1024/1024 "Mem"
from v$db_object_cache
group by round(SHARABLE_MEM/10000)
order by 1 ;
И select REQUEST_FAILURES,LAST_FAILURE_SIZE from v$shared_pool_reserved
Когда посмотрите на результаты запросов то и нам покажите, интересно.
6 ноя 07, 15:08    [4880294]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
evgenyg

Есть несколько вариантов
1) Поставить cursor sharing (в 9-ой версии очень плохо работало )
2)
Посмотреть как распределена память в shared.
select round(SHARABLE_MEM/10000)*10000 "Mem_Range_n_bytes",

count(*) "Obj",sum(SHARABLE_MEM)/1024/1024 "Mem"
from v$db_object_cache
group by round(SHARABLE_MEM/10000)
order by 1 ;
И select REQUEST_FAILURES,LAST_FAILURE_SIZE from v$shared_pool_reserved
Когда посмотрите на результаты запросов то и нам покажите, интересно.

1) Cursor sharing поставить не реально, потому что помимо нашего проекта на этой базе крутятся ещё с десяток других положений и как себя они поведут при изменении Cursor sharing одному богу известно :)
2) Сейчас повторить эту ситуацию не возможно. Вот что прислал мне наш админ, если это кому - нибудь интересно:
SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 0-1K 23205 free 3792528

1 sga heap(1,0) free memory 1-2K 2539 free 2097224

1 sga heap(1,0) free memory 2-3K 670 free 1353744

1 sga heap(1,0) free memory 3-4K 358 free 1087000

1 sga heap(1,0) free memory 4-5K 207 free 841872

1 sga heap(1,0) free memory 5-6k 64 free 320360

1 sga heap(1,0) free memory 6-7k 107 free 627560

1 sga heap(1,0) free memory 7-8k 81 free 561768

1 sga heap(1,0) free memory 8-9k 78 free 623592

1 sga heap(1,0) free memory 9-10k 100 free 892664

1 sga heap(1,0) free memory > 10K 2074 free 93248272



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 1-2K 1 R-free 848

1 sga heap(1,0) free memory > 10K 95 R-free 20147088



13 rows selected.



SQL> /



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 0-1K 21850 free 3433632

1 sga heap(1,0) free memory 1-2K 785 free 467736

1 sga heap(1,0) free memory 2-3K 710 free 1518000

1 sga heap(1,0) free memory 3-4K 631 free 1889248

1 sga heap(1,0) free memory 4-5K 643 free 2628768

1 sga heap(1,0) free memory 5-6k 347 free 1727408

1 sga heap(1,0) free memory 6-7k 304 free 1800568

1 sga heap(1,0) free memory 7-8k 254 free 1773584

1 sga heap(1,0) free memory 8-9k 210 free 1688088

1 sga heap(1,0) free memory 9-10k 200 free 1793544

1 sga heap(1,0) free memory > 10K 2673 free 100404240



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 1-2K 1 R-free 848

1 sga heap(1,0) free memory > 10K 95 R-free 20147088



13 rows selected.



SQL> set tim on

07:50:38 SQL> /



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 0-1K 22023 free 3527744

1 sga heap(1,0) free memory 1-2K 1877 free 1508520

1 sga heap(1,0) free memory 2-3K 913 free 1924176

1 sga heap(1,0) free memory 3-4K 628 free 2020256

1 sga heap(1,0) free memory 4-5K 913 free 3651568

1 sga heap(1,0) free memory 5-6k 337 free 1679728

1 sga heap(1,0) free memory 6-7k 295 free 1748768

1 sga heap(1,0) free memory 7-8k 242 free 1692984

1 sga heap(1,0) free memory 8-9k 260 free 2113192

1 sga heap(1,0) free memory 9-10k 206 free 1842024

1 sga heap(1,0) free memory > 10K 2606 free 98638168



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

---------- --------------- ---------------- ---------- ---------- -------- ----------

1 sga heap(1,0) free memory 1-2K 1 R-free 848

1 sga heap(1,0) free memory > 10K 95 R-free 20147088



13 rows selected.



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

-------------------- --------------- ---------------- ---------- -------------------- -------- --------------------

1 sga heap(1,0) free memory 0-1K 18602 free 2893224

1 sga heap(1,0) free memory 1-2K 7713 free 6342928

1 sga heap(1,0) free memory 2-3K 1959 free 3812896

1 sga heap(1,0) free memory 3-4K 845 free 2579168

1 sga heap(1,0) free memory 4-5K 758 free 3047120

1 sga heap(1,0) free memory 5-6k 297 free 1480688

1 sga heap(1,0) free memory 6-7k 259 free 1536128

1 sga heap(1,0) free memory 7-8k 210 free 1468096

1 sga heap(1,0) free memory 8-9k 213 free 1716200

1 sga heap(1,0) free memory 9-10k 173 free 1553008

1 sga heap(1,0) free memory > 10K 2463 free 96472784



SubPool SGA_HEAP CHUNKCOMMENT size COUNT(*) STATUS BYTES

-------------------- --------------- ---------------- ---------- -------------------- -------- --------------------

1 sga heap(1,0) free memory 1-2K 1 R-free 848

1 sga heap(1,0) free memory > 10K 95 R-free 20147088
6 ноя 07, 15:26    [4880422]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
Nuri
Member

Откуда: Архангельск
Сообщений: 625
evgenyg
Nuri
Ну сделайте shared pool больше, хотябы 256 мег, ради проверки :)

А как temporary tablespace закончится то конечно надо увеличивать. и т.д. и т.п.

С теперешними объемами оперативной памяти и ее стоимостью почему бы нет (то же самое касается объемов жестких дисков)? У меня, например, temp размером 12 гигов и меня это совершенно не напрягает. А shared pool 600 мегабайт. И я считаю, это правильно :)
6 ноя 07, 15:34    [4880480]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Если я правильно понял у вас очень много < 1Кб объектов?
Какое значение у параметров:
session_cached_cursors
Впрочем у вас же 10Г, как у вас управляется память? автоматически?
В случае 9-ки (и полагаю 10-ки без автоматического управления памятью). Фрагментацию памяти можно попробовать победить рассмотрев :
_shared_pool_reserved_min_alloc и shared_pool_reserved_size
Обьекты > 4К направляются в shared_pool_reserved.
6 ноя 07, 15:44    [4880550]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Nuri
evgenyg
Nuri
Ну сделайте shared pool больше, хотябы 256 мег, ради проверки :)

А как temporary tablespace закончится то конечно надо увеличивать. и т.д. и т.п.

С теперешними объемами оперативной памяти и ее стоимостью почему бы нет (то же самое касается объемов жестких дисков)? У меня, например, temp размером 12 гигов и меня это совершенно не напрягает. А shared pool 600 мегабайт. И я считаю, это правильно :)


А сколько весит 1Гб в системе?


По поводу цен:
Вы что на PC работаете?
6 ноя 07, 15:48    [4880571]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
evgenyg
Если я правильно понял у вас очень много < 1Кб объектов?
Какое значение у параметров:
session_cached_cursors
Впрочем у вас же 10Г, как у вас управляется память? автоматически?
В случае 9-ки (и полагаю 10-ки без автоматического управления памятью). Фрагментацию памяти можно попробовать победить рассмотрев :
_shared_pool_reserved_min_alloc и shared_pool_reserved_size
Обьекты > 4К направляются в shared_pool_reserved.


Объектов меньше 1КБ действительно очень много, session_cached_cursors=20. Возможно с помощью _shared_pool_reserved_min_alloc и shared_pool_reserved_size можно победить фрагментацию. Но проблема в том, что я не админ, а developer и никто ради меня не будет изменять настройки базы. Приложение должно работать без всяких хитрых настроек в базе данных, нарыл DBMS_SHARED_POOL.KEEP буду пытаться с ней мутить.
6 ноя 07, 16:07    [4880731]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
Nuri
Member

Откуда: Архангельск
Сообщений: 625
evgenyg

А сколько весит 1Гб в системе?


По поводу цен:
Вы что на PC работаете?

Первый вопрос не понятен.

По поводу второго - да, я работаю на PC.

ps давайте не будем ветку засорять, все равно это ни к чему не приведет. Я посоветовал увеличить и проверить. Не хотите идти по пути экспериментов, продолжайте теоретические изыскания, у каждого свой путь.
6 ноя 07, 16:10    [4880760]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Nuri
evgenyg

А сколько весит 1Гб в системе?


По поводу цен:
Вы что на PC работаете?

Первый вопрос не понятен.

По поводу второго - да, я работаю на PC.

ps давайте не будем ветку засорять, все равно это ни к чему не приведет. Я посоветовал увеличить и проверить. Не хотите идти по пути экспериментов, продолжайте теоретические изыскания, у каждого свой путь.

Никакой теории, реально работающая методология, разобраться с параметрами и их влиянием на аппликацию. Просто увеличивать, ДБА быть не надо.
По поводу моего первого вопроса: Дело в том что добавление к базе одного Гб обычно ведет к увеличению размеров: резервной копии, все возможных репликаций и т.д. Например у меня на одной работе добавление 1Гб приводило к добавлению 13Гб в систему. И это только в online ее часть, не говоря о backup.
По поводу попробовать, если я правильно помню там надо перезагружать базу при изменении параметров. Я production которую можно "пробовать" еще не видел. Но возможно у нас разный опыт работы.
6 ноя 07, 16:20    [4880837]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
Все началось, теперь будете свои отношения выяснять, в моей ветке :))
6 ноя 07, 16:28    [4880896]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Sarkand
evgenyg
Если я правильно понял у вас очень много < 1Кб объектов?
Какое значение у параметров:
session_cached_cursors
Впрочем у вас же 10Г, как у вас управляется память? автоматически?
В случае 9-ки (и полагаю 10-ки без автоматического управления памятью). Фрагментацию памяти можно попробовать победить рассмотрев :
_shared_pool_reserved_min_alloc и shared_pool_reserved_size
Обьекты > 4К направляются в shared_pool_reserved.


Объектов меньше 1КБ действительно очень много, session_cached_cursors=20. Возможно с помощью _shared_pool_reserved_min_alloc и shared_pool_reserved_size можно победить фрагментацию. Но проблема в том, что я не админ, а developer и никто ради меня не будет изменять настройки базы. Приложение должно работать без всяких хитрых настроек в базе данных, нарыл DBMS_SHARED_POOL.KEEP буду пытаться с ней мутить.

Я бы посоветовал переговорить с ДБА, данная проблема полностью на совести ДБА и им должна быть решена. Указанные мной "настройки" не являются "хитрыми", нормальная работа с ораклом.
DBMS_SHARED_POOL.KEEP я бы не рекомендовал использовать так как это не решение проблемы а в лучшем случае отодвигание следующего кризиса на какое-то время.
Вы как developer должны поймать вашего ДБА (или его начальника) и заставить нормально выполнить работу.
Удачи
6 ноя 07, 16:29    [4880907]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Ну и как программист вы обязаны использовать bind variables и тут уж ваш ДБА должен вас заставлять.
Вместе, ДБА используя свои знания, вы свои, вы конечно подберетесь к работающей системе.
И будет вам счастье
6 ноя 07, 16:32    [4880924]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of shared  [new]
Sarkand
Member

Откуда:
Сообщений: 167
evgenyg
Ну и как программист вы обязаны использовать bind variables и тут уж ваш ДБА должен вас заставлять.
Вместе, ДБА используя свои знания, вы свои, вы конечно подберетесь к работающей системе.
И будет вам счастье

bind variables я использую. В маленькой конторе возможно и можно изменить настройки базы данных, но когда 100 человек и перед выходом на production приложение проходит через несколько уровней разработки и тестирования(как следствие в районе десяти баз данных), то честно говоря я не представляю, как это возможно, с каждым админом договариваться и менять настройки базы данных, только из - за одного моего пакета. Нонсенс. К тому же эти админы ещё и в разных городах :)
6 ноя 07, 16:41    [4880988]     Ответить | Цитировать Сообщить модератору
 Re: ORA-08103: object no longer exists and ORA-04031: unable to allocate 4120 bytes of sha  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Sarkand
evgenyg
Ну и как программист вы обязаны использовать bind variables и тут уж ваш ДБА должен вас заставлять.
Вместе, ДБА используя свои знания, вы свои, вы конечно подберетесь к работающей системе.
И будет вам счастье

bind variables я использую. В маленькой конторе возможно и можно изменить настройки базы данных, но когда 100 человек и перед выходом на production приложение проходит через несколько уровней разработки и тестирования(как следствие в районе десяти баз данных), то честно говоря я не представляю, как это возможно, с каждым админом договариваться и менять настройки базы данных, только из - за одного моего пакета. Нонсенс. К тому же эти админы ещё и в разных городах :)

Проблема не в вашем пакете а в том что память требует де-фрагментации.
Мало того эта проблема относится только к вашей базе (на самом деле Instance но не важно) , и в "настоящих" базах скорей всего не проявиться.
А вот keep это глобальное решение которое должны принимать ДБА администрирующие Productions DB.
И уж никак не программист.
ИМХО.
6 ноя 07, 16:59    [4881106]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить