Prva normalna forma

July 29, 2007 – Srdjan

Definicija: Relacija je u prvoj normalnoj formi (1NF) ako svi njeni atributi imaju samo atomske (nedeljive) vrednosti.

Od kada sam se prvi put susreo s ovom definicijom, delovala mi je neprecizna zbog pominjanju jednog nepreciznog pojma - atomske vrednosti. (Neki autori 1NF definišu nepostojanjem ponavljajućih grupa, što mi je jednako neprecizno.)

Šta je to atomska vrednost? Atomska vrednost je vrednost koja se nemože dalje deliti na prostije činioce. U mom tumačenju - atomska vrednost je vrednost koju nema smisla dalje deliti na prostije činioce.

Da li je datum ’29.07.2007.’ atomska vrednost? Po definiciji, nije! Ovaj datum (kao i bilo koji drugi) mogu da izdelim na dan, mesec i godinu. Koliko puta mi je zatrebala samo godina iz nekog datuma.

Da li je prost string ’Srđan’ koji sadrži moje ime atomska vrednost? Nije. Iz njega mogu da izdvojim prvo slovo ’S’ kao jedno slovo mojih inicijala. Ne samo da se ovo može uraditi, nego ovo ima i smisla.

Ovakvo razmišljanje mi nije pomoglo u shvatanju atomske vrednosti. Atomsku vrednost i njenu vezu sa atributima sam usvojio po intuiciji, onako kako mi zdrava logika nalaže: Jedan atribut u jednoj torci ne može da ima dve (ili više) vrednosti.

Daljim proučavanjem problematike 1NF sam našao, i prihvatio, da ni jedna tabela SQL baziranih sistema za upravljanje bazama podataka ne može da naruši 1NF. Ovo je jednostavno za razumevanje, jer ni jedan presek reda i kolone u SQL tabeli ne može da sadrži dve vrednosti.

Priču sam započeo sa relacionom teorijom podataka, a u predhodnom paragrafu sam neneamerno prešao na SQL (iako su ove dve stvari slične, nikako ih ne treba poistovećivati, ali o tome nekom drugom prilikom). U SQL-u su sve tabele minimalno u 1NF, ali šta se dešava sa 1NF u relacionoj teoriji?

Pre neki dan sam počeo da čitam knjigu ‘Date on Database: Writings 2000-2006’ od C.J. Date-a. Danas sam završio sa čitanjem osmog poglavlja knjige pod nazivom ‘What First Normal Form Really Means’ (‘Šta je pravo značenje prve normalne forme’).

U tom poglavlju se C.J. Date poziva na radove Hugh Darwen-a na polju problematike odnosa prve normalne forme i relacione teorije. C.J. Date priznaje da je dugo godina (30 godina!) bio zbunjen po pitanju prve normalne forme.

Ukratko, C. J. Date kaže da sam pojam atomske vrednosti nema absolutno (nepromenljivo) značenje, već da njegovo značenje zavisi od onoga što želimo da uradimo sa podacima (nekad nam treba ceo datum, a nekad samo godina iz tog datuma). Iz tog razloga pojam atomske vrednosti treba izbaciti iz upotrebe, a samim tim i pojam 1NF, koji gubi smisao bez pojama atomske vrednosti.

C.J. Date (uz Hugh Darwen-a) na kraju tvrdi da svaka relacija po svojoj definiciji zadovoljava 1NF.

Pročitavši osmo poglavlje gore spomenute knjige, napokon sam zatvorio poglavlje svog dugogodišnjeg razmišljanja o značenju prve normalne forme.


Oracle 11g launched

July 12, 2007 – Dejan

Juče je marketinški predstavljena nova verzija Oracle baze - Oracle Database 11g.

Sama prezentacija je skoro katastrofalno odrađena -  ne znam samo kako dopustiše onom dedici na početku da se onako blamira…

Red suhoparne priče, red slajdova, red napumpavanja marketinškim podacima (u stilu “Oracle je bolji od SAP“, “Oracle 11g jede malu djecu“, “Oracle je toliko jeftin, da ćete uštedjeti milione - limes TCO-a teži ka nuli” i sličan bullshit), pa tako u krug - možda su i uspjeli impresionirati nekog bizMismena, ali na mene ova prezentacija uopšte nije djelovala.

Ajd što je prezenterski dio haotično odrađen, al’ što sam se namučio gledajući prezentaciju, pa to je bruka. 10-ak puta mi se prenos prezentacije prekidao, tako da sam par dijelova prezentacije nenamjerno propustio.

No, na stranu sa tim marketinškim napumpavanjem.

Ono što me oduševilo su najavljene mogućnosti Oracle 11g baze, ali koliko god da sam optimističan, malo sam i suzdržan, jer je Oracle u zadnje vrijeme počeo toliko da fušeri, da je to nepojmljivo, a iz iskustva znam da prije Oracle 11g Release 2 ne treba ni pomišljati na upgrade.

Oracle 11g još nije dostupan za download, ali po najavama biće ubrzo.


Offtopic: EliteSecurity me razocarao definitivno

July 6, 2007 – Dejan

Davne 2001. sam se registrovao na EliteSecurity, presao put od newbie-a do SuperModeratora, trudio se uvijek pisati konkretne i konstruktivne poruke, nekad se znao i zakaciti sa pojedincima drzeci do svog principa, stosta naucio od drugih, stosta naucio druge, no nazalost (ili nasrecu) doslo je vrijeme da kazem - “Zbogom EliteSecurity”.

Napustio sam status SuperModeratora (koliko god on nekima znacio), jer se nisam slagao sa stavovima pojedinaca pri vrhu ES piramide. Uradio sam to tiho, bez mnogo pompe. Samo sam rekao da mi skinu status i da se ne dize velika frka oko toga.

Nastavio sam i dalje aktivno da ucestvujem u diskusijama, uglavnom pomazuci manje iskusnim posjetiocima. Cak imam dojam da sam aktivnije pomagao posjetiocima, nego dok sam bio SuperModerator.

U zadnje vrijeme sam vidjao mnogo zalbi na moderatore, SM-ove i administratore, ali nisam primijetio da je u vecini slucajeva uvazena zalba/kritika/prijedlog/sugestija od strane korisnika.

I tako prije nekoliko dana pocne se meni EliteSecurity sajt sporije ucitavati. Umjesto sekund-dva, sajt se ucitavao oko 10-ak sekundi. Postavim ja temu sa pitanjem zasto se sajt sporije ucitava, ali ne dobih odgovor, nego je tema obrisana (hi markom) - i to BEZ OBRAZLOZENJA. Pitao me Gojko putem PP da mu dam vise informacija, kako bi eventualno rijesili taj problem. Ja mu dam.

Ni nakon nekoliko dana, nista se nije promijenilo, pa sam ja opet postavio pitanje u potrazi za objasnjenjem, zasto se sajt sporije ucitava (moja pretpostavka je bila zbog reklama u headeru). Kaze Nebojsa Milanovic:”Nemoj da dramis, vec sam ti rekao da je to do browsera. Problem ti pravi IE, a ne ES.”.
Ne bijah lijen, otvorim Firefox, krenem ucitavati ES, kadli ono - isti efekat. Sajt se ucitava 7-8 sekundi. Uzmem screenshot i okacim u toj temi kao kontraargument Nebojsi (koji se izgleda osjetio pogodjenim u vezi reklama; hint: BM Foto Oprema).
Ne prodje nekoliko minuta, kad tema nestade bez traga. Cak nisam ni obavjestenje o brisanju dobio, sto znaci da je poruka obrisana direktno u bazi. Eto markoma s porukom:”Imas ad bloker za taj problem. Diskusija o reklamama je zabranjena na javnom.”

Mislim… Kuda takvo ponasanje vodi?

Ne smeta meni ako Gojko ili ko vec ima koristi od tih reklama, ali dajte ljudi osposobite sajt da funkcionise kako treba i pokusajte barem rijesiti ukazane probleme.

Sad tek shvatam revolt drugih kolega (bluesman, dinke, towk i dr.), kada naidju na nerazumijevanje i ignorisanje vrhuske po pitaju korisnika.

Zasto ovo pisem ovdje? Zato sto bi mi na ES sigurno obrisali temu, a na drugim forumama takodje ne zelim, da ih ne uplicem u ovo.

Zbogom EliteSecurity.


Oracle 10g (OCP) Certification Preparation

June 29, 2007 – Dejan

Danas naletih na zanimljivu prezentaciju sa korisnim informacijama za sve one, koje zanimaju Oracle sertifikati. Osim opisa pojedinih sertifikata, ima dosta primjera sa objasnjenjima, a tu su cak i primjeri SelfTestSoftware pitanja.

Preporucujem za citanje.

Link: Oracle 10g (OCP) Certification Preparation



Oracle Security Workshop

June 22, 2007 – Dejan

Nedavno (13.06.2007. godine) sam bio na jednom Oracle seminaru o sigurnosti, na kojem su prezentovane neke opštepoznate činjenice o sigurnosnim prijetnjama i zatim rješenja, koja nudi Oracle na polju sigurnosti baza podataka.

Neki od statističkih podataka su:
- 87% upada u bazu se odvija tako što “bad guys” prvo “hackuju” operativni sistem (Windows npr.), pa tek onda bazu
- 80% svih napada na bazu dolazi od samih zaposlenika firme, tzv. “insajdera
- samo 1% profesionalnih upada u bazu bude otkriven
- 10% svih hackova bivaju javno objavljeni

Takođe ću navesti neke od rješenja, koja Oracle nudi kao odgovor na potencijalne sigurnosne prijetnje:
- Oracle Database Vault
- Oracle Audit Vault
- Oracle Virtual Private Database (VPD)
- Oracle Label Security
- Transparent Data Encryption
- Oracle Advanced Security
- Single-Sign-On
- Identity & Access Management

Tokom seminara su na praktičnim primjerima prvo pokazani Oracle Database Vault i Oracle Audit Vault, kada recimo korisnik SYS (da, taj super-extra-turbo-ultra-mega-giga-mighty-DBA-baja je ostao bez jaja) nema pristup zabranjenim podacima (u ovom primjeru se radilo o brojevima kreditnih kartica). Potom je prikazana enkripcija podataka, tako da samo onaj ko ima ključ za dekripciju, može doći do pravih podataka.

Prezentovano je još mnogo toga, a između ostalog SSO (Single-Sign-On), DBMS_CRYPTO, DBMS_OBFUSCATION_TOOLKIT, sigurnosne role u aplikaciji (DVSYS.DBMS_MACSEC_ROLES.SET_ROLE), FGA (Fine Grained Auditing) i td.

Moje subjektivno-objektivno mišljenje je da su od gorenavedenih mnoge stvari korisne i da će naći primjenu kod mnogih korisnika, a Oracle ima prednost pogotovo što nijedan drugi RDBMS ne nudi ove mogućnosti u sklopu samog RDBMS-a.
Međutim, velika mana su plaćanje dodatnih licenci za korištenje tih komponenti, kao i potreba za više RAM-a i više procesora, što je “neslužbeno” potvrdio i jedan od predavača na seminaru. Na sve to dolaze i uvećani troškovi za ljudske resurse (obučavanje, dodatne radne obaveze), pa će biti klasično - koliko para, toliko muzike.

Oracle security workshop - madjionicarNakon silnog tehničkog teoretisanja, organizatori su nas počastili iznenađenjem - mađioničarem.
Prvo smo se svi pogledali onako u smislu “Šta će ovdje mađioničar!?“, ali nas je lik oduševio već nakon par minuta. Izvanredni trikovi sa kartama, novčićima i konopcom (tj. komadom užeta) popraćeni duhovitom pričom, razdragali su i najokorjelije geekove. :) Čak je dobio jači aplauz, nego svi Oracle predavači zajedno.

Za kraj, evo jedna slika na kojoj pijem kafu i jedem izvanredan “brownie” tokom pauze.
Oracle security workshop - Dejan


Oracle: BUG 6141507 & ORA-07445 & query_rewrite_enabled=TRUE

June 20, 2007 – Dejan

Mrzim kada trazim razlog neke greske i kada izgubim prilicno vremena i zivaca, a onda se na kraju ispostavi, da je to Oracle bug.

Naime, prije nekoliko mjeseci smo dobijali gresku ORA-07445: exception encountered: CORE Dump[ACCESS_VIOLATION]  [kkssct+102] [PC:0x93DF2E] [ADDR:0x14] [UNABLE_TO_READ] [], zbog koje sam na savjet Oracle Support strucnjaka morao dodati jedan nedokumentovani init parametar (_fix_control=’3118776:OFF’) i dva init parametra izmijeniti (query_rewrite_enabled=FALSE i cursor_sharing=EXACT).

Nakon toga je neko vrijeme sve radilo kako treba, iako su performanse baze drasticno opale, pa sam morao puno truda uloziti u optimizaciju SQL upita i postojecih materialized views. Posto broj korisnika sve vise raste i posto ima sve vise aplikacija u bazi, opterecenje je proporcionalno tome raslo.

Moj pokusaj da gorespomenuta dva init parametra vratim na prvobitno stanje, kako bih dobio na performansama, sveo se na hrpu gorespomenutih ORA-07445 gresaka i zalbu mnogobrojnih korisnika.

Zbog toga sam putem Metalinka odlucio ponovo pokrenuti pitanje (Service Request) u vezi ove greske. Nakon visednevnog “dopisivanja” i testiranja, ljudi iz Oracle Supporta su zakljucili da je to bug (Bug 6141507 - QUERY_REWRITE_ENABLED=TRUE ORA-07445: [ACCESS_VIOLATION] KSSCT+102]) i da mi ne preostaje nista drugo, nego cekati da se taj bug ispravi.


Oracle Database 11g Launch

June 15, 2007 – Dejan

Nakon uspjesnih beta testiranja, dolazi i sluzbeni “launch”:
Oracle Database 11g Launch

Aj’ da vidimo konacno, sta su sve ubacili/izmijenili u novoj verziji…


Oracle: OCP 9i DBA -> OCP 10g DBA

June 15, 2007 – Dejan

Konačno! Danas položih ovaj upgrade ispit 1Z0-040 (1Z0-040 - Oracle 10g: New features for administrators)  sa OCP 9i DBA na OCP 10g DBA. Bilo je par tricky pitanja, koji su me totalno zbunili, pa sam odgovor takoreći morao blefirati, ali sve u svemu ispit nije bio težak.

Pošto više ne trebam ovaj SelfTestSoftware, dajem ga u zamjenu za nešto sa ove liste:
- Oracle knjiga,
- 2 GB RAM-a
- 1 Hard disk od oko 200 GB prostora 

Ko se prvi javi, njemu ide STS, a ja čekam 11g. :)


Oracle i MySQL problemi: Zajedno do rjesenja!

June 8, 2007 – Dejan

Prije nekoliko godina, dok sam bio pocetnik u podrucju baza podataka, nailazio sam na mnoge probleme - nekad lagane, nekad teze. Vecinu sam ih pokusavao sam rijesiti uz pomoc dokumentacije ili knjiga, a kad nisam uspijevao, trazio sam rjesenje/savjet/pomoc na raznim forumima i preko Googlea.

U nerijetkim slucajevima sam znao izgubiti dosta vremena i zivaca, dok nisam nasao rjesenje ili neki savjet u vezi odredjenog problema.

Da nema Googlea i ljudi kao sto su Tom Kyte, koji nesebicno dijele svoje znanje i pomazu drugima, moj bi posao (a samim tim i zivot) bio mnogo tezi. :)
Zbog toga sam se i ja odlucio nesebicno pomagati drugim pocetnicima u podrucju baza podataka (tj. ukoliko moje znanje bude bilo dovoljno za pronalazenje rjesenja), konkretnije u vezi MySQL i Oracle baza, tako da mi mozete slati vasa pitanja sa DETALJNIM opisom problema, ocekivanim rezultatom i svim korisnim informacijama.
Pitanje ce biti postavljeno ovdje na sajtu i odgovor cemo pokusati dati svi zajedno, sa ciljem da odredjeni problem rijesimo na najbolji moguci nacin - dakle, ne samo da damo rjesenje, nego da to bude i “best practice” rjesenje.

Pitanja mozete slati na E-Mail dejanAToutsourcing-it.com



Oracle: Database Can’t be started after applied CPU Patch Apr 2007

June 1, 2007 – Dejan

Odlučili mi da “zakrpimo” baze najnovijim patch-om, tj. patch-evima (CPU Patch April 2007 i Patch 5 za 10.2.0.3), kadli ono “rupa” u “zakrpi”. Medjutim, fora je što patch na nekim serverima radi, a na glavnom production serveru ne radi kako treba. Juče i danas smo zakrpili nekoliko lokalnih servera, a potom development i acceptance server - sve je prošlo bez ikakvih problema.

Dodje na red i live production server - pomislili smo da ni tu neće biti nikakvih problema, ali smo se žestoko uspaničili i preznojili. Moram priznati da je ovo danas bio jedan od problematičnijih dana u stilu “noćna-mora-za-DBA”.

Naime, nakon što se baza zakrpi najnovijim patchom i nakon što se pokuša normalno pokrenuti, pojavljuje se jedna od zloćudnih ORA-07445 greški:

ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [kcbzfb+346] [PC:0x4E8616] [ADDR:0x251] [UNABLE_TO_READ] []

Na MetaLinku (link za one, koji imaju pristup MetaLinku: DATABASE CAN’T BE STARTED AFTER APPLIED CPU PATCH APR 2007) sam pronašao da je riječ o Bug-u, koji trenutno nije ispravljen, ali postoji jedan workaround za rješavanje tog problema. Workaround se sastoji od dodavanja jednog parametra u init.ora datoteku:

_enable_numa_optimization=FALSE

Pošto ne želimo da se petljamo sa nekim workaroundima (loše iskustvo sa par prethodnih workaround prijedloga od strane Oracle Support tima), poništili smo zadnji patch (opatch rollback) i pokrenuli bazu normalno bez tog patcha, pa ćemo pričekati sa zakrpom, dok se taj bug ne ispravi.