Oracle 11.2: любимите ми благинки

 Общи  Коментарите са изключени за Oracle 11.2: любимите ми благинки
Сеп. 022009
 

OCR and Voting disk on ASM
Voting disk-а и Oracle Cluster Registry мгат да се съхраняват на ASM. Това прилича малко на кокошката и яйцето. За целта ASM вече не е част от DB home, а е част от CRS home (наричан вече Grid Infrastructure). С други думи, вече и без клъстерна файлова система няма нужда да цепим малки логически partitions само за OCR и Voting disk. И като сата дума за клъстерни файлови системи…

ASM Cluster File System (ACFS)
Вече ASM има функционалност на Volume manager (то и преди го имаше, но вече малко повече) и на клъстерна файлова система. С други думи ASM придобива функционалността от OCFS, но много с по-голям размах (има дори snapshots). Предстои да уточним до колко ще е успешно.

SCAN адрес
Достъпа до всички нодове в един клъстер вече може да става само през един IP адрес или име. Този адрес е адрес на клъстера, а не на някой нод. В един клъстер може да има един или много SCAN адреси и броят им зависи от нуждите, натоварването или настроението на администраторите, но не и от броя на нодовете. Според мен за голяма част от случаите един scan адрес ще е абсолютно достатъчен и това е голямо улеснение.

Edition-based Redefinition
Невероятна функция, която беше заложена още в 11.1, но не беше пусната. С две думи, възможно е обектите да имат различни версии, които се превключват (примерно при upgrade). Това е голямо улеснение. Предстои да се изглади и като функционалност. Между другото, преди 7 месеца излезе едно много интересно предположение, че някой ден това може да се използва за zero downtime upgrade/patching на самия data dictionary

Flashback Data Archive Support for DDLs
Преди няколко месеца писах за ограниченията, които правят Flashback Data Archive трудно използваем. Вече голяма част от проблемите са отменени: възможни са:
– Add, Drop, Rename, Modify Column
– Drop, Truncate Partition
– Rename, Truncate Table
– Add, Drop, Rename, Modify Constraint
Остава да разрешат и Add partition и вече ще може да се използва съвсем безгрижно

По-интелигентен installer
Ако нещо не се хареса на инсталера, и то може да се оправи с няколко команди (примерно някой параметър на kernel), инсталера генерира скрипт за оправията и предлага на потребителя да го стартира. Освен това инсталера на Grid infrastructure е напълно способен сам да си setup-не SSH conectivity – нещо, което ми тежеше много в старите версии

Deinstall
В ORACLE_HOME/deinstall/ се намира един ужасно полезен скрипт, който прави пълна деинсталация на дадения home. Ужасно полезен, особено за деинсталация на Grid infrastructure.

И още благи неща, които ми харесват:
– ASM configuration assistant (ASMCA) – доста полезен инструмент
– нови екстри в ocrconfig
– Automatic Block Repair при standby database
– IGNORE_ROW_ON_DUPKEY_INDEX Hint for INSERT Statement (нож с две остриета, но все пак е полезно)
– нови и много полезни агрегативни функции: LISTAGG, NTH_VALUE
– Cluster Time Service – синхронизира времето между нодовете в клъстера. Много добра идея. Все пак има и малък кусур: много внимавайте преди инсталация на клъстер времето да е долу-горе синхронизирано, иначе боли
– Columnar Compression – чудеса могат да се направят с новите възможности за компресия (полезни предимно в DWH бази)
– Data Pump Legacy Mode – малко помощ за тези, свикнали със старите imp/exp
– Segment Creation On-Demand – представете си една инсталация на тлъсто приложение с 10000 таблици, които в началото са празни (а някой си остават така завинаги). Всички тези празни таблици и техните индекси вече няма да заемат грам място. Много благо
– Zero-Size Unusable Indexes and Index Partitions – кофти е когато един индекс стане Unusable – но поне вече няма да заема място

Ох, има още много, но всичко по реда си 🙂

ASM: disk_repair_time

 Общи  Коментарите са изключени за ASM: disk_repair_time
май 292009
 

В понеделник писах за приятната възможност на ASM за Fast Mirror Resync. Тогава забравих да спомена за един параметър (също нов в 11g), който е от съществено значение за тази функционалност: disk_repair_time.

Параметъра disk_repair_time указва колко време след отпадането на един диск имаме приятната възможност за Fast Mirror Resync.

Когато даден диск отпадне от дисковата си група, ASM започва да си води сметка кои от разположените върху него extents са променени в „отсъствие“ на диска. Тази информация се записва под формата на нещо като bitmap в ASM Header-а. На базата на този bitmap се прави и самият fast mirror resync когато се появи диска.

Обаче тази информация не може да се пази вечно. И вместо да се затормозяваме с някакъв синтаксис за триене на информация от тотално загинал диск, Oracle са го направили автоматично. След изтичането на определен период от време, информацията в този битмап се затрива; затрива се и всичката информация за съществуването на този диск (т.е. той се бори за загубен завинаги) – нещо като автоматичен drop disk. От това има две последствия:

– Ако успеем да възстановим диска, но това се случи след изтичането на периода, указан от disk_repair_time, той не се разпознава от системата като „свой“ и трябва да се добави като нов диск с add disk
– Когато изтече периода за disk_repair_time, поради drop-ването на диска започва ребалансиране на extent-и по наличните дискове. Това може да се възпрепятства ако се настори asm_power_limit=0.

Синтаксиса за сетване на параметъра disk_repair_time e:

SQL> ALTER DISKGROUP data SET ATTRIBUTE 'disk_repair_time' = '12h';

Diskgroup altered.

Проверка на текущата стойност се прави с:

select GROUP_NUMBER, VALUE from v$asm_attribute where name='disk_repair_time';

GROUP_NUMBER VALUE
------------ ------------------------------
           1 12h
           2 3.6h

Стойността по подразбиране, при стандартна ASM инсталация, е 3.6 часа. Тази стойност е взета от някаква статистика за средното време за отстраняване на хардуерен проблем с кабели, RAID контролери и т.н. Естествено, в България времето за доставка на един обикновен infinband кабел е поне 2 седмици (ако имаш късмет), така че това не важи за нас.

Според Oracle този параметър може да се сетне на произволно високa стойност. Това, обаче, е нож с две остриета: колкото повече време си дадем за оправяне на проблема (с последващ елементарен и бърз fast mirror resync), толкова по-дълго данните ни остават без mirror.

Мар. 302009
 

Вчера се навършиха 10 години от както постъпих на работа в Стемо. В далечната 1999 година…

Как се случи това?

Представете си следната картинка: аз – студент първи курс в не-много-реномирания ТУ-Габрово. Изключително съвестен – със съквартиранта ми (Цецо) я сме пропуснали една лекция – я не (това през първата година, де). Живота ми не е охолен, но и не търпя лишения. Тогава нашите ми даваха по 20 000 (неденоминирани) лева на седмица и се прибирах вкъщи всеки уикенд.

Един ден (в началото на март) виждам на таблото в един от корпусите на университета следната обява:

Фирма Стемо търси да назначи
1. Програмист
2. Интернет сътрудник
Може и студенти. За контакти…

Не съм си търсил усилено работа, но реших да кандидатствам. Думите, които ме накараха да се пробвам, бяха „Може и студенти”. По това време нямах никаква представа с какво се захващам. Мислех, че може да ме вземат за „Интернет сътрудник”, което си представях като човек, който стои в някой интернет клуб на фирмата (от къде да знам, че Стемо нямат интернет клубове) и пуска нет на клиентите. Естествено, предполагах че ще вземам основно нощни смени, а през деня ще си уча.

На другия ден приключих университета към 15:00 – 15:30 часа и отидох в офиса на Стемо. Казах, че искам да попълня тестовете за програмист и за интернет сътрудник. „Ама и двата ли?“ – учучди се секретарката – „Няма да ти стигне времето…”. (какво пък толкова има да се попълва, се зачудих пък аз).

Е наистина не ми стигна времето. Не помня кой попълних първи, но за втория ходих на следващия ден. И толкоз. После – „Ще ви се обадим ако ви одобрим”.

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

Минаха 3-4 седмици. След първата предположих, че не са ме харесали; след втората се примирих, а към третата почти бях забравил, че съм кандидатствал. И нещеш ли една вечер баба Мара (хазяйката) ми съобщи, че майка ми се е обадила, да съм отивал на другия ден в Стемо за интервю. Ха!

Първи срещи

На другия ден се стъкнах, взех си дебелата дипломна работа от училище (бях писал програма на Borland Delphi 2 – докарах над 110 страници барабар с разпечатката на праграмата) и се стоварих във фирмата. Заведоха ме в една приемна и малко след това дойде Стефан Балтов – управител на софтуерната къща по това време. Каза ми, че съм на интервю за програмист и ме попита дали мога да покажа нещо, което съм писал. Аз това и чаках – извадих дипломната работа и я тупнах на масата. Добавих рецензията на Владо от ЦИУУ към СУ-София и една публикация във вестник „Наука и Техника”, в която пишеше, че аз и още двама съученици (споменатият ми по-горе съквартирант Цветан и най-близкия ми приятел в техникума, Юсеин) сме направили нещо много велико и печелим второ място в някакъв национален конкурс. Бая мижава работа, като го погледна сега. Но тогава наистина мислех, че е Нещо.

Колкото и смешно да ми изглеждат сега тези неща, явно Балтов е усетил, че ако не друго, поне съм нахъсан и имам поне малко опит. Както се сещате, през 1999 година не се срещаха много хора, писали на Delphi (който тогава всъщност беше популярен колкото е Java сега). Особено в град като Габрово.

Та Балтов се направи на впечатлен и отиде да донесе неговото най-мощно оръжие – някакви тестове на Borland. Не знам как съм се справил с тях, но явно е боло задоволително, защото в един момент повика и Христо Ковачев (изпълнителния директор) и аз разбрах, че тая работа ще я бъде.

Ковачев, от своя страна, прояви много добро разбиране и мениджърски подход. Обясни ми, че работното ми време може да е много гъвкаво (нали съм студент редовно обучение) и се поинтересува колко време, по моя преценка, мога да отделям за работа. Аз се бях прежалили за нощен труд в интернет зала. Така че това да съм Програмист, и то когато ми е удобно, ми звучеше като изпълнена мечта (в която дори не съм вярвал). Предположих съвсем трезво, че мога да отделям минимум 5-6 часа на ден. Кога мога да започна – ами веднага. След това дойде коварния въпрос какви пари искам. Аз не можах да измисля сума и се разбрахме да си помисля до другия ден (падаше се петък) и да дойда да оформим всичко.

Не знам дали мога да опиша еуфорията, която изпитвах. След като си тръгнах, изтичах до квартирата да си хвърля нещата и после до първия Булфон да се похваля на майка ми. И да я питам какви пари мога да поискам като part-time developer.

Тук е времето да хвърля още малко перспектива. Това всичкото се случва само 2 години след Виденовата зима. Икономиката не е кой-знае колко стабилна. Майка ми работеше като екскурзовод в музей, баща ми – строител (без много работа през зимата). Заплатите им не са били големи. По това време Трявна беше безкрайно западнал град с разбити заводи, висока безработица и никакъв туризъм. Аз – някакво студентче в първи курс. Истински програмист съм виждал само на картинка и ако и да е имало някакви норми за заплатите в бранша, няма начин да ги зная. Парите, с които се издържах седмично бяха 20 000 лева, още 20 000 ми беше квартирата. Вземах някаква стипендия за отличен успех, но не помня колко, а и я даваха 2-3 пъти годишно.

За това краткия семеен съвет доведе до цифрата от 100 000 лева заплата на месец, от която да започна преговорите.

На другия ден (отново след лекциите) отидох да се разберем с Балтов. Но без да ме пита той направо ми съобщи „С господин Ковачев решихме да ти даваме по 100 долара за начало. Можеш да започнеш от понеделник.”

100 долара? Това трябва да се е равнявало на поне 180 000 лева. И е било може би над 1/4 от семейния ни доход. Лелеее…

И така, на 29.03.1999 година аз започнах като „Програмист“ в Стемо ООД.

По това време не знаех какво е СУБД, не знаех какво е таблица, не бях чувал за Oracle. Но фирмата ми повярва и ми даде шанс. Шанс, който аз използвах много добре. Вярно е, че това което съм сега, съм си го изградил аз лично с много труд. Не съм „парашутист”, имал „чичо владика”. Работил съм здраво, работил съм и нощем, не съм се скатавал. През следващите години редовно си изкарвах в офиса до 8-10-12 вечерта (и по късно), даже имам някои случаи, в които съм стоял по цяла нощ, а после и на следващия ден, когато се налага.

Но имах шанс. Балтов и Ковачев ми дадоха шанса да се докажа. Да се развия. Да отида като никой и да стана Някой. Много съм давал на Стемо, но и много съм получил. И съм благодарен за това.

10 години. Лелеее…

Първи работен ден

На първия ми работен ден в Стемо (29 Март 1999) ми дадоха компютър и ме оставиха да си инсталирам Delphi. После ми стовариха сорса на Търговско-Информационна Система „Диригент” 2.0. Все още в етап на разработка, и то съвсем от скоро. По това време сигурно е имало 5-6 форми (ако борим logon-а и формата за отчети) и 10 таблици. Не използваше СУБД, а нещото, което се казва Lotus Domino (достъпвано през ODBC драйвер). Не много стабилна работа, както се оказа няколко месеца по-късно 🙂

И така, компилирах си аз Диригента и го пуснах. В същото време си продължих с инсталацията на Office и други неща. В един момент се усетих, че филхармонията още не се е показала. И видях, че всъщност програмата е тръгнала, но аз не съм я забелязал. Стори ми се странно, че login екрана не излиза пред другите прозорци – тогава ми изглеждаше логично (може би съм си го представял малко като splash screen). Попитах колегите защо така и някой смънка „абе аз се пробвах да го направя, ама нещо не стана и го зарязах”. В тоя момент аз реагирах супер странно и нехарактерно (за мен); казах нещо като „ха, какви сте програмисти, да не можете един прозорец да покажете”. И сега, след десет години, се стряскам как съм бил толкова нагъл. Явно от толкова добри случки в предните дни съм си повярвал, че морето е до колене.

Балтов реагира светкавично и ми хвърли първата задача, за да ме тества: „Имаш 3 дни да го направиш. Ако успееш, печелиш една боза” (По това време в софтуерната къща се раздаваха такива награди. Същият беше и залога при басове, облози и т.н.)

Тук моя късмет проработи. Порових малко и намерих една Win32 API функция, която прави точно това. И успях а изпълня задачата за по-малко от час. А Балтов отиде лично до близката сладкарница и ми донесе един литър боза.

(продължение…)