Oskar Graliński Oracle DBA
Temat: Problemik
Nic się w tym wątku nie dzieje więc coś trzeba było w końcu napisać :)Temat ogólny, poddany pod dyskusje, proszę o luźne refleksje.
Apex 4.1
ApexListener 1.0
Database 11.2.0.1 64bit Windows 2003 EE
Osobiście nie znam apexa w ogóle i można nawet by rzec, że się nim nie zajmuje no ale jest problem i trzeba go rozwiązać :)
Ogólnie, aplikacja apexa często "zamula"
Co widać na bazie...
waity: library cache lock- > library cache pin -> cursor: pin S wait on X ( nie wiem czy nie chodzi tutaj o "wait na child cursor")
Instrukcja: "begin wwv_flow_log.g_content_length := sys.htp.getcontentlength; end;"
lub instrukcja" "begin f(p=>:1); commit; end;"
select sql_id, count(*)
from v$sql_shared_cursor
group by sql_id
having count(*) > 50
order by 2 desc;
-- większość poleceń zwracanych przez to zapytanie to APEX np:
UPDATE WWV_FLOW_DATA SET ITEM_VALUE = TO_CHAR(:B5 ,:B4 ) WHERE FLOW_INSTANCE = :B3 AND ITEM_ID = NVL(:B2 ,:B1 )
SELECT ID,ON_NEW_INSTANCE_FIRED_FOR,SESSION_LANG,SESSION_TERRITORY FROM WWV_FLOW_SESSIONS$ WHERE ID = :B1
INSERT INTO WWV_FLOW_SESSIONS$ ( ID, ON_NEW_INSTANCE_FIRED_FOR, COOKIE, REMOTE_ADDR ) VALUES ( :B3 , NULL, NVL(:B2 ,'nobody'), :B1 )
Ponadto występują też waity na "virtual circuit wait". Czy to pojawia wtedy kiedy jest wystartowania za mała ilość shared servers i nie ma co obsłużyć żądania? czasami zwiesza się na tym "zdarzeniu oczekiwani" sesja i potrafi wisieć całe dnie :D jedynie orakill pomaga.
Analizując dane z v$shared_server_monitor i v$sga_resize_ops(częste operacje GROW/SHRINK na large pool) wnioskuje, że parametr shared_servers jest ustawiony za mały. Na początku dnia kiedy wszyscy się logują mogą przez to wystąpić problemy ... startowanie nowych procesów shared server i blokady na pamięci aby zwiększyć large pool ( Czy z tego powodu mogę otrzymywać cursor: pin S wait on X :/ ?) Czy ktoś praktykuje dynamiczne zmienianie tego parametru np. o godzinie 5.00 ustawiamy wartość 3*X, a o 18.00 na wartość X?
Jak wspominałem do apexa mam bardzo daleko ale zastanawiam się czy dane z v$reqdist powinny zwracać takie wyniki?
BUCKET COUNT
0, 812716
1, 0
2, 17183
3, 13905
4, 1748
5, 2838
6, 1012
7, 371
8, 694
9, 1070
10, 481
11, 70
Jak to jest z tymi aplikacjami "webowymi", czy powinny mieć takie długie żądania? Szczególnie przy konfiguracji SHARED SEVERS? Jak "Im" to ograniczyć bez wykorzystania Database Resource Manager?
Reasumując
Zeminie wartość parametru shared servers i zobaczę co się będzie działo..
Pozdrawiam
OskarOskar Graliński edytował(a) ten post dnia 11.03.11 o godzinie 14:45