ян. 232007
 

За първи път съм притеснен от факта, че не успаявам да поканя всичките си най-близки другарчета на рожданния си ден. Просто няма толкова място. Нямам такъв терен. Имам място за 10-12 човека. С малко мъка ще се съберем 14. Но това не са всички.

Как се получи така? Преди 8 години, когато за първи път бяхме на това място за рожденният ми ден, бяхме точно трима.

3

А сега… Не че се оплаквам. Не ме разбирайте погрешно. Напротив, щастлив съм, че имам толкова много другарчета. И толкова много хора ще се вдигнат от майната си и ще дойдат до Милевци само заради мен. Толкова много хубави, „качествени“ хора.

Само ми е малко тъпо, че не мога да поканя всички. Някой ще останат непочерпени.

Това са превратностите на живота. Трябва да се разширява терена. Напролет започвам 😉

 Posted by at 17:54
ян. 222007
 

Основното действие, което се случва в една БД, дори и при OLTP системи, е извличането на данни. Четенето е десетки пъти по-често от промяната.

И така, какво става при извличане на данни от БД?

Инициатор на четенето е процеса (thread, под Windows), който пуска заявката. Четенето се извършва от същият този процес.

Първото нещо е да се провери дали този блок е кеширан в паметта. Така би се избегнало „скъпото“ и бавно четене от дисковата подсистема. Обикновено в една добре оразмерена система над 80-90% от четенията се задоволяват от кеша.

Но за целта не е добре да се прочита цялата памет за всяко едно блокче. Когато процеса определи адреса (DBA, Database Block Address) на блока, който трябва да се прочете, този процес се хешира през специална хеш функция, която връща адрес на набор от блокове (bucket), намиращи се в свързан списък в паметта (cache buffer chain). Процеса изчита този списък за да извлече желаният блок. За да се изчете този списък се изисква неговият latch в share mode, но това си е тама на друга лекция

Ако търсеният блок бъде намерен в този списък, при прочитането му се увеличава неговия touch count индикатор (не винаги). Увеличаването на този touch count не е защитено от latch, т.е. може да се “загубят” някои повишения, но това не е голям проблем (не си заслужава да се прави latch специално за това). Touch count показателя се използва за да се поддържат в паметта най-използваните блокове. Поддържането на този индикатор също е тема за друга лекция.

Ако не бъде намерен блокът се задейства друг механизъм:
– взема се свободен LRU буфер чрез LRU latch (ако няма – следва чакане)
– този LRU буфер се закача към намереният cache buffer chain
– блока се извлича от диска в буфера и буфера става I/O буфер. В този момент всякак друга сесия, която иска да го прочете, трябва да се изчака (busy buffer wait)
Ако няма място (достигнато е максималното количество заета памет за кеш), се „изхвърлят“ по-малко използвани блокове, за да се направи място за новите. Тук трябва да се отбележи, че за да бъде изхвърлен един блок от кеша, той не трябва да бъде “dirty”, т.е. ако е променян, трябва промените да са записани на диска. Това се прави от фоновия процес DBWR. Докато се случи това изчистване на буфери, потребителската сесия чака.

В края на тази фаза блока със сигурност е в паметта и е идентифициран.

В този момент се проверява SCN номера в хедъра на блока. SCN е съкращение от system commit number или system change number. В началото на изпълнението на каквато и да е заявка се запомня SCN, при който започва тя. Ако SCN на прочетения блок е по-нов, това означава, че блока е бил променен от друг потребител след като е започнало изпълнението на заявката (но преди да бъде прочетен). В такъв случай се взима адреса на транзакцията, променила блока (той се намира в ITL секцията в хедъра на блока), намира се нейният undo сегмент и от него се извлича т.нар. before image на блока – състоянието му от преди да го промени. Отново се проверява SCN на реконструираният блок. Ако пак е по-нов от SCN на заявката, се нямира още по-стара версия и т.н., докато не се намери блока във вида, в който е бил в началото на изпълнението на заявката. Ако няма повече дани в undo/rollback сегмента, а блока не е възстановен до желният SCN, се получава печално известната грешка ORA-1555 Snapsjot too old
По този начин всяка заявка получава данните във вид, консистентен към началото на изпълнението си, като това се получава без никакви заключвания за четене.
Ето един пример от документацията на Oracle Database:
***
Заявката започва да се изпълнява. Запомян се текущият SCN (в случая, 10023). Блоковете се четат в реда, в който са необходими за заявката. Ако някой блок е по-нов от SCN 10023, възстановява се неговото състояние от undo/rollback сегментите.

 Posted by at 9:37

Developer training

 Без категория  1 Response »
ян. 222007
 

При създаване на database приложения може да се подходи по 2 начина към БД:

– подхода на черната кутия: Разработчиците приемат БД за една черна кутия с изключително прости правила: JABORAC. Подават си заявки и получават резултат. Този подходи има редица недостатъци, които могат да се обобщят като 1) изключително нерационално използване на ресурсите, което се отразява негативно върху производителността на полученото приложение; 2) неизползване на пълния потенциал на БД, което води до намалена функционалност или увеличено време за разработка

– database-wise подход: Разработчиците се запознават с БД на едно задоволително ниво. Основен недостатък на този подход е, че трябва някой да запознае разработчиците с БД 😉

По тази причина аз се опитах да повдигна малко булото на черната кутия пред очите на нашите девелъпъри на срещата в петък.
Yavor's lecture
Говорих за четенето на данни, оптимизатора на заявките, execution plans, consistent reads, etc. Останах приятно изненадан от отзвука – по-силен от предварителните ми очаквания. Сега се надявам евентуално понякога да се замислят.

А на следващата среща на софтуерната къща може би ще има поговоря за транзакции и заключвания. Да поддържам интригата 🙂

 Posted by at 9:31
ян. 182007
 

Напоследък из нета се търкалят доста коментари относно кампанията „да запазим българската култура“ – „пиратството ограбва“. И на мен ми е странно как пиратите могат да оберат скулптор, но няма да повтарям написаното в други блогове.

Също така ми е странно как могат да оберат и актьор. Най-близкото до пиратстване нa театрална постановка е… какво? Да я снимаш и да я разпространяваш? Ха! Глупости.

Не съм забелязал толкова да е закъсала българската култура. Вчера ходих да си купя билети за „Ножица трепач“ в Театъра на българската армия. Постановката е след 2 седмици. Единствените билети, които бяха останали непродадени бяха в ъгъла на 5 ред от балкона (по 12 лева) и на абсолютно-съвсем-най-последния ред на балкона (по 10 лв). За представлението тази събота, естествено, нямаше места. А за другия месец – няма още програма.

Е как е закъсала българската култура, след като салоните са пълни поне 2 седмици предварително, въпреки, че цената на билетите е поне 2 пъти по-висока от билет за кино?

Следващият човек, който се опита да ме убеди, че няма пари за култура в България, да се готви за спор!

Всъщност може би малко ме е яд че не можах да се уредя с по-хубави места и се заяждам. Но фактите са си факти

 Posted by at 15:01

Работен уикенд

 Без категория  Коментарите са изключени за Работен уикенд
ян. 132007
 

Има нещо странно в „уикенд-ните смени”.

Първо, свършва се много повече работа, от колкото може да се свърши в работен ден. Говоря за онзи тип работа, която всъщност не може да бъде свършена в работен ден. Но това е ясно.

Странното е магията на… хммм… тийм билдинга.

Ето, събрали сме се тук аз, нашият сисадмин, сисадмина на фирмата, в която сме и един магьосник от сервиза. И правим нещо. Бачкаме в извънработно време.

И ни е кеф.

А защо сме тук, всъщност?

Аз съм тук, защото страшно ме сърбят ръцете да се занимая с някакво истинско предизвикателство. Е, или поне някакво. Не ми е работа да съм тук. Нито пък някой ще ми плати, или ще ми каже „браво”.

Местният сисадмин – е, то си му е работа.

Нашия сисадмин – спорно е. От една страна – помага. Но имам чувството, че и той е тук по причина, аналогична на моята.

А пича от сервиза… ми звъннахме му и той подскочи от кеф. И дойде.

Всички тук се радваме на магията. „Да си начешем крастата”.

Може би трябва да кажа какъв е плана. Идеята е от един сървър с 2 диска в mirror да направим нешо доста по-добро с 4 диска в RAID 1+0 и един пети диск, на който да се пишат backps/archivelogs. Това, естествено, ще наложи пълна преинсталция на ОС и Oracle – старите дискове стават част от новия масив. Ще използваме случая и за миграция от 9.2 на 10.2, с всички произтичащи от това забавления.

По план започнахме вчера. Само с един час закъснение, да приключат работа. Спрях достъпа на потребителите до Oracle, засилих всички транзакции към master site и спрях БД. Копирахме базата на друга машина, и, за по-сигурно, и на един USB диск. Извадихме един от настоящите огледални дискове и го скрихме за застраховка – масива 1+0 ще го правим с другия и трите нови.

Голямото закучване запончна днес. Сървъра просто отказва да поеме повече от 2 диска. Загубихме над 5 часа с това. Накрая дойде магьосника от сервиза оправи нещата за 5 минути. Сега, в 16 часа започваме инсталация на ОС. По план аз трябваше да започна с моята работа в 12 🙂

Не се съмнявам, че ще се справим. Ако няма повече проблеми – до 3 часа ще сме готови. Хаха.

Не се съмнявам, че никой няма да разбере за борбата.

Не сме тук за лаври.

Аз поне.

Аз съм тук да си начеша крастата. И се получава.

А с колегите, след всеки такъв случай, ставаме все по-… Хм. Абе нещо като «бойни другари». Чувството е прекрасно. Който знае, ще ме разбере 🙂

Допълнение:
20:00 Най-после имаме напълно работеща и ъпдейтната ОС. Започва моята част.
После върви разправяй, че нищо не значело това, че е 13-ти 😉

 Posted by at 16:58
ян. 092007
 

Много важно за един Oracle експерт (както и за всички IT, а и всякакви други експерти и консултанти) е да поддържа острието на знанията си. Нещо средно между cutting-edge – да си запознат с новите технологии; и sharp blade – да поддържаш форма.

Има дни (уви, и седмици), в които не ми попадат реални проблеми за решаване. Ето сега, след празниците, почти никой не се обажда. Никъде не се случват драми, никой не иска консултации и т.н.

За такива моменти страшно помага Oracle-L. Това е най-популярния mail list с Oracle (предимно Oracle Database) насоченост. Основан в началото на 1998 от Jared Still, това е нескончаем ресурс от проблемчета и решения.

От една страна винаги можеш да си намериш там драма, с която да се бориш. Просто хора от цял сват пишат проблемите си.

От друга страна там доста често се заформят интересни дискусии относно Oracle или близко до Oracle теми. Просто това е едно място, на което съвсем открито контактуват Oracle експерти от цял свят.

При това доста често се включват хора като Jonathan Lewis, Steve Adams, Tim Gorman, Mogens Nørrgaard, Ric Van Dyke, Jared Still, Robert Freeman…

Даа… Цяло щастие е, че съществува това средище на Oracle експерти. Наистина, четейки пощата от там имам чувство, че съм на един голям нескончаем публичен семинар с всеобщо участие.

Интересното е, че там няма много RTFM въпроси. Няма и спам. За това, до някъде, помага това, че за да постнеш съобщение, трябва да си одобрен от модератора (самият Steve Adams). Одобрението изисква просто един мейл, но си е нещо. Да не забравяме и Mladen Gogala, винаги готов да сиктирдоса някой, който се изказва неподготвен. Като резултат на ден се получават 40-70 мейла, съвсем поносимо количество, с изключително голям процент на полезност. И почти всяка седмица се заформя интересен дебат.

Да не забравяме и основната цела на включването към този mail list: възможност да се потърси помощ от хиляди хора, настъпвали какви ли не мотики. Изключително бързо се намират решения на проблеми както с Oracle Database, така и свързани Unix въпроси, SQL, PL/SQL, Java, Installation issues, покупка на компютърна литература, TOAD, RAC и какво ли още не.

И всичко това е абсолютно безплатно (за разлика от oracle@lazydba, примерно)

🙂

 Posted by at 12:14

Гуми

 Общи  Коментарите са изключени за Гуми
ян. 082007
 

Благодаря на слънцето, че изгони снега докато се наканя да обуя някакви зимни гуми. Доста търпеливо зимата ме изчака до януари 🙂
Сега си взех Snowprox S941 и нямам търпение да завали да ги проверя.
Snowprox S941
Като цяло смятам, че това е разумния компромис между истински снежните копачки (примерно Gislaved Nord Frost 3, препоръчвани във много форуми) и реалната употреба на де факто сухи или мокри настилки през 99% от времето (където се иска стабилност, устойчивост при скорости и т.н.). Конкретно Snowprox S941 са истински зимни гуми, със скоростен показател до 190 КМ/ч и висока устойчивост на мокра настилка.
Освен това нкой не е казал лоша дума за TOYO.
Ще видим дали сметките ми ще изязва верни 🙂

 Posted by at 13:43
ян. 072007
 

Един невинен спор пак ме подпали на темата за емиграцията. Учудвам се как все още се намират тооолкова много хора, които искат да отидат „на запад” и да си живеят живота. Щото там хората вземат пари, ей…..

Аз, някак си, съм все по-малко убеден, че „там” някой размита за нас с голямата метла. Познавам не един и двама, които са отишли там. Някои се върнаха, други останаха. Но не познавам нито един, който, както е отишъл „в цивилизацията” – да са почнали да го замерят с пачки.

Навсякъде за да си добре се иска бачкане. Разликата (която се стопява) е, че „там” ако си скъсваш **** от бачкане… имаш по-голям шанс да вземаш повече пари. И да си оценен. Като цяло имаш повече шансове за реализация ако ти се бачка яко!

Но вече и при нас навлизат много мощно тези нрави. Особено в големите градове. Тук има и много чужди фирми, и наши, които си ценят ценните хора. И по този показател, макар да сме назад, се приближаваме. Не с всяка година, а със всеки изминал ден! Особено в по-динамични сфери като IT.
Е, има някой „хитреци”, които отиват в някоя уредена държава да мързелуват. Преживяват си от социала, пазаруват от най-евтините магазини и т.н. И пак си мърморят, и пак мрънкат. Но са „там”.
Това не ми звучи като мечта, достойна за преследване.

Другата страна на монетата е, че като отидеш „там”, ти си никой. НИКОЙ! Но за това пък си сам. Няма ги „твоите хора”, няма ги родителите, които да те подкрепят ако закъсаш. Няма ги приятелите, с които да изпиеш по бира.

Тук може да си си намерил някакво призвание, може да си постигнал нещо (кой повече, кой-по-малко…). Там си НИКОЙ. И трябва да започнеш от разнасяне на пици и метене на ресторанти, бачкане по автомивки и т.н.

Странно защо има толкова хора, които не са навити да разнасят пици в България, но ще си продадат наследственото апартаментче в Брусарци за да отидат в Америка, Канада, Нова Зеналандия или не знам къде за да режат салати в някой забутан ресторант. Един съученик (много будно момче) така отиде за Испания. След години яко бачакне вече е шеф на разносвачите на пици. И се хвали колко пари взема, какво си бил купил…

Сигурен съм, че ако си беше стоял тук, сега нямаше да е по-зле. И изобщо не споменавам моментите на сантиментални сълзи от това, че си далече от роднини и всякакви познати.

Има и нещо друго. Камъкът си тежи на мястото. А ако на мястото се издига планина… В момента България е в изключително бурен възход. Никой не може да го оспори. Или поне никой, който си спомня „Виденовата зима” (точно преди 10 години) или „Лукановата зима” с купончета за по 13 грама сирене на ден, на човек… не може със сърце а каже, че днес не е по-добре. Но тук възможностите за развитие, за реализиране на „американската мечта” предстоят. Тук сега се оформя прослойката на „добре живеещите”.

По доста показатели „тук” вече почти е „на запад”, Не като заплати, но като условия сме само на няколко години от там. Дори има все по-осезаема имиграция. И ако си работиш тук; ако просто си стоиш на задника и се трудиш както би се трудил „там”; ако си гъвкав, а не мързелив мърморко; ако се напъваш, както ще се напъваш „там” (защото трябва да се яде, а там няма мама и тати); ако си цениш и използваш шансовете – след няколко години ще си като „на запад”.

Разликата е, че ако отидеш там всеки ще си пази мястото и ще те гледа като натрапник. А тук си си вкъщи.

Още по темата:
Dreamland
BGCanada Forum

 Posted by at 18:45

Оптимизираните оптимизатори

 Без категория  Коментарите са изключени за Оптимизираните оптимизатори
ян. 032007
 

Днес от чисто любопитство реших да погледна кои са най-тежките (от гледна точна на дискови операции) заявки в една тестова БД (Oracle 10.2.0.2). Използвах вградения репорт в Oracle SQL Developer. Тази БД не се използва много, особено днес, но все пак останах изумен от резултата. Това са двете най-лоши:

select /*+ rule */bucket, endpoint, col#, epvalue
from histgrm$
where obj# = :1
and intcol# = :2
and row# = :3
order by bucket

select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample_size,
minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, avgcln
from hist_head$
where obj# = :1
and intcol# = :2

Това, вероятно, са рекурсивни заявки за преглед на хистограмите. Забавното в случая е, че използват хинта /*+ rule */.
До тук с десъпорта на rule-based optimizer в 10g! Щом Oracle дори в собствения си код го използват… При това в Oracle 10g Release 2
Но това не е новина. По-веселата част е, че това или е заявка, извиквана от кода на самият cost based optimizer; или е заявка, извиквана при събиране на статистиките, толкова необходими за CBO. При всички случаи този код, колкото и да е legacy (да кажем, че е от Oracle 8i) е писан СЛЕД появата на CBO. В крайна сметка точно CBO използва хистограмите – RBO така и не знае за тях!
🙂

 Posted by at 17:48

Зимата ни изненада

 Без категория  Коментарите са изключени за Зимата ни изненада
ян. 032007
 

Не. Новите данъчни закони и наредби ни изненадаха.
Най-веселото е, че се изискват не много, но отчетливи промени във всички системи, програми и програмки, които „издават фактури”. А те са стотици, в България. И половината са без поддръжка.
Големите фирми, които имат големи системи поддържани от стабилни софтуерни компании имат проблеми. Един клиент ни похвали, че само ние издаваме фактури днес.
А какво става със стотиците програмчета, написани къде по-добре, къде в стил „курсов проект”, на които се издават фактури в малките и средни фирми? Програмчета, останали без поддръжка още след продажбата си? Които са работили безотказно месеци и години наред, а сега няма кой да ги промени според новите изисквания… Да, печатниците за кочани с фактури имат огромен оборот. Да им е честито присъединяването към ЕС.

 Posted by at 16:41