Re: Процессы паруса в системе (пара вопросов)
- From
- Denis Zaitsev (2:5033/33.4)
- To
- Slava Alpatov (2:5054/37.63)
- Date
- 2005-03-24T12:36:56Z
- Area
- RU.RDBMS.ORACLE
Приветствую тебя, Slava!
В ответ на твое письмо от 22 Mar 05:
SA> операциях и одна из сессий зависла так, что блокировала весь Oracle.
Это как это? 8) Т.е. вообще ничего не работало, даже sqlplus (imho маловероятно, хотя вполне возможно - например если не использовать переменные привязки в запросах ;) или только одно приложение (это можно понять если все ждали освобождения блокировки на один и тот-же ресурс) ?
Хотя если не хотите отвечать, не надо :)
SA> ходу борьбы возникли вопросы: 1. насколько безопасно глушить kill'ом
SA> пользовательские процессы в системе (типа oraclePR84 (LOCAL=NO))? Это
SA> же пользовательские сессии, если убить ее, то транзакции откатятся и
SA> все нормально? Правильная логика или это ошибка в корне?
Конечно это последний аргумент админа, но если больше делать нечего, приходится. По идее ничего страшного, pmon все должен подчистить за убитым процессом. Как быстро он это сделает, зависит от приоритета процесса pmon. К тому же если пользовательский фоновый процесс успел много натворить, откат может занять некоторое время (на это время занятые ресурсы останутся заблокированными).
Естественно все это имеет смысл только в dedicated режиме :)
SA> 2. можно ли как - то определить на каком конкретно пользователи
SA> висит конкретный процесс в системе? Что бы отстреливать врагов прямо
SA> там... желательно определить сразу в ОС, а не влезая в сам oracle
Сложновато без залезания в оракл, хотя бы потому что вся инфа по соттветствию
пользователь - фоновый процесс оракла лежит в самом оракле.
SELECT s.sid, s.serial#, s.username, s.status, s.schemaname, s.osuser,s.machine, s.program, s.action, s.row_wait_obj#,
s.process AS client_pid, p.spid AS server_pid
FROM v$session s, v$process p
WHERE s.paddr = p.addr AND p.spid = 22453;
^^^^^ pid фонового процесса
Но в принципе если ваши юзвери ходят к ораклу под своими ip, можно кое-что
выяснить и без обращения к нему, например командой netstat:
netstat -anp | grep 22453
^^^^^ pid фонового процесса
tcp 0 0 xx.xxx.xxx.x:1521 yy.yyy.yyy.y:51337 ESTABLISHED 22453/oracleSID
^^^^^ сервер ^^^^^ а это юзверь
Вот. Вроде много не наврал, ну ежели чего гуру поправят ;)
Искренне ваш.
--- GolDEAD+/W32 * Jagular Team *
* Origin: Fast, good, cheap: pick two.. (2:5033/33.4)
SEEN-BY: 452/25 461/33 74 106 640 464/34 465/204 469/125 550/5068 4623/56
SEEN-BY: 4625/9 4626/100 4641/444 4653/10 4657/50 5002/76 5002 5003/34 5004/58
SEEN-BY: 5010/53 5011/13 5015/4 28 5020/20 52 104 115 128 150 175 401 600 642
SEEN-BY: 5020/794 921 968 982 1100 1169 1212 1234 1356 1626 1642 1873 1930
SEEN-BY: 5020/2200 4400 4441 5021/3 44 5023/11 5025/19 151 5026/78 5030/69 195
SEEN-BY: 5030/382 920 1016 5032/11 16 5033/1 4 14 16 21 26 33 35 36 5034/8
SEEN-BY: 5035/10 5036/13 5037/21 5040/33 47 5041/4 5045/7 42 5049/157 5050/9
SEEN-BY: 5050/41 5051/35 5053/16 5054/1 8 9 28 35 37 45 50 5056/16 5058/77
SEEN-BY: 5059/20 5060/90 5063/5 41 51 5064/7 35 36 5070/26 66 5071/22 5079/49
SEEN-BY: 5082/6 5083/13 5090/23 5093/27 5100/113
PATH: 5033/33 1 5020/52 5054/1 37