Я столкнулся со случаем простоя базы данных ORACLE. Ниже приводится анализ и интерпретация причин простоя базы данных. Кстати, в процессе анализа фиксируйте причины и последствия этого случая, набирайте очки опыта и развивайте способность анализировать и решать проблемы.
Среда кейса:
Операционная система: Oracle Linux Server Release 5.7 64 бит
Версия базы данных: Oracle Database 10g Release 10.2.0.4.0-64bit Production
тематическое исследование:
Когда я получил предупреждение о проверке базы данных, я обнаружил, что экземпляр не работает. Проверьте журнал аварийных сигналов и найдите следующее сообщение об ошибке:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select count(*) from sys.job...","sql area","tmp")
Mon Nov 2 11:43:00 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_cjq0_6571.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select job, nvl2(last_date, ...","sql area","tmp")
Mon Nov 2 11:43:00 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_cjq0_6571.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select count(*) from sys.job...","sql area","tmp")
Mon Nov 2 11:43:05 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_cjq0_6571.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select job, nvl2(last_date, ...","sql area","tmp")
Mon Nov 2 11:43:05 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_cjq0_6571.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select count(*) from sys.job...","sql area","tmp")
Mon Nov 2 11:43:08 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_reco_6569.trc:
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select host,userid,password,...","sql area","tmp")
Mon Nov 2 11:43:08 2015
RECO: terminating instance due to error 4031
Mon Nov 2 11:43:08 2015
Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_pmon_6555.trc:
ORA-04031: unable to allocate bytes of shared memory ("","","","")
Instance terminated by RECO, pid = 6569
Из журнала сигналов тревоги мы видим, что ошибки ORA-00604 и ORA-04031 вызвали эту аварию, вызванную простоем (RECO: завершение экземпляра из-за ошибки 4031):
$ oerr ora 4031
04031, 00000, «unable to allocate %s bytes of shared memory («%s»,»%s»,»%s»,»%s»)»
// *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».
Как правило, ошибка ORA-04031 может быть вызвана двумя причинами:
1: В памяти много фрагментов, что приводит к отсутствию непрерывной памяти для хранения при выделении памяти.Эту проблему обычно нужно начинать с точки зрения разработки, например, увеличение переменных связывания и сокращение трудного анализа, чтобы улучшить и избежать;
2. Емкость памяти недостаточна, и ее необходимо расширить.
Физическая память, выделенная этой машиной, составляет 8 ГБ. В результате проверка обнаружила, что SGA выделило только 1168 МБ, что меньше 2 ГБ, что является мгновенным бункером. Я действительно потерял дар речи в это время. Отчет ASH анализирует размеры буферного кэша и общего пула до и после простоя, как показано ниже.
Проверьте файл отслеживания, вы можете увидеть, что SGA: allocation заставляет компонент расти в ожидании события, можно подтвердить, что SGA не может расти, то есть SGA разрастается, в сочетании с ASH Report, мы видим, что размер общего пула был близок к 69,6% от SGA.
SO: 0xa617d9c0, type: 4, owner: 0xa8a26c68, flag: INIT/-/-/0x00
(session) sid: 932 trans: (nil), creator: 0xa8a26c68, flag: (51) USR/- BSY/-/-/-/-/-
DID: 0001-000A-00000003, short-term DID: 0000-0000-00000000
txn branch: (nil)
oct: 0, prv: 0, sql: (nil), psql: (nil), user: 0/SYS
last wait for 'SGA: allocation forcing component growth' blocking sess=0x(nil) seq=51324 wait_time=10714 seconds since wait started=0
=0, =0, =0
Dumping Session Wait History
for 'SGA: allocation forcing component growth' count=1 wait_time=10714
=0, =0, =0
for 'SGA: allocation forcing component growth' count=1 wait_time=10512
=0, =0, =0
for 'latch: shared pool' count=1 wait_time=892
address=600e7320, number=d6, tries=0
for 'latch: shared pool' count=1 wait_time=28
address=600e7320, number=d6, tries=0
for 'latch: shared pool' count=1 wait_time=51
address=600e7320, number=d6, tries=0
for 'latch: shared pool' count=1 wait_time=114
address=600e7320, number=d6, tries=0
for 'latch: shared pool' count=1 wait_time=120
address=600e7320, number=d6, tries=0
for 'latch: library cache' count=1 wait_time=33
address=a3fa46e8, number=d7, tries=1
В сочетании с некоторыми из приведенных выше анализов можно сделать вывод, что необоснованная установка SGA привела к исчерпанию всей памяти общего пула , и SGA был разорван. Таким образом, настройка параметров SGA — правильная мера решения проблемы. Кроме того, учитывая, что база данных долгое время работала нормально, я также проанализировал отчеты awr и addm и обнаружил, что тщательный анализ системы довольно серьезен. Кроме того, я наблюдал за изменениями общего пула в течение определенного периода времени с помощью следующего сценария и обнаружил, что он сжимается и растет чаще.
SELECT start_time,
component,
oper_type,
oper_mode,
initial_size / 1024 / 1024 "INITIAL",
final_size / 1024 / 1024 "FINAL",
end_time
FROM v$sga_resize_ops
WHERE component IN ( 'DEFAULT buffer cache', 'shared pool' )
AND status = 'COMPLETE'
ORDER BY start_time,
component;
Это можно сделать, установив параметр базы данных SHARED_POOL_SIZE, чтобы размер SHARED_POOL_SIZE не был меньше этого размера из-за ограничений памяти. Кроме того, вы можете установить временной интервал для изменения размера SGA.
ALTER SYSTEM SET “_memory_broker_stat_interval”=n SCOPE=SPFILE;
Хотя проблема решена, на самом деле нужно задуматься о том, почему для этого SGA_MAX_SIZE установлено значение 1168M! И при осмотре его не обнаружили.
Мне нужны советы о том, как диагностировать и исправить эту проблему. Я не знаю, простая ли это проблема с настройкой сервера или проблема дизайна приложения (или и то, и другое).
Один или два раза каждые несколько месяцев эта база данных Oracle XE сообщает об ошибках ORA-4031. Это не указывает последовательно на какую-либо конкретную часть sga. Недавний пример:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
Когда возникает эта ошибка, если пользователь продолжает обновляться, нажимая на разные ссылки, он обычно будет получать больше таких ошибок в разное время, а затем вскоре они получат ошибку страницы «404 not found».
Перезапуск базы данных обычно решает проблему на некоторое время, затем через месяц или около того она возникает снова, но редко в том же месте в программе (то есть кажется, что она не связана с какой-либо конкретной частью кода) (приведенный выше пример ошибка возникла на странице Apex, которая сортирует 5000+ строк из таблицы).
Я пробовал увеличить sga_max_size
со 140 до 256 мегабайт и надеюсь, что это поможет. Конечно, я не знаю, помогло ли это, так как мне пришлось перезапустить базу данных, чтобы изменить настройку
Я запускаю Oracle XE 10.2.0.1.0 на сервере Oracle Enterprise Linux 5 с 512 МБ ОЗУ. На сервере работает только база данных, Oracle Apex (v3.1.2) и веб-сервер Apache. Я установил его почти со всеми параметрами по умолчанию, и он работал достаточно хорошо в течение года или около того. Большинство проблем я смог решить сам, настроив код приложения; она не используется интенсивно и не является критически важной для бизнеса системой.
Вот некоторые текущие настройки, которые, я думаю, могут быть актуальными:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
Если это поможет, вот текущие размеры SGA:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes
6 ответов
Лучший ответ
Даже если вы используете ASMM, вы можете установить минимальный размер для большого пула (MMAN не будет уменьшать его ниже этого значения). Вы также можете попробовать закрепить некоторые объекты и увеличить SGA_TARGET.
7
jwaddell
8 Окт 2013 в 03:21
Это ошибка Oracle, утечка памяти в shared_pool, скорее всего, db управляет большим количеством разделов. Решение: на мой взгляд, патча не существует, обратитесь в службу поддержки оракула. Вы можете попробовать с подпулами или en (de )able AMM …
-1
andjelko miovcic
1 Май 2013 в 00:56
Все текущие ответы касаются симптома (исчерпание пула общей памяти), а не проблемы, которая, вероятно, не использует переменные привязки в ваших запросах sql JDBC, даже если это не кажется необходимым. Передача запросов без переменных связывания заставляет Oracle каждый раз «жестко разбирать» запрос, определяя его план выполнения и т. Д.
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:528893984337
Некоторые фрагменты из приведенной выше ссылки:
«Java поддерживает переменные связывания, ваши разработчики должны начать использовать подготовленные операторы и привязывать к ним входные данные. Если вы хотите, чтобы ваша система в конечном итоге масштабировалась за пределы, скажем, примерно 3 или 4 пользователей — вы сделаете это прямо сейчас (исправьте код). Это не о чем думать, это то, что вы ДОЛЖНЫ сделать. Побочный эффект этого — проблемы с общим пулом в значительной степени исчезнут. Это основная причина ».
«Принцип работы разделяемого пула Oracle (очень важной структуры данных разделяемой памяти) зависит от разработчиков, использующих переменные связывания».
«Связываемые переменные ТАК МАССИВНО важны — я никоим образом не могу сформировать или сформировать ПРЕВЫШЕНИЕ их важности».
2
mancini0
31 Мар 2017 в 22:15
Следующие действия не нужны, поскольку они не исправляют ошибку:
ps -ef|grep oracle
- Найдите smon и убейте pid за него
SQL> startup mount
SQL> create pfile from spfile;
Перезапуск базы данных очистит ваш пул, и это решит эффект, а не проблему.
Исправьте свой large_pool, чтобы он не мог опускаться ниже определенной точки, или добавьте память и установите более высокий максимальный объем памяти.
0
Nicolás Alarcón Rapela
21 Окт 2019 в 13:57
Ошибка
ORA-04031: unable to allocate 4064 bytes of shared memory ("shared pool","select increment$,minvalue,m...","sga heap(3,0)","kglsim heap")
Решение: от непасофт непал
-
1.-
ps -ef|grep oracle
-
2.- Найдите смон и убейте пид за него
-
3.-
SQL> startup mount ORACLE instance started. Total System Global Area 4831838208 bytes Fixed Size 2027320 bytes Variable Size 4764729544 bytes Database Buffers 50331648 bytes Redo Buffers 14749696 bytes Database mounted.
-
4.-
SQL> alter system set shared_pool_size=100M scope=spfile; System altered.
-
5.-
SQL> shutdown immediate ORA-01109: database not open Database dismounted. ORACLE instance shut down.
-
6.-
SQL> startup ORACLE instance started. Total System Global Area 4831838208 bytes Fixed Size 2027320 bytes Variable Size 4764729544 bytes Database Buffers 50331648 bytes Redo Buffers 14749696 bytes Database mounted. Database opened.
-
7.-
SQL> create pfile from spfile; File created.
РЕШИТЬ
-2
Nicolás Alarcón Rapela
21 Окт 2019 в 14:06
Не забывайте о фрагментации. Если у вас большой трафик, ваши пулы могут быть фрагментированы, и даже если у вас есть несколько МБ свободного места, не может быть блока размером более 4 КБ. Проверьте размер самого большого свободного блока с помощью такого запроса:
select
'0 (<140)' BUCKET, KSMCHCLS, KSMCHIDX,
10*trunc(KSMCHSIZ/10) "From",
count(*) "Count" ,
max(KSMCHSIZ) "Biggest",
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ<140
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 10*trunc(KSMCHSIZ/10)
UNION ALL
select
'1 (140-267)' BUCKET,
KSMCHCLS,
KSMCHIDX,
20*trunc(KSMCHSIZ/20) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 140 and 267
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 20*trunc(KSMCHSIZ/20)
UNION ALL
select
'2 (268-523)' BUCKET,
KSMCHCLS,
KSMCHIDX,
50*trunc(KSMCHSIZ/50) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 268 and 523
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 50*trunc(KSMCHSIZ/50)
UNION ALL
select
'3-5 (524-4107)' BUCKET,
KSMCHCLS,
KSMCHIDX,
500*trunc(KSMCHSIZ/500) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 524 and 4107
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 500*trunc(KSMCHSIZ/500)
UNION ALL
select
'6+ (4108+)' BUCKET,
KSMCHCLS,
KSMCHIDX,
1000*trunc(KSMCHSIZ/1000) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ >= 4108
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 1000*trunc(KSMCHSIZ/1000);
Код из
5
slovon
15 Июн 2009 в 22:55
«4030» и «4031» (да, они тоже основаны на «503») присылаются, если сайт заблокирован хостинг-провайдером («4030») или владельцем («4031»). Причин блокировки провайдером может быть несколько, их можно посмотреть в Панели управления. «4032» крайне редкая.
- Ошибка 4030 и 4031 появляются при блокировке сайта хостинг-провайдером или владельцем.
- Причин блокировки провайдером может быть несколько, проверить их можно в Панели управления.
- Ошибка 403 Forbidden означает, что доступ к запрошенному ресурсу запрещен.
- Возможны причины ограничения, такие как попытка доступа к системным ресурсам веб-сервера.
- Ошибка 403 в амино означает ограничение или отсутствие доступа к материалу на странице.
- Если на сайте есть страница, защищенная паролем или только для зарегистрированных пользователей, Google будет получать 403 ответ.
- Для обхода ошибки 403 на телефоне нужно зайти в Настройки и очистить данные и кэш Google Play Маркет и Диспетчера загрузки.
- Ошибка 403 на собственном интернет-ресурсе может быть вызвана неверными правами доступа к файлам, ограничениями или установленными ограничениями со стороны хостинг-провайдера.
- Ошибка 403 означает, что доступ к странице запрещен.
- Как убрать ошибку 403 на сайте
- Что означает доступ запрещен 403
- Что значит 403
- Что означает ошибка 403 в амино
- Что за ошибка 403 в гугле
- Как обойти ошибку 403 на телефоне
- Что за ошибка 403 и как ее исправить
- Что значит доступ запрещен
- Что означает ошибка 400
- В чем разница между 401 и 403
- Что значит ошибка 403 в ютубе
- Что значит 401
- Что делать если амино не загружается
- Почему я не могу зайти в амино
- Как войти в амино
- Что значит у вас нет прав для просмотра этой страницы
- Что такое 403 DDOS
- Что значит 402
- Что означает ошибка номер 503
- Что такое 502
- Что скорее всего нужно сделать разработчику Если в ответ на запрос к HTTP серверу он получил ошибку 403
- Что означает ошибка 401
Как убрать ошибку 403 на сайте
Отключите плагины
В коде может быть баг, который вызовет ошибку. Или несколько плагинов могут конфликтовать между собой. Простой способ проверить, вызывает ли 403 ошибку плагин — временно отключить все плагины на сайте. Это можно сделать в менеджере файлов в панели управления хостингом.
Что означает доступ запрещен 403
HTTP 403 Forbidden — стандартный код ответа HTTP, означающий, что доступ к запрошенному ресурсу запрещен. Сервер понял запрос, но не выполнит его. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам. htaccess или.
Что значит 403
Ошибка 403 (error 403 Forbidden) — это ответ сервера, который отправляется, когда доступ к странице запрещен или ограничен по ряду причин.
Что означает ошибка 403 в амино
Ошибка сервера 403 Forbidden означает ограничение или отсутствие доступа к материалу на странице, которую вы пытаетесь загрузить.
Что за ошибка 403 в гугле
Если на вашем сайте есть страница, защищенная паролем или только для зарегистрированных пользователей, Google будет получать 403 ответ (запрещен) и отнесет его к ошибкам индексирования (Crawl Errors). Нет необходимости переживать по поводу данной ошибки.
Как обойти ошибку 403 на телефоне
Для этого нужно зайти в Настройки Android-устройства, далее в «Приложения» и найти в списке Google Play Маркет. В новом открывшемся окне нужно нажать две кнопки «Стереть данные» и «Очистить кэш». После этого находим в списке «Диспетчер загрузки» и также стираем данные и удаляем кэш.
Что за ошибка 403 и как ее исправить
Ошибка 403 на собственном интернет-ресурсе может свидетельствовать о следующем:
- установлены неверные права доступа к файлам, каталогам сайта на хостинге;
- файлы сайта загружены не в корневую директорию;
- заданы те или иные ограничения в файле.
- установлены ограничения со стороны хостинг-провайдера;
Что значит доступ запрещен
Ошибка 403 (Доступ запрещён)
Обычно это означает, что сама страница, к которой происходит обращение, существует, но на самом деле это может быть и не так. Сообщение о 403-ей ошибке может возвращаться, если владелец сайта по каким-то соображениям решил закрыть от пользователей часть информации.
Что означает ошибка 400
Ошибка 400 (Bad Request)
Ошибка 400 значит, что запрос к серверу содержит синтаксическую ошибку. Но иногда проблема вызвана факторами, которые не имеют прямого отношения к запросу.
В чем разница между 401 и 403
401 нужно возвращать при отсутствующей или просроченной авторизации. Если мы знаем, что доступ к странице для клиента закрыт, не может быть получен, то нужно возвращать http-код 403. Код 403 также следует возвращать, если клиент авторизован, но у него недостаточно прав для просмотра данной страницы.
Что значит ошибка 403 в ютубе
Ошибка 403. В настоящее время ваш браузер не распознает ни один из доступных видеоформатов.
Что значит 401
Если вы получили сообщение об ошибке 401 (Unauthorized), это означает, что вы пытаетесь получить доступ к странице, на которую нужно сначала войти, используя действительный ID пользователя и пароль для просмотра.
Что делать если амино не загружается
Действия:
- Убедитесь, что в магазине приложений нет более новой версии. Новая версия есть?
- Удалите приложение Amino и снова установите его. Обратите внимание, что это повлечет за собой удаление всех черновиков.
- Если проблема связана с вашим интернет-соединением, подождите несколько часов.
Почему я не могу зайти в амино
Попробуйте выполнить следующие шаги:
- Проверьте соединение с Интернетом. Если эта страница загрузилась, это хороший знак!
- Перезагрузите свое устройство.
- Вдохните, выдохните, сходите перекусить — возможно, за время вашего отсутствия проблема решится сама собой.
- Если это не помогло, напишите нам.
Как войти в амино
Чтобы создать аккаунт в Amino, вам нужно зарегистрироваться с помощью адреса своей электронной почты, номера телефона или уже существующего профиля в сторонней социальной сети. Если вы решили воспользоваться электронной почтой, вам потребуется активировать свой аккаунт.
Что значит у вас нет прав для просмотра этой страницы
DefaultNick4915, если сайт не открывается и система выдает ошибку «403 У ВАС НЕТ ПРАВ ДЛЯ ПРОСМОТРА ЭТОЙ СТРАНИЦЫ», ваш IP-адрес был временно заблокирован по причине слишком высокого потока запросов на ~3,5 часов.
Что такое 403 DDOS
Код ошибки 403 — Forbidden в переводе с английского «запрещенный». Ошибка сообщает о том, что доступ к данной странице запрещен или не может быть предоставлен сервером. Пользователь, желающий посмотреть запрещенную страницу никак не сможет ее увидеть.
Что значит 402
HTTP-ответ 402 Payment Required это нестандартная ошибка клиента, зарезервированная для использования в будущем. Иногда этот код означает, что запрос не может быть выполнен до тех пор, пока клиент не совершит оплату.
Что означает ошибка номер 503
HTTP 503 Service Unavailable код состояния сервера, указывающий на то, что сервер не готов обработать данный запрос. Часто причиной этого оказывается закрытие сервера для технических работ или его перегрузка.
Что такое 502
Ошибка 502 (Bad Gateway) — это код статуса HTTP, указывающий, что сервер не получил правильный запрос от другого сервера.
Что скорее всего нужно сделать разработчику Если в ответ на запрос к HTTP серверу он получил ошибку 403
В этом случае надо просто немного подождать — необходимо время на обновление кэша DNS.
Что означает ошибка 401
Ошибка 401 выдается сервером в случае возникновения проблем с аутентификацией или авторизацией на сайте. данные для аутентификации не переданы; указанные имя пользователя и пароль не верны; ошибка в настройках сайта или в коде скрипта сайта, отвечающих за аутентификацию или авторизацию.
Оставить отзыв (1)
мне нужны некоторые указатели на то, как диагностировать и исправить эту проблему. Я не знаю, является ли это простой проблемой установки сервера или проблемой дизайна приложения (или и тем, и другим).
один или два раза в несколько месяцев эта база данных Oracle XE сообщает об ошибках ORA-4031. Это не указывает на какую-либо конкретную часть sga последовательно. Недавний пример:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
когда эта ошибка появляется, если пользователь продолжает обновлять, нажав на разные ссылки, они будут как правило, получить больше таких ошибок в разное время, то скоро они получат «404 не найдены» ошибки страницы.
перезапуск базы данных обычно решает проблему на некоторое время, затем через месяц или около того он появляется снова, но редко в том же месте в программе (т. е. он не кажется связанным с какой-либо конкретной частью кода) (приведенный выше пример ошибки был поднят со страницы Apex, которая сортировала 5000+ строк из таблицы).
Я пробовал увеличивать sga_max_size
от 140M до 256M и надеюсь, что это поможет. Конечно, я не буду знать, помогло ли это, так как мне пришлось перезапустить базу данных, чтобы изменить настройку
Я запускаю Oracle XE 10.2.0.1.0 на коробке Oracle Enterprise Linux 5 с 512 МБ оперативной памяти. Сервер запускает только базу данных Oracle Apex (v3.1.2) и веб-сервер Apache. Я установил его почти со всеми параметрами по умолчанию, и он работает довольно хорошо в течение года или около того. Большинство проблем, которые я смог решить сам, настроив код приложения; он не интенсивно используется и не является критически важной для бизнеса системой.
вот некоторые текущие настройки, которые, я думаю, могут быть актуальными:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
если это какая-либо помощь, вот текущие размеры SGA:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes
6 ответов
даже если вы используете ASMM, вы можете установить минимальный размер для большого пула (MMAN не будет сжимать его ниже этого значения).
Вы также можете попробовать закрепить некоторые объекты и увеличить SGA_TARGET.
Не забывайте о фрагментации.
Если у вас много трафика, ваши пулы могут быть фрагментированы, и даже если у вас есть несколько свободных МБ, не может быть блока больше 4 КБ.
Проверьте размер самого большого свободного блока с запросом типа:
select
'0 (<140)' BUCKET, KSMCHCLS, KSMCHIDX,
10*trunc(KSMCHSIZ/10) "From",
count(*) "Count" ,
max(KSMCHSIZ) "Biggest",
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ<140
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 10*trunc(KSMCHSIZ/10)
UNION ALL
select
'1 (140-267)' BUCKET,
KSMCHCLS,
KSMCHIDX,
20*trunc(KSMCHSIZ/20) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 140 and 267
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 20*trunc(KSMCHSIZ/20)
UNION ALL
select
'2 (268-523)' BUCKET,
KSMCHCLS,
KSMCHIDX,
50*trunc(KSMCHSIZ/50) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 268 and 523
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 50*trunc(KSMCHSIZ/50)
UNION ALL
select
'3-5 (524-4107)' BUCKET,
KSMCHCLS,
KSMCHIDX,
500*trunc(KSMCHSIZ/500) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ between 524 and 4107
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 500*trunc(KSMCHSIZ/500)
UNION ALL
select
'6+ (4108+)' BUCKET,
KSMCHCLS,
KSMCHIDX,
1000*trunc(KSMCHSIZ/1000) ,
count(*) ,
max(KSMCHSIZ) ,
trunc(avg(KSMCHSIZ)) "AvgSize",
trunc(sum(KSMCHSIZ)) "Total"
from
x$ksmsp
where
KSMCHSIZ >= 4108
and
KSMCHCLS='free'
group by
KSMCHCLS, KSMCHIDX, 1000*trunc(KSMCHSIZ/1000);
код
все текущие ответы касаются симптома (исчерпание пула общей памяти), а не проблемы, которая, вероятно, не использует переменные привязки в ваших запросах sql JDBC, даже если это не кажется необходимым. Передача запросов без переменных привязки заставляет Oracle каждый раз» жестко анализировать » запрос, определяя его план выполнения и т. д.
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:528893984337
некоторые фрагменты из приведенной выше ссылки:
«Java поддерживает переменные bind, ваши разработчики должны начать использовать подготовленные операторы и связывать входы в него. Если вы хотите, чтобы ваша система в конечном итоге масштабировалась за пределами 3 или 4 пользователей — вы сделаете это прямо сейчас (исправьте код). Это не то, о чем нужно думать, это то, что вы должны делать. Побочный эффект это-ваши общие проблемы пула в значительной степени исчезнут. Это первопричина. «
«путь Оракула
общий пул (очень важная структура данных общей памяти)
operates основан на разработчиках, использующих переменные bind.»
» переменные привязки настолько массово важны — я никоим образом не могу переоценивать их важность. «
следующие не нужны, поскольку они не исправляют ошибку:
- 1 PS-ef|grep oracle
- найти smon и убить pid для него
- среда SQL> запуск смонтировать в SQL>
- создать pfile из spfile;
перезапуск базы данных очистит ваш пул, и это решит проблему, а не проблему.
зафиксируйте свой large_pool, чтобы он не мог опуститься ниже определенной точки или добавить память и установить более высокий Макс память.
ошибка:
ORA-04031: невозможно выделить 4064 байта общей памяти («общий пул», » выберите increment$, minvalue, m…», «SGA heap (3,0)», «kglsim heap»)
Solution: by nepasoft nepal
1 PS-ef|grep oracle
2 найти smon и убить pid для него
3 SQL> startup mount
запущен экземпляр ORACLE.
общая системная глобальная область 4831838208 байт
Фиксированный размер 2027320 байт
Переменный Размер 4764729544 байты
Буферы базы данных 50331648 байт
Повторить буферы 14749696 байт
База данных подключена.
SQL>
4 SQL> alter system set shared_pool_size=100M scope=spfile;
Создать.
решить
-1
автор: PAWAN RAJ Shakya
Это ошибка Oracle, утечка памяти в shared_pool, скорее всего, db, управляющая множеством разделов.
Решение: на мой взгляд, патч не существует, проверьте с поддержкой oracle. Вы можете попробовать с помощью subpools или en (de)able AMM …
-1
автор: andjelko miovcic
Seven_style 0 / 0 / 0 Регистрация: 04.12.2012 Сообщений: 7 |
||||
1 |
||||
12.09.2013, 16:06. Показов 1662. Ответов 6 Метки нет (Все метки)
День добрый. Может кто сталкивался:
Как решить?
0 |
Модератор 4204 / 3044 / 581 Регистрация: 21.01.2011 Сообщений: 13,177 |
|
12.09.2013, 16:31 |
2 |
Это где такое сообщение выдается? Вообще 4031 говорит о нехватке памяти в shared pool
0 |
Seven_style 0 / 0 / 0 Регистрация: 04.12.2012 Сообщений: 7 |
||||||||
12.09.2013, 17:21 [ТС] |
3 |
|||||||
Это где такое сообщение выдается? Вообще 4031 говорит о нехватке памяти в shared pool Ошибка в трассировачных файлах. Добавлено через 42 минуты
Выдает —-> 99.7602394017375
Выдает: shared_pool_size 167772160
0 |
Модератор 4204 / 3044 / 581 Регистрация: 21.01.2011 Сообщений: 13,177 |
|
13.09.2013, 09:49 |
4 |
Зависит от размеров БД и кол. памяти на сервере, но 160M для shared pool это не густо.
0 |
0 / 0 / 0 Регистрация: 04.12.2012 Сообщений: 7 |
|
13.09.2013, 10:02 [ТС] |
5 |
Зависит от размеров БД и кол. памяти на сервере, но 160M для shared pool это не густо. На сервере 3Gb of Ram. А база: 18Gb.
0 |
Модератор 4204 / 3044 / 581 Регистрация: 21.01.2011 Сообщений: 13,177 |
|
13.09.2013, 11:20 |
6 |
На сервере 3Gb of Ram. А база: 18Gb. Зависит от других областей памяти: db_cash_size, large_pool_size, java_pool_size.
0 |
0 / 0 / 0 Регистрация: 04.12.2012 Сообщений: 7 |
|
13.09.2013, 11:28 [ТС] |
7 |
Зависит от других областей памяти: db_cash_size, large_pool_size, java_pool_size. COMPONENT CURRENT_SIZE MIN_SIZE shared pool 167772160 83886080
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
13.09.2013, 11:28 |
Помогаю со студенческими работами здесь Ошибка ORA-12514 Ошибка ORA-06550 Ошибка ORA — 00904
Опишу суть проблемы. Создаю таблицу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 7 |