Questioning Solutions Since 2OOO 2

24
Oktober 2004 ‱ Nr 26, Årgang 5 ‱ ISSN 1600-5147 ‱ Pris: kr. 300,00 ex moms ‱ www.OracleEkspert.dk S Å ER VALGKAMPEN I GANG 2 af Marc de Oliveira K ONSISTENTE UDTRÆK 4 Af Martin Jensen Denne artikel diskuterer hvorledes en enkel anvendelse af flashback i Oracle Database 10g kan klare dette. Samtidigt peges pĂ„ et par enkelte potentielle fĂŠlder. H VORFOR IT- PROJEKTER FEJLER 6 af Sten Vesterli MĂŠrkvĂŠrdigt nok synes situationen ikke at blive bedre, selvom IT-branchen fĂ„r stĂžrre og stĂžrre erfaring. Og det er der to grunde til. H OLD O P ( MED AT ANALYSERE ) 10 Af Mogens NĂžrgaard Jeg tror det er et emne vi kommer til at snakke en del om i de kommende Ă„r, og der- for er reaktioner og erfaringer velkomne. D ATA M INING I P RAKSIS 12 af Jens Hejlesen En rĂŠkke forhold har i de senere Ă„r bevirket, at Data Mining (DM) som metode er ble- vet en attraktiv mulighed til lĂžsning af de informationsmĂŠssige udfordringer, som virksomheder og virksomhedsledere stĂ„r overfor i dag. G ROANS FRA M OGENS 16 af Mogens NĂžrgaard N YHEDER 22 EU giver sandsynligvis Oracle med- hold TietoEnator laver brugergrĂŠnseflade til Oracle pĂ„ Nokias Communicator PeopleSoft annoncerer partnerskab med IBM Oracles Q1-regnskab Ny Oracle Executive Vice President Oracle fĂ„r lov til at overtage People- Soft LĂžj Larry Ellison om fremtidsudsig- ter? Oracle vil lave mĂ„nedlige patches Ford dropper Oracle OpenWorld-registrering Ă„bnet 34 sikkerhedsfejl i Oracle L IVE 23 FĂ„ Thomas Kytes (“AskTom”) gode rĂ„d Dato: 2004-10-07 Jonathan Lewis som instruktĂžr pĂ„ RAC-kurset Dato: 2004-10-18 DesWeb SIG Dato: 2004-10-20 Database Forum 2004 Dato: 2004-10-28 Thomas Pystynen som instruktĂžr pĂ„ RMAN-kurset Dato: 2004-11-22 Oracle Open World 2004 Dato: 2004-12-05 #26 Questioning Solutions Since 2OOO PrĂžv OracleEksperts nye Kompetencearkiv www.OracleEkspert.dk

Transcript of Questioning Solutions Since 2OOO 2

Page 1: Questioning Solutions Since 2OOO 2

O k t o b e r 2 0 0 4 ‱ N r 2 6 , Å r g a n g 5 ‱ I S S N 1 6 0 0 - 5 1 4 7 ‱ P r i s : k r . 3 0 0 , 0 0 e x m o m s ‱ w w w . O r a c l e E k s p e r t . d k

SÅ ER VALGKAMPEN I GANG 2af Marc de Oliveira

KONSISTENTE UDTRÆK 4Af Martin Jensen Denne artikel diskuterer hvorledes en enkel anvendelse af flashback i OracleDatabase 10g kan klare dette. Samtidigt peges pĂ„ et par enkelte potentielle fĂŠlder.

HVORFOR IT-PROJEKTER FEJLER 6af Sten VesterliMÊrkvÊrdigt nok synes situationen ikke at blive bedre, selvom IT-branchen fÄrstÞrre og stÞrre erfaring. Og det er der to grunde til.

HOLD OP (MED AT ANALYSERE) 10Af Mogens NĂžrgaardJeg tror det er et emne vi kommer til at snakke en del om i de kommende Ă„r, og der-for er reaktioner og erfaringer velkomne.

DATA MINING I PRAKSIS 12af Jens HejlesenEn rÊkke forhold har i de senere Är bevirket, at Data Mining (DM) som metode er ble-vet en attraktiv mulighed til lÞsning af de informationsmÊssige udfordringer, somvirksomheder og virksomhedsledere stÄr overfor i dag.

GROANS FRA MOGENS 16af Mogens NĂžrgaard

NYHEDER 22EU giver sandsynligvis Oracle med-hold TietoEnator laver brugergrÊnsefladetil Oracle pÄ Nokias Communicator PeopleSoft annoncerer partnerskabmed IBM Oracles Q1-regnskab Ny Oracle Executive Vice PresidentOracle fÄr lov til at overtage People-Soft LÞj Larry Ellison om fremtidsudsig-ter? Oracle vil lave mÄnedlige patches Ford dropper Oracle OpenWorld-registrering Äbnet 34 sikkerhedsfejl i Oracle

LIVE 23FĂ„ Thomas Kytes (“AskTom”) gode rĂ„d

Dato: 2004-10-07

Jonathan Lewis som instruktÞr pÄRAC-kurset

Dato: 2004-10-18

DesWeb SIG Dato: 2004-10-20

Database Forum 2004 Dato: 2004-10-28

Thomas Pystynen som instruktÞr pÄRMAN-kurset

Dato: 2004-11-22

Oracle Open World 2004 Dato: 2004-12-05

#26

Questioning Solutions Since 2OOO

PrĂžv OracleEksperts nye

Kompetencearkivwww.OracleEkspert.dk

Administrator
BemÊrk: Dette tidsskrift mÄ kun distribueres i virksomheder med OracleEkspert medlemskab
Page 2: Questioning Solutions Since 2OOO 2

Selv om Anders Fogh Rasmussen og Mogens Lykketoftnu har skudt valgkampen til nÊste folketingsvalg i gang,sÄ er det ikke den, jeg her vil gÞre opmÊrksom pÄ.

Hvis du ogsÄ lÊste OracleEkspert i oktober 2002, veddu nok hvad jeg tÊnker pÄ. Det er nemlig nu, der skalvÊlges nye bestyrelsesmedlemmer til Oracle Develop-ment Tools User Group (ODTUG), og jeg er igen pÄ valg

i hÄb om at blive valgt til endnu en periode i bestyrelsen.

Denne gang er der en del pĂ„ spil. Selve Jeffrey Jacobs’ (den oprinde-lige ODTUG prĂŠsident, der var med til at etablere brugergruppen) fort-satte medlemskab af bestyrelsen kan afhĂŠnge af det kommende valg.

Da magtkampene i bestyrelsen er fortrolige, kan jeg ikke berette hvadder helt specifikt foregĂ„r, men jeg kan da sige, at jeg er en af de fĂ„, derforsĂžger at forhindre et ”kup” mod Jeffrey Jacobs.

Udover denne meget Ăžmme sag, er der et antal andre grunde til at jegfinder det nĂždvendigt at forblive i bestyrelsen:

1) Enhancement Request. Der har vÊret meget bÞvl med at admini-strere Þnsker om produktudvidelser. Da jeg tiltrÄdte bestyrelsen medmÄlet om at fÄ genindfÞrt ODTUGs Enhancement Request service,hvor ODTUG-medlemmer kunne registrere deres udvidelsesÞnsker tilOracles vÊrktÞjer, havde jeg ikke regnet med den store modstand,men det viste sig, at bestyrelsen har haft meget store problemer medat administrere netop denne service. Tidligere bestyrelsesmedlemmerer lÞbet fra deres ansvar og har efterladt brugergruppen med halvelÞsninger, der ikke fungerede. Alle sÄ meget trÊtte ud i Þjnene, da jegbegyndte at tale om at vÊkke dette ER-uhyre...

Den nye VP for Oracle Development Tools, Christophe Job, har dog fornylig vist interesse for et sÄdan samarbejde - i fÞrste omgang omDesigner-produktet, hvor jeg pt sidder i en lille gruppe og udvikler nyefunktioner til Designer! (Hvem sagde at Designer var dÞd?) Derformener jeg, der er vigtigt for ODTUG, at der bliver ved med at sidde enperson med fokus pÄ netop dette emne.

2) Under ODTUG-konferencen 2004 i juni fik jeg vedtaget etableringenaf fÞlgende to helt nye kommiteer: a) Expert Committee, som skal tagesig af at udnytte den ekspertice som gruppens medlemmer rÄder overtil gruppens fÊlles bedste, og b) Personal Committee, hvis fokus er atskabe tÊttere bÄnd mellem gruppens medlemmer. Som forslagsstillerer jeg blevet udpeget som Board Liason til disse to kommiteer, hvilketbetyder, at jeg er deres kontakt i bestyrelsen. Uden Board Liason ellermed en anden kontaktperson, som ikke fÞler det samme for kommite-erne kan deres fortsatte eksistens blive truet.

3) Endelig mener jeg, at jeg fylder en vigtig rolle som det eneste ikke-amerikanske medlem af bestyrelsen. BÄde for at fremme EuropÊiskeinteresser, men ogsÄ for at kunne hjÊlpe med at gÞre ODTUG til enrigtig international brugergruppe.

Hvis du er medlem af ODTUG og/eller kender andre ODTUG-med-lemmer, sĂ„ mĂ„ du/I endelig huske at stemme til det kommende valg.Stemmesedler vil blive sendt ud til alle medlemmer i lĂžbet af oktobermĂ„ned, sĂ„ hvis du ikke modtager den, mĂ„ du endelig kontakte ODTUGog fĂ„ en ny ([email protected]).

Er du endnu ikke medlem af ODTUG bÞr du seriÞst overveje at blivedet. ODTUG er uden diskussion den vigtigste brugergruppe for Oracle-udviklere, og de afholder ogsÄ den bedste Oracle-udvikler konferenceeen gang om Äret. Medlemskabet koster USD 125, hvoraf de USD 100gives retur i rabat, hvis man tilmelder sig konferencen. Se ogsÄ annon-cen om ODTUGs nye virtuelle konference pÄ bladets bagside.

Her til sidst skal jeg ogsÄ lige gÞre opmÊrksom pÄ at min kamp medTDC nu er endt med, at OracleEkspert og PYTHIA Information har fÄetsit oprindelige telefonnummer tilbage! SÄ efter fem mÄneder med etmidlertidigt nummer er det nu igen muligt at ringe til:

2627 9991

Oplag: . . . . . . . . . . . . . . . . . . .150 kopier

Udgives af: . . . . . . . . . . . . . . . .PYTHIA Information

. . . . . . . . . . . . . . . . . . . . . .Kongensvej 3 . . . . . . . . . . . . . . . . .2000 Frederiksberg . . . . . . . . . . . . . . . . . . . . . . . . . .Danmark

Telefon: . . . . . . . . . . . . . . . . . .2627 9991Email: . . . . . . . [email protected]: . . . . . . . . .www.OracleEkspert.dk

Ansvarshavende redaktĂžr: . . . . . . . . . . . . . . . . . . . .Marc de Oliveira

. . . . . . . . . . . . . [email protected]

Groans fra Mogens: . . . . . . . . . . . . . . . . . . .Mogens NĂžrgaard . . . . . . . . . . [email protected]

Bentes BĂžger: . . . . . . . . . . . . . .Bente Rosenkrantz-Theil . . . . . . . . . . . . [email protected]

Rettigheder:PYTHIA Information ejer alle rettigheder tilindholdet af OracleEkspert. Kopiering af bladet i dele eller helhed mÄkun ske efter skriftligt samtykke fraPYTHIA Information.PYTHIA Information forbeholder sig rettig-heder til at offentliggÞre og genudgive detrykte artikler, tips mv, samt at tillade blad-ets lÊsere at anvende indholdet til sÄvelpersonlige som kommercielle formÄl.PYTHIA Information kan ikke drages til an-svar for eventuelle fejl og mangler i Ind-holdet af OracleEkspert. Artikler mv stillestilrÄdighed uden garanti af nogen art.

Pris:Enkeltnummer . . . . . . . . . . . .DKK 300,001 Ă„rs abonnement (6 numre):1. abonnement . . . . . . . . . .DKK 1800,00Pr ekstra blad . . . . . . . . . . . .DKK 600,00

Annoncer:Annoncer til OracleEkspert skal vÊrePYTHIA Information i hÊnde senest den15. i mÄneden inden bladets udgivelse.

Annoncepriser kan findes pÄ:www.OracleEkspert.dk

LEDER

Password: iirbarttbd

af M

arc d

e Oliv

eira SÅ ER VALGKAMPEN I GANG

Page 3: Questioning Solutions Since 2OOO 2

Behovsanalyse“One main problem with short-circuiting the analysis process is that itleads to unnecessary complex systems. It is important to understandthat, while simple systems are much easier to build than complex ones,simple systems are much harder to design.” - David C. Hay

1. delDatamodellering

den 3.-4. november kl 9-16

Kurset giver et dybere kendskab tildatamodellering og forstÄelse forimplementering af en datamodel i enrelationsdatabase.

Der er ingen forudsaetninger for atkunne deltage.

2. delAvanceret systemanalyse

den 17.-18. november kl 9-16

Kurset er baseret pÄThe Zachman Framework*

og giver en forstÄelse for de mekanis-mer, der bringer udviklingsprojekterfrem til det Þnskede mÄl til den plan-lagte tid, pris og kvalitet.Det forudsaettes, at deltagerne harkendskab til datamodellering. Det erdog ikke en forudsaetning, at man hardeltaget i 1. del.

Tilmelding:www.PythiaInformation.com

eller 2627 9991

Dette seminar giver dig et overblik over hvilkemetoder, der bedst sikrer dig en simpel og holdbar

beskrivelse af virksomhedens egentlige behov.

*Kort om The Zachman Framework: VÊrdien i Zachmans metode er 1) at man i stedet for at tÊnke iudviklingsfaser, ser pÄ forholdene i virksomheden ud fra forskellige perspektiver (planlÊggerens, forret-ningsejerens, arkitektens, designerens og udviklerens), og 2) at man udover data og funktioner pÄ ligefod ogsÄ inkluderer steder, personer, tid og motivation i analysen. NÄr man kombinerer alle perspektivernemed fokusomrÄderne fÄr man en samlet matrix med et komplet billede af alle relevante oplysninger omvirksomhedens behov.

Underviser:Marc de Oliveira

Sted: Fensmarkrgade 3, 2200 Kbh N

Pris: 6.950 kr for begge dageOracleEkspert-abonnenter fÄr 500 kr i rabat

Tilmelding:www.DBVision.dkeller 3536 2144

Underviser:Bente Rosenkrantz-Theil

Sted: Fensmarkrgade 3, 2200 Kbh N

Pris: 6.300 kr for begge dage

Page 4: Questioning Solutions Since 2OOO 2

4 OracleEkspertOktober 2004

TEKNI

SKAR

TIKEL

Det er en kendt sag at Oracle gennemrigtigt mange Ă„r har leveret ’Statement-Level-Read-Consistency’, der sikrer at

alle data fra en select-sÊtning svarer til databasensindhold da select-sÊtningen startede, uanset hvor langtid det tager at afvikle select-sÊtningen, og uanset hvormange transaktioner der med DML Êndrer i grundla-get. Nuvel, hvordan sikrer man sig sÄ at flere SQL-sÊt-ninger i et udtrÊk er konsistent, enten fordi man ifbm.et datavarehus-udtrÊk skal have konsistens, eller fordiman af andre Ärsaget i en applikation vil vÊre sikker pÄat se et udtrÊk af en detail-tabel der matcher det udt-rÊk man for lidt siden foretog pÄ den tilhÞrende master-tabel.

Denne artikel diskuterer hvorledes en enkel anven-delse af flashback i Oracle Database 10g kan klaredette. Samtidigt peges pÄ et par enkelte potentiellefÊlder.

Lad os nu sige at vi er igang med at designe et enkeltdatavarehus, hvor vi f.eks. skal hente data fra voresgode gamle dept tabel (der her optrÊder som dimen-sion), samt fra emp tabellen (som her er en fact tabel).Antag ogsÄ at disse tabeller er forsynet med 2 ekstrafelter created_timestamp og modified_timestamp, forat kunne holde styr pÄ hvornÄr de enkelte rÊkker eroprettet og eventuelt Êndret.

alter table dept add created_timestamp timestamp(9);alter table dept add modified_timestamp timestamp(9);alter table emp add created_timestamp timestamp(9);alter table emp add modified_timestamp timestamp(9);update dept set created_timestamp = current_timestamp,

modified_timestamp = current_timestamp;update emp set created_timestamp = current_timestamp,

modified_timestamp = current_timestamp;alter table dept modify created_timestamp not null;alter table dept modify modified_timestamp not null;alter table emp modify created_timestamp not null;alter table emp modify modified_timestamp not null;

Nu er det relativt enkelt ved hjĂŠlp af en delta_loadstatus tabel (dl_status) at loade informationer fra empog dept over i emp_stage og dept_stage som er ĂŠnd-ret siden sidst:

create table dl_stage(table_name varchar2(30), ts timestamp(9));

insert into dl_stage(‘EMP’, to_date(‘1970-01-01’,’YYYY-MM-DD’);

insert into dl_stage(‘DEPT’, to_date(‘1970-01-01’,’YYYY-MM-DD’);

commit;

create table dept_stage asselect * from dept where rownum <1;

create table emp_stage asselect * from emp where rownum <1;

rem prepare a load

delete from dept_stage;delete from emp_stage;commit;

rem prepare the delta load

insert into dept_stageselect * from deptwhere modified_timestamp > (select ts from dl_stage where table_name = ‘DEPT’);

update dl_stageset ts =(select max(modified_timestamp) from dept_stage)

where table_name = ‘DEPT’;

insert into emp_stageselect * from empwhere modified_timestamp >(select ts from dl_stage where table_name = ‘EMP’);

update dl_stageset ts = (select max(modified_timestamp) from emp_stage)where table_name = ‘EMP’;

commit;

Nuvel – det fungerer fint – vores delta-udtrĂŠk burdetage sig af alle informationer, der er ĂŠndret siden sidst(nĂ„r man lige husker at tage hĂžjde for at tiden mĂ„skeer skiftet til vintertid, hvor der jo er lidt sjov fra kl 2 til 3om natten).

Men hvad nu hvis der var tale om mange del-udtrÊk,og flere rÊkker frå mere komplekse tabeller ellerviews, kunne vi sÄ ikke risikere, at vi efter at have star-tet pÄ det fÞrste del-udtrÊk, at der blev oprettet en nydepartment og flyttet medarbejdere til den, fÞr det sid-ste deludtrÊk blev afviklet?

Det ville jo ikke vÊre sÄ godt, for sÄ ville den andenselect finde medarbejdere tilhÞrende departments viikke kender, og det er jo ikke konsistent.

Det ville vĂŠre det bedste hvis vi kunne vĂŠre sikre pĂ„at begge selects fra emp og dept tabellerne blev afvik-let i en read-only transaktion, men det duer ikke her,da man i en sĂ„dan transaktion ikke mĂ„ anvende DML.Men hvad sĂ„ med kun at afvikle selve select’ene fraemp og dept fra samme databaseversion, mens selveinsert-operationerne er fremme i nutiden? Dette kanklares med databasens flashback facilitet (startendefra Oracle9i EE). Pointen er her at det kun er select-delen der hentes fra den nĂŠre fortid:

variable scn number;

select dbms_flashback.get_system_change_number() into scn from dual;

insert into dept_stageselect * from dept as of scn :scnwhere modified_timestamp >(select ts from dl_stage where table_name = ‘DEPT’);

update dl_stageset ts =(select max(modified_timestamp) from dept_stage)

where table_name = ‘DEPT’;

insert into emp_stageselect * from emp as of scn :scnwhere modified_timestamp >(select ts from dl_stage where table_name = ‘EMP’);

update dl_stageset ts =(select max(modified_timestamp) from emp_stage)

where table_name = ‘EMP’;

commit;

Nu vil “as of scn” (hvor scn netop stĂ„r for databasenssystem change number) sikre at de to select-sĂŠtning-er henter informationer fra den samme version afdatabasen. Dette lĂžser konsistensproblemstillingenuden at introducere lĂ„sninger af andre sessioner.

Men hvad nu hvis man vil foretage sĂ„dan et udtrĂŠkmed et produkt, der krĂŠver et source-objekt og et tar-get-objekt, hvor der i fĂžrste omgang ikke er tĂŠnkt pĂ„scn-numre (ala Oracle Warehouse Builder)? Hvordankan man indkapsle denne “as of scn” i et view?

I fÞrste omgang er det jo dejligt i manualen at se atscn-nummeret er en expression, sÄ vi prÞver med fÞl-

KONSISTENTE UDTRÆKMartin Jensen arbejder i Oracle Consulting. Han har siden 1982 arbej-det med bl.a. Oracle’s database-kerne, samt med forskellige aspekteraf objektorienteret systemdesign.Af

Mar

tin Je

nsen

Page 5: Questioning Solutions Since 2OOO 2

gende konstruktion (hvor tabellen save_scn er opret-tet med det formÄl at kunne gemme scn-nummeret):

insert into save_scn (old_scn)select dbms_flashback.get_system_change_number();

insert into dept_stageselect * from dept as of scn(select old_scn from save_scn)

where modified_timestamp >(select ts from dl_stage where table_name = ‘DEPT’);

Men den gÄr ikke: ORA-22818: subquery expressionsnot allowed here.

Hvad sĂ„ med at gemme scn-nummeret i en lokal pak-kevariabel og hente den til view’et med en funktion?

create or replace package consistent_read asprocedure set_scn ;function get_scn return number;

end consistent_read;/

create or replace package body consistent_read asl_scn number;

procedure set_scn asbegin

l_scn := dbms_flashback.get_system_change_number();end;

function get_scn return number asbegin

return l_scn;end;

beginl_scn := dbms_flashback.get_system_change_number();

end consistent_read;/

create view dept_v asselect * from dept as of scn consistent_read.get_scn;

create view emp_v asselect * from emp as of scn consistent_read.get_scn;

Og selve loaden:

insert into dept_stageselect * from dept_v where modified_timestamp >(select ts from dl_stage where table_name = ‘DEPT’);

update dl_stageset ts =(select max(modified_timestamp) from dept_stage)

where table_name = ‘DEPT’;

insert into emp_stageselect * from emp_vwhere modified_timestamp >(select ts from dl_stage where table_name = ‘EMP’);

update dl_stageset ts =(select max(modified_timestamp) from emp_stage)

where table_name = ‘EMP’;

commit;

Nu er selve flashback-delen gemt i view-definitioner-ne, sÄ diverse tools ikke skal brokke sig over dette. Ervi nu igennem?

Ikke helt. Det viser sig nemlig at denne metode medat anvende “as of scn” med en funktion kun accepte-res af 9i og 10g databasekernerne, hvis det er entabel og ikke et view der nĂŠvnes i from-delen. SĂ„ hvisobjekterne emp og dept ovenfor havde vĂŠret viewshavde konstruktionen givet en syntax-fejl. Dette ernaturligvis en bug. SĂ„ hvis man alligevel har brug fordenne konstruktion mĂ„ man enten folde view trĂŠet udeller anvende de egentlige scn-numre udenom funkti-onerne. For det er i grunden ikke sĂ„ vanskeligt atĂŠndre scn nummeret i en view-definition, selvom detjo ikke giver point at anvende DDL sĂŠtninger som endel af en drift-procedure:

create or replace procedure change_view(p_view_name in varchar2, p_scn in number ) ascursor_name integer;ret integer;ddl_string varchar2( 32000 );l_pos number;l_place number;l_first_pos number;l_last_pos number;

begincursor_name := dbms_sql.open_cursor;select text into ddl_stringfrom user_viewswhere view_name = upper(p_view_name) and rownum <= 1;

l_place := 0;l_pos := 0;loop

l_place := l_place + 1;l_pos := instr(upper(ddl_string),

‘AS OF SCN’,l_pos+1);exit when l_pos <= 0;

l_first_pos := l_pos + length( ‘AS OF SCN ‘ );l_last_pos := l_first_pos + 1;loop

exit when l_last_pos > length( ddl_string ) orsubstr( ddl_string, l_last_pos, 1 )

not between ‘0’ and ‘9’;l_last_pos := l_last_pos + 1;

end loop;ddl_string := substr(ddl_string,1,l_first_pos-1 )||

to_char( p_scn)||substr(ddl_string,l_last_pos,32000);

end loop;

ddl_string:= ‘create or replace view ‘||p_view_name||‘ as ‘||ddl_string;

dbms_sql.parse(cursor_name,ddl_string,dbms_sql.native);ret := dbms_sql.execute( cursor_name );dbms_sql.close_cursor( cursor_name );

end;/

Teknisk set virker alle de nÊvnte mekanismer fra ogmed Oracle9i, men pÄ grund af et mere omstÊndigtog ressourcekrÊvende check i 9i anbefales det fÞrstat anvende disse teknikker fra og med OracleDatabase 10g.

[Kodeeksemplerne kan hentes fra vores hjemmeside.Red.]

5OracleEkspert Oktober 2004

Systemanalyse - MetoderÄdgivning - ProjektplanlÊgning - Kvalitetssikring

www.PythiaInformation.com

Page 6: Questioning Solutions Since 2OOO 2

6 OracleEkspertOktober 2004

TEKNI

SKAR

TIKEL

MODERNE IT-PROJEKTERUndersÞgelser viser, at kun ca. 1 ud af 4 stÞrre IT-pro-jekter gennemfÞres blot nogenlunde som planlagt ogleverer sÄdan cirka den aftalte funktionalitet til noget inÊrheden af den aftalte tid og pris. 2 ud af 4 gen-nemfÞres med begrÊnset funktionalitet og/eller medvÊsentlige overskridelser af budget- og tidsrammer.Og den sidste fjerdedel? Ja, det er de projekter, deraldrig leverer noget som helst, der kan bruges. De bli-ver helt annulleret, ofte efter store summer er spildt.

MÊrkvÊrdigt nok synes situationen ikke at blive bed-re, selvom IT-branchen fÄr stÞrre og stÞrre erfaring.Og det er der to grunde til.

”FEATURE CREEP”Den fþrste grund er, at moderne IT-projekter er alt forambitiþse. Leverandþrerne, fagpressen og utalligewebsites samarbejder om at lovprise de fantastiskemuligheder med den seneste teknologi – og uden enmodererende indflydelse fra os fagfolk, kan forretnin-gen godt komme til at tro, at alting kan lade sig gþre.

Og rigtige programmÞrer synes naturligvis ikke det erspÊndende at opgradere gamle systemer. Systemin-tegration mellem det gamle og det nye system erkompliceret, sÄ det er lettere blot at anbefale at smidehele det gamle udokumenterede mÞg ud og starte for-fra.

”LIGE SOM DET GAMLE...”Den anden grund er, at moderne IT-projekter for detmeste erstatter allerede eksisterende systemer. Deskal fungere ”lige som det gamle” system, men medenkelte udvidelser.

Samtidig er det reglen snarere end undtagelsen, atdet gamle system ikke er blevet holdt a jour med denteknologiske udvikling. Undskyldningerne herfor ermange: Fra ”Vi har ikke rĂ„d/tid/lyst til at opgradere” til”det kĂžrer jo godt nok”.

Man lĂžber imidlertid en risiko ved at udskyde opgra-deringen. Det betyder nemlig, at et i sig selv over-kommeligt projekt med nogle mindre udvidelser mute-rer til et komplekst monsterprojekt, der skal opgrade-re databasen 3 hovedversioner, indfĂžre en applicationserver og ĂŠndre applikationen fra client/server til web– samtidig med, at der selvfĂžlgelig ogsĂ„ skal tilfĂžjesny funktionalitet.

FØRSTE CASEVirksomheden solgte finansielle produkter indenforopsparing og pension over telefonen og internettet.Det eksisterende primÊre forretningssystem varskrevet i PowerBuilder 5 til bestemte finansprodukter,men var siden blevet udvidet til at omfatte en rÊkke

nye produkter, som med forskellige tricks var blevetpresset ind i den eksisterende datamodel.

PĂ„ grund af markedsudviklingen (Ăžget konkurrence)Ăžnskede virksomheden at skifte til et mere fleksibeltsystem, hvor enkelte komponenter kunne kombinerestil et nyt finansprodukt. Dette skulle i idealtilfĂŠldetkunne ske helt uden programmering.

HVORDAN DET GIKVirksomheden startede med at forsĂžge at indkredseopgaven. Et hold af eksterne konsulenter med en vel-dokumenteret kravspecifikationsmetode blev sat til atlede en rĂŠkke workshops, der resulterede i en listeover ĂžnskvĂŠrdig funktionalitet. Da det eksisterendesystem havde kĂžrt i mange Ă„r uden gennemgribendeĂŠndringer, blev denne liste selvfĂžlgelig meget lang.

Derefter blev et andet konsulentfirma bedt om at giveet tilbud pÄ udvikling af dette system. Dette firma fore-slog at udvikle en Java-klient, og kom med en megethÞj pris. PÄ grund af opgavens omfang var det nÞd-vendigt at lade moderselskabet finansiere projektet,og efter lange forhandlinger blev en fast pris aftalt.

Den oprindelige plan lÞd pÄ at udvikle et nyt produkt-modul til nye finansprodukter, men da det efterhÄndenviste sig meget besvÊrligt at integrere det gamle ogdet nye system, endte man med at nyudvikle stÞrreog stÞrre dele, indtil opgaven omfattede hele detgamle system og al den Þnskede nye funktionalitet.

Det Þgede omfang betÞd selvfÞlgelig, at prisen ogudviklingstiden steg og steg. Projektet var efter 18mÄneder nÊsten klar til at sÊtte i drift, da virksomhe-den blev solgt til en konkurrent, der allerede havde etIT-system med den Þnskede funktionalitet. Og projek-tet blev skrottet.

OG HVAD KAN MAN SÅ LÆRE AF DET?Der fandtes et reelt forretningsbehov for at kunne rea-gere hurtigere. Imidlertid fandtes der ogsĂ„ en langrĂŠkke ophobede ĂŠndringsĂžnsker, som IT-afdelingenikke havde haft ressourcer til at implementere. DisseĂŠndringer og udvidelser fik sneget sig med i projek-tet, fordi der ikke blev foretaget en tilstrĂŠkkelig hĂ„rd-hĂŠndet sortering af Ăžnskerne i fĂžrste, anden og tred-je prioritet. Dette skyldtes, at man ikke regnede medat kunne fĂ„ ressourcer til at bygge anden og tredjerelease – sĂ„ derfor skulle det hele med i fĂžrste pro-jektforslag til moderselskabet.

Herudover var integrationen mellem den nye og dengamle teknologi ikke tilstrékkelig omhyggeligt gen-nemténkt og bevist med prototyper fra starten.Datamigration og integration med gamle systemertager lang tid – erfaringsméssigt omkring 50% afudviklingstiden for det nye system – og det var derikke afsat tid og ressourcer til. Det betþd, at man hen

HVORFOR IT-PROJEKTER FEJLER – OG HVORDAN MAN UNDGÅR DETSten Vesterli er partner i scott/tiger og arbejder til daglig som Oracle-konsulent. Sten har isĂŠr beskĂŠftiget sig med Oracle’s applicationserver – lige siden den hed Oracle Web Server 1.0 tilbage i 1996. IlĂžbet af Ă„rene har han prĂŠsenteret pĂ„ talrige internationale Oracle-konferencer og skrevet en lang rĂŠkke artikler samt bogen “OracleWeb Applications 101” (Oracle Press). [email protected]

Af St

en V

este

rli

Page 7: Questioning Solutions Since 2OOO 2

ad vejen mÄtte opgive det gamle system helt, hvilkentilfÞjede yderligere funktionalitet til et i forvejen megetstort og kompliceret system.

DÅRLIG KRAVSTYRING – I ALLES INTERESSE?NĂ„r styregruppe og projektleder ikke styrer kravenebenhĂ„rdt, vokser projektets omfang uundgĂ„eligt. Ogmens der ikke er penge til at finansiere vedligeholdel-se af gammel software, sĂ„ kan der til gengĂŠld oftebevilliges millioner til ny software. IsĂŠr et stort projekt,der kan revolutionere virksomheden og love guld oggrĂžnne skove,

Et lille projekt til etablering af en beskeden ny funktio-nalitet som f.eks. integration med et nyt partnersystemeller en lille forbedring af et eksisterende system vilselvfÞlgelig af og til blive bevilliget. Men nÄr det drejersig om store projekter, lÞber en lang rÊkke interessersammen:

- Da der er tale om et projekt, bliver hele projekt-teamet naturligvis ikke fastansat – der skal bru-ges eksterne konsulenter. Og konsulentvirksom-hederne har gode sélgere, der kan skrive enoverbevisende ”business case”, der beviser atvirksomheden ikke kan leve uden et stort (ogdyrt) nyt stykke software.

- IT-chefen har en lang rĂŠkke opgaver liggende –bĂ„de ĂŠndringer og almindelig oprydning – oghĂ„ber pĂ„ at fĂ„ gennemfĂžrt noget af det i et hjĂžr-ne af det store projekt.

- Virksomhedens egne IT-ansatte vil hellere medpÄ det ny projekt, og ser frem til at slippe for atkÊmpe med det gamle system. De har ingeninteresse i besvÊrlig paralleldrift af det gamle ogdet nye system.

Alle involverede har derfor interesser i at overbevisevirksomhedsledelsen om, at det rigtige er Ă©t kĂŠmpe-projekt til at erstatte hele det gamle system med etnyt.

ANDEN CASEVirksomheden solgte et system til pensionsadmini-stration. Systemet var baseret pÄ Oracle Forms ogblev 100% genereret fra Oracle Designer. Det havdeoprindelig vÊret Forms 4.5, men var siden opgraderettil Forms 6i i en web-konfiguration.

Af markedsfþringshensyn þnskede man at omléggeapplikationen til Java, idet Oracle Forms blev anset foret “gammeldags” vérktþj. Samtidig havde man enlang liste over þnsket ny funktionalitet, der skulle ind-fþres.

HVORDAN DET GIKBaseret pÄ den gamle versions funktionalitet og lÞftetom en ny Java-klient fik virksomheden en stor ordrefra en ny kunde.

Det stod hurtigt klart, at det ville vĂŠre umuligt at hĂ„nd-bygge det nĂždvendige antal skĂŠrmbilleder i Javaindenfor rimelig tid. En markedsundersĂžgelse fandtingen komplette vĂŠrktĂžjer, der kunne lĂžse denneopgave, men der fandtes en rĂŠkke frameworks, derkunne varetage visse funktioner. Projektet valgteOracle’s Business Components for Java (BC4J), dadette framework kunne generere en rĂŠkke af degrundlĂŠggende Java-komponenter baseret pĂ„ mod-

uldefinitioner i Oracle Designer. Da BC4J imidlertidikke kunne hjĂŠlpe ved udviklingen af selve klient-app-likationen, blev der igangsat et delprojekt til udviklingaf et klient-framework passende til BC4J.

Samtidig begyndte man at bygge den ny funktionali-tet. Det viste sig, at den eksisterende datamodelhavde en rÊkke mangler og uhensigtsmÊssighederophobet gennem applikationens 10-Ärige levetid, ogden ville ikke kunne understÞtte de nye krav. Det blevderfor efter lange diskussioner besluttet at kassereden eksisterende datamodel og bygge en ny. DettebetÞd selvfÞlgelig, at Designer-modellen ikke lÊngerekunne bruges som grundlag for BC4J-generering.Derfor mÄtte klient-frameworket nu fremstille og arbej-de ud fra BC4J-komponenter genereret pÄ baggrundaf tabeller i databasen i stedet for fra de mere detal-jerede designoplysninger i de eksisterende moduler iDesigner.

NÄr man nu havde muligheden for at starte forfra,besluttede man samtidig at begynde at bruge nogle afde objekt-relationelle funktioner i databasen, idetdisse syntes at tilbyde elegante lÞsninger pÄ forskel-lige problemer. Det viste sig dog efter et stykke tid, atOracle Designer ikke understÞttede disse tilstrÊkke-ligt. Det blev overvejet at droppe Oracle Designer helt,men man valgte i stedet at kassere dele af datamod-ellen og starte forfra endnu en gang.

Klient-framework’et havde i mellemtiden kĂŠmpet medde mange bugs i BC4J, der helt Ă„benbart aldrig fĂžrhavde vĂŠret brugt til mere end EMP og DEPT i enĂŠgte trelags-arkitektur. Men efter et par bugfixes fraOracle var man kommet godt fremad, selvom mang-len pĂ„ datamodel betĂžd, at man ikke kunne begyndeat bygge de egentligt applikationsskĂŠrmbilleder.

Nu var der desvÊrre efterhÄnden gÄet lang tid ogbrugt mange ressourcer. Og da der ikke var leveretnoget til kunden, forfaldt der ingen rater til betaling. Ogvirksomheden lÞb tÞr for penge og gik fallit.

OG HVAD KAN MAN SÅ LÆRE AF DET?GrundlĂŠggende havde man lovet kunden mere endman kunne holde ved at vĂŠlge Java uden pĂ„ forhĂ„ndat sikre sig, at applikationen overhovedet kunneudvikles i Java pĂ„ rimelig tid. Man forsĂžgte at rĂ„debod pĂ„ dette ved at bruge BC4J og udvikle et egetframework, men selv med de bedste frameworks lig-ger produktiviteten ved Java-udvikling stadig langt,langt under den produktivitet, vi er vant til fra OracleDesigner og Oracle Forms.

Derudover forsĂžgte man at bruge relativt nye funk-tioner pĂ„ centrale steder i arkitekturen (Oracle objekt-typer, BC4J) baseret pĂ„ Oracle’s lĂžfter og whitepa-pers i stedet for selv at bevise dem med konkrete pro-totyper.

Og endelig var applikationen simplethen blevet forkompliceret til at kunne nyudvikles pÄ én gang.Allerede den gamle datamodel var sÄ kompliceret, atingen havde det fulde overblik, og nÄr hele modellenpludselig blev lagt ud til diskussion sammen med enlang rÊkke nye krav om fleksibilitet og tilpasningsmu-ligheder, var det nÊrmest umuligt at fÄ fastlagt en nyarkitektur.

DÅRLIG RISIKOSTYRINGNĂ„r et projekt kuldsejler, sker det som oftest fordi det

7OracleEkspert Oktober 2004

Page 8: Questioning Solutions Since 2OOO 2

8 OracleEkspertOktober 2004

alt for sent viser sig, at centrale antagelser ikke holder.Og processen, der skal undgÄ det, hedder risikosty-ring. Risikostyringen skal identificere alle risici medsandsynlighed, konsekvenser og afhjÊlpning. Det eren helt almindelig proces, som enhver projektlederengang har lÊrt, sÄ det burde ikke vÊre sÄ svÊrt.Imidlertid er der bestemte risici, der ofte bliver under-vurderet.

NY TEKNOLOGIDet burde ikke undre nogen professionel program-mĂžr, at ny teknologi oftest ikke virker helt som lovet.Imidlertid forsĂžmmer mange projekter at bevise nyteknologi med en prĂŠcis prototype. PrĂŠcisionen erafgĂžrende – for at bevise teknologi, skal man brugeden pĂ„ prĂŠcis samme mĂ„de som man har tĂŠnkt sigi projektet. Det krĂŠver altsĂ„ en testopsĂŠtning medden samme fordeling af komponenter pĂ„ fysiskemaskiner og realistisk kompleksitet.

Business Components for Java virkede for eksempeludmÊrket for smÄ applikationer (EMP/DEPT), men etrealistisk skÊrmbillede med master-detail-detail-detail-detail-detail, deployet pÄ fysisk separate maski-ner til klient, applikationsserver og databaseserverdemonstrerede, at teknologien ikke fungerede (vi fiken one-off patch fra Oracle, der sikkert siden er indar-bejdet i produktet).

DesvĂŠrre bliver netop prĂŠcisionen ofte forsĂžmt –programmĂžren Ăžnsker jo, at det virker, og gider ikkeopsĂŠtte et kompliceret testmiljĂž. Og derfor bliver nyteknologi ”bevist” med EMP/DEPT pĂ„ en laptop. Ogdet holder altsĂ„ ikke...

UKENDTE KRAVDen nye funktionalitet er normalt velovervejet og vel-dokumenteret. Men i det omfang det nye system skalvirke ”lige som det gamle” er det afgĂžrende, at man pĂ„den ene eller anden mĂ„de dokumenterer, hvad dettebetyder.

Som oftest er den gamle kode skrevet over en ÄrrÊk-ke af en lang rÊkke programmÞrer, hvoraf de flesteikke lÊngere arbejder for virksomheden. Derudoverer koden normalt ogsÄ dÄrligt dokumenteret (hvisoverhovedet). Man kan selvfÞlgelig nedskrive en bru-gers forklaring af, hvordan koden virker, eller man kanforsÞge at udlede forretningslogikken fra source-koden. Men den bedste lÞsning er at dokumenteresystemets funktion med testcases.

TEKNOLOGISPRINGLeverandĂžrerne drejer stadig softwaremĂžllen hurtig-ere og hurtigere – nye hovedversioner lanceres hvertĂ„r, og forrige Ă„rs version bliver desupportet til nytĂ„r
I kampen om markedsandele bliver produkterne virke-lig bedre, lettere at bruge og at administrere. Men fordien kunde med supportkontrakt ikke betaler for dennye version, giver en ny version i sig selv ikke ny ind-tjening til leverandĂžren. Og derfor er der ikke penge tilat vedligeholde gamle versioner – de bliver overfĂžrt tilen eller anden form for stĂŠrkt begrĂŠnset support sĂ„hurtigt som muligt.

Lige som der normalt ikke er budget til oprydning ikoden, er der normalt heller ikke budget til atopgradere til nye versioner. Derfor kommer IT-projek-ter, der handler om ny funktionalitet, til at udlĂžse

mange Ă„rs opsparet opgraderingsbehov. LeverandĂž-ren tilbyder normalt en opgraderingsvej fra den forrigeversion og til den nyeste – men virkeligheden er, atmange projekter Ăžnsker at gĂ„ fra Forms 4.5 til Forms10g, samtidig med at databasen skal fra 7.3 til 10g, ogder iĂžvrigt lige skal indfĂžres en applikationsserver. Ogkompleksiteten i disse mega-opgraderinger gĂžr demmeget svĂŠre at styre.

ET VELLYKKET IT-PROJEKTLad os nu i stedet forestille os et vellykket IT-projekt.Virksomheden har et egenudviklet primĂŠrt forret-ningssystem skrevet i Oracle Forms 4.5 og anvendt ien client/server konfiguration. Systemet opfylder ikkelĂŠngere virksomhedens krav, og et opgraderingspro-jekt er blevet ivĂŠrksat. Det er blevet besluttet at byggeet nye system i en moderne trelagsarkitektur medJava-klienter. Eriksen, som er direktĂžr for virksomhe-den, har ansat Lene som projektleder.

FORVENTNINGERNE SÆTTESLene starter med at gennemgĂ„ estimaterne. Hun kon-staterer, at der hverken er afsat tid til teknologiafprĂžv-ning eller dokumentation af det gamle system, og for-tĂŠller pĂ„ det fĂžrste mĂžde projektets styregruppe, atressourcerne er utilstrĂŠkkelige. Helge, der er regn-skabschef, gĂžr det helt klart, at virksomheden ikke harrĂ„d til et dyrere projekt. Lene har imidlertid forberedtsig grundigt, og prĂŠsenterer en ajourfĂžrt projektplan,hvor der er afsat tid til teknologiafprĂžvning og doku-mentation af det gamle system. Til gengĂŠld er en heldel af funktionaliteten flyttet til ”version 2” og ”version3”, som der ikke er afsat ressourcer til. Efter nogendiskussion bliver det vedtaget at fĂžlge Lenes revide-rede plan.

TEKNOLOGIEN AFPRØVESLene sÊtter straks to programmÞrer til at finde ud af,hvordan man kan kalde den nye Java-kode fra dengamle Forms-applikation og omvendt. Der er forskel-lige muligheder, men bÄde Java og Forms harmulighed for at udfÞre programmer pÄ klienten somfra en kommandolinie, og fordi denne metode er sim-plest, bliver den valgt.

KRAVENE DOKUMENTERESLene har allerede lÊst kravdokumentationen og harkonstateret, at den nye funktionalitet gennemgÄendeer godt specificeret, men for mere end to tredjedelesvedkommende henviser specificikationen blot til detgamle system. Imidlertid findes der ikke lÊngerenogen ajourfÞrt dokumentation af, prÊcis hvordan detgamle system virker.

Lene sÊtter sig derfor sammen med testlederen ogudvalgte superbrugere for at fremstille en prioriteretliste over testcases til at dokumentere bÄde det gamlesystems funktionalitet og den Þnskede nye funktion-alitet.

PATIENTEN STABILISERESNu etablerer Lene en komplet indkapsling af detgamle system. Der bliver oprettet et nyt database-skema med views direkte oven pÄ tabellerne ogINSTEAD-OF triggere, og med nye PL/SQL-pakker,der blot kalder de gamle. Herefter bliver applikationen

Page 9: Questioning Solutions Since 2OOO 2

Êndret, sÄ den bruger det nye API-lag. Denne Þvelsebliver udfÞrt over en weekend, og den afslÞrer mangehardwirede skemanavne rundt omkring i koden. Mensent lÞrdag aften er alle pakker gyldige og applikation-en kÞrer. SÞndag kÞres den automatiserede test afden gamle funktionalitet, som kun finder smÄting. Debliver rettet, og mandag morgen kÞrer applikationenuÊndret.

KOMMUNIKATIONPĂ„ et styregruppemĂžde fremlĂŠgger Lene resultater-ne af den automatiserede test af det gamle systemefter indkapslingen. Hun fremhĂŠver, at testen har fun-det nogle fejl i det eksisterende system, og man nuhar et godt grundlag for at begynde at bygge det nyesystem.

Helge er imidlertid stĂŠrkt utilfreds: “Nu er der brugt40% af budgettet, og hvad har vi fĂ„et? Det sammesystem som vi hele tiden har haft!” Lene forklarer, atde automatiserede tests under alle omstĂŠndighedervar nĂždvendige, og at alle projektets vĂŠsentliguklarheder nu er fjernet – Helge er dog ikke overbe-vist.

FREMAD TRIN FOR TRINTil det allerfÞrste skÊrmbillede i det nye system harLene valgt administration af bogfÞringskoder. Det erdet simpleste skÊrmbillede i hele applikationen,baseret pÄ en enkelt underliggende tabel, og brugestemmelig sjÊldent.

Det viser sig selvfĂžlgelig at vĂŠre svĂŠrere end fĂžrstantaget – der er problemer med lĂ„sning af records,nĂ„r flere brugere bruger skĂŠrmbilledet samtidig. Dettager et par dage at finde fejlen, og den kodegenera-tor, der producerer Data Access Objects, mĂ„ ĂŠndres.Men sĂ„ kĂžrer skĂŠrmbilledet ogsĂ„.

Det bliver bundet ind i den eksisterende applikation forat teste integrationen, og det virker fejlfrit. Lene inviter-er alle projektdeltagere til “Release-party 0.1”. Eriksentakker projektet for indsatsen til dato, mens Helgebrummer lidt over at det skal vĂŠre sĂ„ dyrt at udvikleden smule funktionalitet.

Nu bygger Lenes programmÞrer sÄ de nÊste skÊrm-billeder et ad gangen, og sÊtter dem lÞbende i drift ismÄ delleverancer. Fordi den gamle funktionalitet erfuldstÊndig indkapslet, kan holdet lidt efter lidt fÄ ryd-det op i det gamle systems datamodel og kode udenat ÞdelÊgge det gamle system. Og hver gang en nyrelease sÊttes i drift, gÞres det i weekenden, sÄ derer tid til at kÞre alle de automatiske testcases og retteeventuelle fejl, fÞr brugerne mÞder mandag morgen.

VERSION 1.0 SÆTTES I DRIFTLige sĂ„ stille er al den funktionalitet, som Lene havdeskrevet pĂ„ fĂžrste version i sin reviderede plan, sat idrift. Selv Helge er tilfreds med applikationen, selvomhan har en lang rĂŠkke forbedringsforslag, der erskrevet pĂ„ listen til en senere release. Der er ingensĂŠrlig risiko forbundet ved den sidste delleverance,der fĂ„r versionsnummer 1.0 – bortset fra risikoen fortĂžmmermĂŠnd efter release-festen


KONKLUSIONIT-projekter fejler pÄ grund af dÄrlig kravstyring ogdÄrlig risikostyring. DÄrlig kravstyring medfÞrer kÊm-peprojekter, der skal kunne alt pÄ én gang. Og dÄrligrisikostyring betyder, at projektet risikerer at mis-lykkes, fordi det fÞrst alt for sent opdages, at centralekomponenter i lÞsningen ikke fungerer.

Kravstyring og risikostyring er klassiske disciplinerindenfor projektledelse, sÄ projektkatastrofer skyldesikke manglende viden om projektledelse. Det er blotmeget svÊrt at gennemfÞre god kravstyring og risiko-styring.

LÞsningen, der afhjÊlper disse problemer, er at tagesmÄ trin. Det er meget let at tage for store trin, blot forat konstatere at hele projektet er mislykkedes. Mendet er nÊsten umuligt at tage for smÄ trin: AfprÞv enenkelt teknologi, byg en enkelt testcase, isolér enenkelt del af applikationen, byg det simplest muligeskÊrmbillede. Og planlÊg hele tiden at kunne kÞredet nye og det gamle system parallelt.

SmÄ trin!

9OracleEkspert Oktober 2004

Vinder af OracleEkspert-prisen 2003Vinderen af OracleEkspert-prisen 2003 blev LauraBoyd fra LabOne. Hun vandt prisen for sin meget kon-krete artikel “Running the Rapids - Extreme SCM” omimplementeringen af SCM (Software ConfigurationManagement) i en stor organisation med meget for-skellige udviklingsmiljþer og hþj opdateringshyppig-hed.

Artiklen blev bragt i OracleEkspert nr 20 fra oktober2003.

Laura Boyd vandt ogsĂ„ “Editor’s Choice Award” pĂ„ODTUG 2003 for den samme artikel.

Billeder

Page 10: Questioning Solutions Since 2OOO 2

Denne lille artikel er skrevet som en(lidt kort) opsummering af tanker ogobservationer jeg har gjort mig i detsidste Ă„rs tid. Flere af tingene har jeg

vÊret inde pÄ i tidligere skriverier. Nogle af tingenehar jeg diskuteret med flere af jer. Det er isÊr pÄ sinplads her at takke Kim Alex Olsen for et par godediskussioner.

Jeg tror det er et emne vi kommer til at snakke en delom i de kommende Ă„r, og derfor er reaktioner og erfa-ringer velkomne.

DAVE, GRAHAM OG KUNDENTil UKOUG-konferencen sidste Ă„r i Birmingham holdtDave Ensor sit sidste foredrag (endnu engang), ogkom godt omkring i emnet tuning/optimering.

Hen imod slutningen af foredraget sagde han henka-stet, at han ville Ăžnske, at folk ville holde op med at ana-lysere tabeller og indexer hele tiden. Og han fortsatte:

’Jeg ved mĂ„ske ikke sĂ„ meget om databaser, men jegved dog fĂžlgende:

- Store tabeller forbliver som regel store- SmÄ tabeller forbliver som regel smÄ- Unikke indexer forbliver unikke- Non-unikke indexer forbliver non-unikke

Jeg var rystet. Hele mit (Oracle-)liv har jeg belÊrt migselv (og andre) om, at man fra 8i endelig kan sÊttenoget automatik pÄ statistik-opsamlingen (alter table xmonitoring) og fra 9i kan man det ogsÄ med indexer.Og sÄ var det jo bare at sÊtte dbms_stats.gather_-stale_statistics igang ...

Og sÄ siger Dave Ensor pludselig, at vi skal holde opmed at analysere! Dér rÞg dét verdensbillede.

Jeg lavede lige sĂ„dan et lille sanity check hos AnjoKolk pĂ„ vej ud af foredragssalen. Jamen, det er rigtigtnok, svarede han – folk analyserer hele tiden, og deter slet ikke nĂždvendigt.

Hmm.

SÄ bragte jeg emnet op pÄ Oracle-L listen og modtogrigtigt mange reaktioner pÄ det. Og en follow-up pÄOakTable-listen var ret sjov:

Graham Wood fra Development (chef-arkitekt, etc.)fortalte, at da han satte den database op, som hĂžrte tilOracle’s globale mail-system (40000 brugere ellermere, og en hel del mails, skulle jeg hilse og sige) sĂ„importerede han statistikkerne fra test-databasen, oghavde iĂžvrigt ikke rĂžrt mere ved dem i de sidste parĂ„r. Han fortalte ogsĂ„, at DBMS_STATS udviklerne vartossede over det. Men systemet kĂžrte (kĂžrer) stabiltog forudsigeligt â˜ș.Ser man det.

Kort efter (det kommer altid i byger – korte byger) taltejeg med en dansk kunde, der havde nogle problemermed noget statistik-generering pĂ„ nogle nye indexer.Jeg spurgte om deres procedure for at samle stati-stikker, og fik at vide, at ved en fejl var statistik-jobbetikke blevet kĂžrt i to Ă„r.

Det her var/er vel at mĂŠrke et meget travlt og meget

vigtigt system. Normalt ville jeg jo bare have grinethÞjt og foreslÄet dem, at de kom igang med at samleordentlige statistikker.

Istedet spurgte jeg, hvordan det havde kĂžrt? Rigtigtgodt, var svaret. Brugerne har vĂŠret meget tilfredse.

Javel sÄ.

HEURISTICS, PARAMETRE OG STATSDer er tre ting, der hjĂŠlper Oracle’s Cost-BasedOptimizer (CBO) til at trĂŠffe beslutninger om ekse-kveringsplaner: Regler i Oracle’s kode (diverse kon-stanter, ogsĂ„ kaldet heuristics, nĂ„r det skal vĂŠre fint),parametre (init.ora og dens forskellige inkarnationer)og statistikkerne pĂ„ tabeller og indexer.

Hvis ingen af disse ting forandrer sig, sĂ„ vil det vĂŠreden samme eksekveringsplan hver gang – lige sommed den regel-baserede optimizer, men naturligvisbaseret pĂ„ bedre oplysninger end blot ”Hey, der findeset index, som jeg kan bruge – sĂ„ gĂžr jeg det!”.

Er det godt? AltsÄ, at eksekveringsplanerne ikke for-andrer sig?

It depends.

Hvis SQL’erne (og dermed applikationen) opfĂžrer sigpĂ„ samme mĂ„de hver gang, sĂ„ er det forudsigeligt ogdermed godt. Hvis der er een slags spĂŠnding i til-vĂŠrelsen, som rigtige brugere af databasebaseredesystemer meget nemt kan leve uden, sĂ„ er det omapplikationen i dag kĂžrer ligesom i gĂ„r, eller hurtigere,eller langsommere.

PĂ„ den anden side duer det jo heller ikke at en ekse-kveringsplan (f.eks. en full table scan) pludselig bliver10 gange dyrere fordi tabellen blev ti-doblet i stĂžrrelse.

Hvor meget kontrol har vi over disse tre ting – heuristics,parametre og statistikker? Ja, de to sidste kan vi ihvert-fald holde fingrene fra. Det er vérre med heuristics.

Jeg ved, at HÄkon Jakobsson, som er ansvarlig forCBO-koden, mener det godt, og han og hans guttergÞr vitterligt ogsÄ et fantastisk stykke arbejde.

DesvĂŠrre er det ikke nĂždvendigvis fedt for alle, at de(HĂ„kon og gutterne) checkede rigtigt mange forbed-ringer ind i 9.2.0.5. NĂ„r man ”bare” gĂ„r fra 9.2.0.4 til9.2.0.5 kan der derfor ske en hel masse sjove tingmed ens applikationer. Herregud – det er da bare enpatch pĂ„ 4. ciffer, ikke?

SĂ„ fĂ„r vi performance-kriserne, hvor nĂždlĂžsninger iform af hints, fjernelse af statistikker, hastige tilbagetogtil den regelbaserede optimiser og stored outlines lyn-hurtigt bliver lagt pĂ„ efter en mere eller mindre effektivproces, hvor man prĂžver at finde ud af, hvorfor ap-plikationen A pludselig kĂžrer dĂ„rligt. Den der ”groundhog day tuning”, hvor man begynder forfra hver gang...

Jeg kender kun Ă©n lĂžsning (hvis man da kan kaldeden det), og det er overvĂ„gning af SQL’ernes ekse-kveringsplaner, sĂ„ man fĂ„r slĂ„et alarm, nĂ„r de foran-drer sig. Men det er svĂŠrt, f.eks. i miljĂžer med dyna-misk SQL, og som Kim Alex Olsen sĂ„ rigtigt sagde:”Problemet er, at jeg kan ikke foreslĂ„ noget bedre”, dajeg snakkede om det her pĂ„ Trekroner.

10 OracleEkspertOktober 2004

TEKNI

SKAR

TIKEL HOLD OP (MED AT ANALYSERE)

Mogens NĂžrgaard er teknisk direktĂžr for Miracle A/S. Du kan kontak-te ham pĂ„ [email protected].

Af M

ogen

s NĂžr

gaar

d

FortsĂŠtter side 21

Page 11: Questioning Solutions Since 2OOO 2
Page 12: Questioning Solutions Since 2OOO 2

12 OracleEkspertOktober 2004

INDLEDNINGEn rÊkke forhold har i de senere Är bevirket, at DataMining (DM) som metode er blevet en attraktiv mulig-hed til lÞsning af de informationsmÊssige udfordrin-ger, som virksomheder og virksomhedsledere stÄroverfor i dag.

- Mange virksomheder har opbygget store DataWarehouses, som indeholder Terabyte af data,og ufattelig meget information, der kan kommevirksomheden til gavn og have en afgÞrendebetydning for bundlinien. Skal en leder eller virk-somhedsanalytiker overskue informations-mÊngden i et Corporate Data Warehouse, skalvedkommende holde styr pÄ utrolig mangedimensioner. DM giver mulighed for, at manreducerer de dimensioner vÊk, som ikke harsignifikant betydning for de forretningsspÞrgs-mÄl, man som leder eller analytiker sÞger atbesvare, og DM kan herved forsimple lede-rens/analytikerens opgave med at fÄ overblikover den viden, der findes i virksomhedens DataWarehouse.

- DM vĂŠrktĂžjer er i dag tilgĂŠngelige som ’opensource’ vĂŠrktĂžjer pĂ„ nettet (f.eks. R-Project).Det betyder, at DM, nu hvor Ăžkonomien i et kost-bart DM vĂŠrktĂžj ikke lĂŠngere spiller en rolle,kan benyttes af langt flere end tidligere. At DMsom teknologi kommer ud til en stĂžrre bruger-skare betyder ogsĂ„, at anvendelsen af teknolo-gien kommer ud over det sikkerhedsnet, somudgĂžres af leverandĂžrens konsulenter og anbe-falede metoder (eks. SAS’s SEMMA model).Den lette adgang til DM vĂŠrktĂžjer, gĂžr det ekstravigtigt at fokusere pĂ„ DM som proces fordi, kunved at fĂžlge en veldokumenteret proces opnĂ„sden Ăžnskede gevinst af DM.

- De metoder, der understÞttes af et DM vÊrktÞj,har undergÄet store forbedringer, og nye teknik-ker er kommet til (eks. tekst analyse, genetiskealgoritmer). DM som teknik er modnet meget ogkan nu indfri de forventninger om Þget mersalg,forudsigelse af kundeadfÊrd, etc., der er knyttettil anvendelsen af teknikken.

For at DM skal blive den succes, som alle forventer,er det nÞdvendigt at fokusere pÄ processen i anven-delsen af DM fordi, lige sÄ lidt som en skruetrÊkkerlapper en cykel, lige sÄ lidt giver et DM vÊrktÞj demodeller der kan betyde mange penge pÄ bundlinien.

DATA MINING, VÆRKTØJ ELLER PROCES?DM omrĂ„det er omgivet af mange myter og historier,som er med til at give et urealistisk billede af DM sommetode. Disse myter og historier er desvĂŠrre ogsĂ„med til at sĂŠtte urealistiske forventninger hos bruger-ne til resultaterne af DM.

MYTER OG REALITETERForventningerne til DM er som oftest tÄrnhÞje. NÄrbeslutningstagere fÄr prÊsenteret DM pÄ konferencereller hos leverandÞrer, fokuseres der ofte kun pÄ DMvÊrktÞjet, som demonstreres pÄ en begrÊnset data

mÊngde, der er tilrettelagt sÄledes, at der let kanopstilles en model pÄ data. Ydermere fremgÄr detsom oftest af demonstrationen af vÊrktÞjet, at derikke krÊves specielle kvalifikationer at komme frem tilen model. SÄdanne prÊsentationer efterladerbeslutningstageren med det indtryk at:

Data Mining er en fĂŠlles betegnelse for enrĂŠkke vĂŠrktĂžjer, der sĂŠtter den utrĂŠnede bru-ger i stand til at udvikle modeller for kundersreaktionsmĂžnstre (churn, mersalg, levetid,scorecard etc).

Realiteten er derimod at:Data Mining er en proces. Data Mining vĂŠrktĂžjeter en hjĂŠlp til at foretage simple beregninger.Meget vigtigere end vĂŠrktĂžjet er en solid viden istatistik, vidensbaserede systemer og forretnings-viden.

Som Data Miner bliver man ofte mĂždt med fĂžlgendeholdning: ”Kan du ikke lige lave en mersalgsmodel tili morgen?”. Svaret er “nej”; men hvorfor stilles et sĂ„urealistisk krav? Efter min mening er det fordi spĂžrge-ren ligger under for en anden udbredt myte:

Du sidder med din bÊrbare og peger og klikker,og pludselig finder du modellen, som f. eks for-udsiger hvilke kunder, der vil opsige deres abon-nement i nÊste mÄned

Realiteten er derimod at:Analyse af data og modellering er hÄrdt arbejde,som:

‱ typisk foregĂ„r pĂ„ servere, ‱ ikke er interaktivt‱ krĂŠver lang tids forberedelse for at forstĂ„ og til-

rettelĂŠgge data

Grunden til forvirringen er efter min mening ukend-skab til DM definitionen.

DATA MINING DEFINITIONDer findes mange definitioner pÄ DM, som alle mereeller mindre siger det samme. I denne artikel, vil DMblive defineret som:

Data Mining is the process of analyzing detaileddata, to extract and present actionable, implicit,and novel information to solve a business pro-blem

Definitionen fremhÊver, at DM ikke er en aktivitet,som udfÊrdigelsen af en frekvensanalyse eller enkrydstabulering; men derimod en proces. ProcessenbestÄr i at analysere detaljerede data, for at identifice-re handlingsorienteret information. Vigtigt er det ogsÄ,at DM-processen tager udgangspunkt i at lÞse et for-retningsproblem, og at den information, som er resul-tatet af DM-processen, er svaret pÄ spÞrgsmÄlet, somprocessen tager sit udgangspunkt i.

CROSS INDUSTRY STANDARD PROCESS FORDATA MINING - CRISP-DMCRISP-DM er resultatet af et projekt under EU-kom-missionens strategiske IT forskningsprogramESPRIT. Projektets formÄl var at udvikle en proces for

DATA MINING I PRAKSIS - EN PROCES ORIENTERET INDFALDSVINKELJens Heile Hejlesen, Business analyst, GE Capital Bank, [email protected]

TEKNI

SKAR

TIKEL

Af Je

ns He

jlese

n

Page 13: Questioning Solutions Since 2OOO 2

13OracleEkspert Oktober 2004

DM. Projektet havde deltagere fra: NCR (DK ogUSA), Daimler Benz (D), OHRA (NL) og SPSS (UK).Resultatet af projektet, som forelÄ i slutningen af Är2000, blev meget positivt modtaget af de store aktÞrerpÄ Data Warehouse omrÄdet, og hovedparten af depersoner, der arbejdede professionelt med DM.Processen er senere blevet en de-facto standard ogbenyttes i dag af mere end 50% af alle verdens DMprojekter (se www.Kdnuggets.org poll).

OVERSIGT OVER CRISP_DMCRISP-DM procesmodellen er illustreret pÄ neden-stÄende figur (figur 1).

Den fuldoptrukne ydre ring symboliserer de basalekarakteristika ved DM. Som proces er DM grund-lĂŠggende iterativ, man gennemlĂžber en rĂŠkke aktivi-teter og afdĂŠkker viden, som ikke eksisterede vedprocessens start. Med ny viden kan man nu forbedremodellen, hvorved en ny iteration startes, etc.

Rektanglerne inden i den ydre cirkel symbolisere faseri DM-processen, som igen er opbygget af aktiviteter.

I det efterfĂžlgende gives en kort beskrivelse af deenkelte faser:

Business Understanding:I den initielle fase fokuseres der pÄ at forstÄ og klar-lÊgge det forretningsspÞrgsmÄl, som danner grund-laget for DM-projektet. Man forsÞger at evaluere omforretningsspÞrgsmÄlet lader sig besvare pÄ andremÄder end ved resultatet af et DM-projekt. Besluttesdet at gÄ videre med et DM-projekt, vil denne fasefastlÊgge kravene til den resulterende model (dvs.nÞjagtighed, lift, return of investment, etc.). Som out-put fra fasen udarbejdes en projektplan for det efter-fÞlgende DM-projekt.

Data Understanding:Fokus i fasen er at etablere det datagrundlag, manskal bygge sin model pĂ„. Arbejdet bestĂ„r i at indsam-le data, der er relevant for problemstillingen samt atforstĂ„, hvordan disse data kan indgĂ„ i modelarbejdet.ForstĂ„elsesprocessen lettes meget ved at inddragepersoner, som arbejder med problemet til daglig(f.eks. sidder i virksomhedens call center, sĂŠlgere,salgssupportere etc.). Disse ‘subject matter experts’ligger som regel inde med en grundlĂŠggende videnom relationer i data samt iagttagelser, der kan hjĂŠlpe

data mineren med at forklare den kundeadfĂŠrd, derforsĂžges modelleret.

Data PreparationData Preparation fasen bestĂ„r af de aktiviteter, dermedgĂ„r til at tilrettelĂŠgge data sĂ„ledes, at de kandanne grundlag for modelleringen. Ved tilrettelĂŠggel-sen af data, skal man vĂŠre opmĂŠrksom pĂ„ demodelleringsteknikker, man efterfĂžlgende vil bruge,idet teknikkerne ofte stiller krav til typen af data (kate-gorisk, numerisk, etc.). I fasen vil der typisk blive tagetstilling til, hvorledes ’missing values’ og ’outliers’ skalbehandles. Foranlediget af en model vil man oftevende tilbage til ’Data Preparation’ fasen og ĂŠndre pĂ„data eller foretage data transformationer (eks. norma-lisering af en variable, transformationer der afspejlerforretningsregler), som forbedrer de modeller, manarbejder med.

ModellingFormĂ„let med fasen er at udvikle modellerne. Man vilsom oftest vĂŠlge forskellige modelleringsteknikker ogudvikle konkurrerende modeller for samme forret-ningsspĂžrgsmĂ„l. Modellerne sammenlignes for at se,hvilken teknik virker bedst pĂ„ data. Arbejdet i dennefase vil medfĂžre, at man tilegner sig ny viden om detomrĂ„de der modelleres, og det kan anbefales at holdejĂŠvnlige mĂžder med ‘subject matter experts’ for at fĂ„deres rĂ„d om, hvilken retning modelleringen skal tage,og for at fĂ„ et ’reality check’ pĂ„ de resultater modelar-bejdet afstedkommer. Modelarbejdet vil ofte afslĂžre,at der mangler variable i datagrundlaget, i hvilke tilfĂŠl-de man mĂ„ gĂ„ tilbage til ’Data Understanding’ fasenog etablere et nyt datagrundlag.

Efter et stykke tid vil man have udviklet en hÄndfuldmodeller, som i det store hele har de Þnskede karak-teristika, og arbejdet vil nu tage sigte pÄ at optimeremodelparametre, sÄledes at modellerne bliver bedstmulige.

EvaluationForud for denne fase har man opbygget sin model, ogudfordringen er nu at evaluere modellen for at fÄ etindtryk af, hvorledes modellen vil performe pÄ produk-tionsdata. FÞr modellen sÊttes i drift, er det vigtigt atevaluere de skridt og den information, der er brugt iDM-processen. MÄlet er at sikre at forretningsspÞrgs-mÄlet, som har dannet grundlag for modeludviklingen,bliver besvaret af modellen. En vigtig aktivitet i fasener at udvikle en prÊsentation rettet mod managementaf modellen. MÄlet med prÊsentationen og evalue-ringsfasen er, at management giver grÞnt lys for atmodellen sÊttes i drift.

DeploymentUdvikling af en DM-model og beslutningen om atidriftsÊtte modellen er normalt ikke afslutningen pÄprojektet. Tilbage stÄr at selve idriftsÊttelsen, hvilketkrÊver at alle de personer, som fÄr berÞring medmodellen eller modellens resultater (scoringer) infor-meres om modellen. Denne uddannelse af organisa-tionen er erfaringsmÊssig en meget kompliceret pro-ces, hvor man kommer i kontakt med medarbejdere,som har svÊrt ved at forstÄ det univers modellenbevÊger sig i, samt at acceptere de begrÊnsningerog genveje som ligger i modellen. En grundig uddan-nelse i hvordan modellens resultater anvendes og for-tolkes er erfaringsmÊssigt afgÞrende for en succes-

Figur 1: Skematisk oversigt over CRISP-DMproces modellen

Page 14: Questioning Solutions Since 2OOO 2

fuld drift af modellen.

En aktivitet i Deployment fasen er at fastlÊgge, hvor-ledes modellen skal overvÄges, og hvor ofte den skalregenereres.

Den samlede beskrivelse af CRISP-DM processenkan downloades fra www.CRISP-DM.org.

ERFARINGERArbejdet med DM bÄde nationalt og internationalt, hargivet mig en stor erfaringsbase. Det er uden for ram-merne af denne artikel at redegÞre detaljeret for disseerfaringer; men ud af erfaringsbasen har der udkry-stalliseret sig en rÊkke tommelfingerregler, som defleste Data Minere vil kunne bekrÊfte:

1. Start smÄt: begynd med et eller flere pilot projek-ter, og lÊr af erfaringerne fÞr der igangsÊttesstÞrre projekter

2. VÊr forberedt pÄ iterationer. Erfaringen viser atdet kan tage flere iterationer fÞr data grundlageter pÄ plads. Ligeledes kan idriftsÊttelsen afmodellen ofte medfÞre flere iterationer, fÞr orga-nisationen har taget modellen til sig.

3. FĂ„ de nĂždvendige interne ressourcer til projek-tet. DM er ikke en triviel opgave, det krĂŠver erfa-ring kombineret med en solid viden om statistikog ’knowledge discovery’. Det er vigtigt at haveet DM-projekt team, der omfatter data minere ogressourcer, der bidrager med viden om data ogforretningsregler (bĂ„de officielle og uofficielle ).

4. VÊlg et vÊrktÞj, der passer ind i virksomhedensIT arkitektur. Det er vigtigt at tilgangen til rÄ-dataer let og ubesvÊret da tilrettelÊggelsen af data,som regel tager langt den meste tid i et DM-pro-jekt. Herudover er det vigtigt, at DM-vÊrktÞjet letkan eksportere resultater til virksomhedens Þvri-ge IT systemer (CRM, kampagnesystemer, DataWarehouse, etc.)

5. Styr forventninger til projektet. DM er ikke et tryl-leord, ikke alle problemer egner sig for et DMprojekt, og ikke alle problemer understÞttes til-strÊkkeligt med data til, at de kan lÞses v.h.a.DM. Derudover er DM hÄrdt arbejde, tager langtid og krÊver specielle ressourcer, som ikke altider tilgÊngelige i virksomheden

6. VÊr naturlig skeptisk overfor resultater. DMvÊrktÞjer er blevet sÄ effektive at de stort setaltid vil generere en model, hvis de anvendes pÄselv ganske beskedne data mÊngder. Det fak-tum at vÊrktÞjet altid genererer en model til bru-geren betyder ikke, at det er en valid model derafleveres.

7. Brug tid pÄ at forstÄ data. ForudsÊtningen for atbygge en god model er at forstÄ data helt ned idetaljen. Brug derfor tid pÄ at forstÄ, hvorfor vari-able antager den vÊrdi de gÞr, og brug tid pÄ atforstÄ sammenhÊnge pÄ tvÊrs af data. Den tidder anvendes til dataforstÄelse vil komme igen iform af et hurtigere modelarbejde, og/eller enbedre model.

8. Brug tid pÄ at forstÄ modellen og brug din intui-tion. NÄr man stÄr med den fÊrdige model, kandet betale sig at forsÞge at forstÄ modellen. PrÞvat se om de faktorer, som indgÄr i modellen ladersig forklare, og er i trÄd med den viden om omrÄ-det man har i Þvrigt. Ingen succesfuld model er imodstrid med virkeligheden.

9. Lav en Business case pÄ modellens resultater.Som Data Miner er det let at blive grebet af tek-nikken i at modellere, og man kan let komme tilat fokusere pÄ sandsynligheder og konfidens-intervaller. NÄr man har modellen klar, bÞr manlave en business case, som viser modellensresultater udtrykt i Þkonomiske termer.

10. StrÊb efter en model der kan forklares snarereend en super nÞjagtig model. Den sidste aktivi-tet i ethvert DM projekt vil vÊre at sÊlge projek-tets resultater til ledelsen, som efterfÞlgende skalinvestere penge eller risiko i at anvende model-len (eks. ved kampagner, ibrugtagning af et nytscorecard, etc.). I den situation, hvor man stÄr ogskal prÊsentere modellen hjÊlper det meget, atvÊre i stand til at forklare hvordan modellen vir-ker og hvorfor den netop giver de resultater dengÞr. Ingen ledelse vil investere penge eller risikoi en model der ikke kan forklares. Hvis ledelsenvÊlger at idriftsÊtte modellen skal den prÊsen-teres for de personer, som kommer i berÞringmed den. OgsÄ her er det en fordel at have enmodel, der kan forklares i modsÊtning til enblack-box model.

KONKLUSIONNĂŠrvĂŠrende artikel prĂŠsenterer DM-processenCRISP-DM, og nogle af de erfaringer, der har udkry-stalliseret sig efter adskillige DM-projekter indenforteleindustrien og bankverdenen. Fordelene ved atbenytte en veldokumenteret proces er bl.a.:

Dokumentation: Man kan let dokumentere sit arbej-de med at konstruere modellerne. Dette har storbetydning, nÄr modellen sÊttes i drift fordi denpÄ et tidspunkt skal regenereres/vedligeholdes.NÄr dette indtrÊffer er det af uvurderlig hjÊlp atkunne stÞtte sig til en detaljeret dokumentationfor udviklingen af modellen.

Transparens: Det er meget enkelt at overskue for-lÞbet af modelkonstruktionen, og identificere deskridt/aktiviteter, der skal forbedres for at opnÄen bedre model. Transparens betyder ogsÄ atDM-projekter kan sammenlignes, hvilket giveren stÞrre erfaringsbase.

PlanlĂŠgning: Processen er i sig selv en skabelonfor en projektplan for et DM-projekt.

I denne artikel er CRISP-DM valgt fordi, det er denprocesmodel forfatteren har mest erfaring med. Somnévnt er det langt fra den eneste DM-procesmodel ilitteraturen. Af andre DM-Processer kan névnes SASInstituts SEMMA – ’Sample, Explore, Modify, Model,Assess’ proces og processer fra store leverandþrersom f.eks. IBM og Oracle.

Den overordnede konklusion pÄ artiklen er, at det eraf stÞrste vigtighed at gÞre sig definitionen pÄ DMklar, og at anvende en velbeskrevet og velgennem-prÞvet DM-proces, nÄr man kaster sig ud i DataMiningens svÊre kunst.

14 OracleEkspertOktober 2004

Page 15: Questioning Solutions Since 2OOO 2
Page 16: Questioning Solutions Since 2OOO 2

16 OracleEkspertOktober 2004

GROA

NSFR

AMO

GENS

SNAKFORMS/REPORTS EDITIONDer er lidt usikkerhed derude omkring iAS’ens forskel-lige licensoptioner. En af de optioner, der er omgĂŠr-det med mest mystik er mĂ„ske Forms/Reports-editon.Den har vĂŠret omtalt her, solgt der, men dens eksi-stens er pĂ„ den anden side ogsĂ„ blevet benĂŠgtet afOracle-folk, nĂ„r kunder forespurgte om den.

Men den ER god nok – hvis man ”kun” skal kĂžre Formsog Reports kan man nĂžjes med denne edition, derkoster ÂŒ af Enterprise Edition-prisen, dvs. 5000 dollarsper CPU, eller 100 dollars per Named User Plus.

Der er en del forskellige options i iAS’en mhp kĂžb afden. Java, Forms/Reports, Standard, Enterprise, ogmĂ„ske endnu flere. Mulighederne er legio.

SE1 TIL 9I FOR $5KJeg har tabt et vÊddemÄl til en Oracle-sÊlger, og deter jeg meget glad for. Jeg har betalt med Þl (ogsÄkendt som Miracle-dollars) til den glade vinder, og hanfortjener det.

VÊddemÄlet gik pÄ, om Standard Edition One (SE1)ogsÄ kunne fÄs til Oracle9i til den nye (10g) pris, nem-lig 5000 dollars per cpu (den gamle pris var 6000), ogat den kan fÄs til en 2-cpu-maskine, der kÞrer 9i (beg-rÊnsningen var 1-cpu-maskiner fÞr 10g kom frem).

Den gode sÊlger har nu checket med sit bagland, oghar bekrÊftet ovenstÄende. Jeg har ikke set skriftligtbevis for det, men jeg tror pÄ ham.

For mange brugere af Oracle’s database kan enomlĂŠgning til SE1 betale sig hjem i lĂžbet af 7-8 mĂ„ne-der mĂ„lt i rigtige penge, dvs. hvad man sparer iSupport og Update Rights.

Hvis en database EE koster 40.000 dollars per CPU,sĂ„ koster det 8.800 dollars (22%) om Ă„ret at haveupdate rights og support. En SE1 koster 5000 dollars,og derfor 1.100 dollars om Ă„ret. SĂ„ det koster 6.100dollars for det fĂžrste Ă„r – hvilket er 70% af 8.800 dol-lars. Det burde vĂŠre tjent hjem efter lidt over ottemĂ„neder, endda mĂ„lt i rigtige penge.

Vi har iĂžvrigt et script, der checker om man brugerEnterprise features i sin database – skriv til mig, og IfĂ„r det gratis med den elektroniske post. Bliv ikke for-skrĂŠkkede over, at det rapporterer en masse partitio-nerede tabeller og indexer – det skyldes logminer,som anvender denne facilitet via en event – uansetom det er tilgĂŠngeligt i den pĂ„gĂŠldende edition ellerinstallation.

ORACLE WORLDOracle World var lidt forvirrende i Ă„r. FĂžrst blev detannonceret, at det fandt sted i Milano, MĂŒnchen,Amsterdam og London. Senere blev der udsendt kor-rigerende meldinger om, at Milano, MĂŒnchen og

Amsterdam var lokale (og lokal-sprogede) events,som Oracle Italien, Tyskand og Holland selv tog sig af.SĂ„ London var hoved-eventen, og det er jo fint nok.

Der var i Ă„r ingen Call for Papers. Det bruger man ikkemere ifm Oracle World. Enkelte gĂŠstetalere udenforOracle bliver inviterede til at tale, men det er ikkemange (20 til Oracle World i San Francisco, tror jeg).

Men der var meget stor frustration (vrede, vel nÊr-mest) at spore hos EOUG pÄ grund af mÄden det blevhÄndteret: EOUG blev tilbudt funding (penge!) afOracle for at arrangere diverse talere til at holde ind-lÊg i alle fire byer. SÄ EOUG sendte fine breve ud tilforskellige mennesker (inkl mig) og spurgte, hvad vikunne have lyst til at tale om, og i hvilke byer, og hvil-ke dage. De skrev glade om, at de endda havdemulighed for at tilbyde talerne kompensation for flyud-gifter via denne funding fra Oracle. Starten pÄ en nyÊra, kunne man fornemme.

De samlede sÄ en liste, og alt var godt, processenkÞrte, tiden nÊrmede sig... da Oracle pludselig med-delte, at de havde trukket 80% af pengene vÊk igen,sÄ de kunne desvÊrre ikke bruge talerne alligevel, dadet nu var blevet lokale arrangementer.

Bert Spencer, den meget korrekte, Êldre englÊnder,der har vÊret formand for UKOUG i 15 Är, blev forfÞrste gang nogensinde rigtigt vred, og sendte et brevud til os indlÊgsholdere, hvori han gav udtryk for endel frustration, hvis man kan sige det pÄ den mÄde.

NÄ, men sÄ tog Torben Holm og jeg da bare tilLondon, iÞvrigt sammen med en hel del deltagere fraSkandinavien.

Det var Apps World og Oracle World slĂ„et sammen,men jeg tror personligt ikke der var meget mere end2700-3000 deltagere. Selve stedet – ExCel Conferen-ce Center – var ikke godt. Der var en negle-konferen-ce dĂ©r ogsĂ„ om mandagen, og den var nĂŠsten lige sĂ„stor (ihvertfald kiggede mange derhen nĂ„r de kunne).Der var ogsĂ„ en hel del pĂŠne negle at kigge pĂ„.

ExCel (Microsoft mÄ glÊde sig) spiller muzak, sÄ manalligevel ikke kan snakke i mobiltelefon, og er indret-tet, sÄ Oracle World nÊrmest var en biting henne ihjÞrnet. Temmelig rodet, synes jeg.

IndlĂŠggene var naturligt nok 50% Apps-orienterede,og jeg tror Apps-kunderne var udmĂŠrket tilfredse – dehavde fĂ„et svar pĂ„ spĂžrgsmĂ„l, hĂžrt lidt nyt, osv. Mende tekniske kunder var meget lidt tilfredse. JonathanLewis havde et glimrende indlĂŠg, og et par andreligesĂ„, men f.eks. foredragsholdere fra Developmenthavde fĂ„et strenge pĂ„bud om at holde sig til det udle-verede manuskript og ikke komme med personligekommentarer. Forestil jer en Joel Goodman ellerGraham Wood stĂ„ bare og lire 10g New Features afuden at mĂ„tte sĂŠtte lidt kolorit og lidt historie bag det.Meget kedeligt.

Jeg tror ogsÄ det er malplaceret at slÊbe alle de hergamle, bitre mÊnd til en fest, hvor house-musikkendunkede, som man gjorde tirsdag aften. Men det er

KĂŠre lĂŠser!

Velkommen til den 15. udgave af Groans, som indeholder snak om bl.a. licenser, CR iSQLserver og VBI-fest. Teknik-delen behandler Ugens Fejl, XML & Tom Kyte, Security Note68, en fejl i IMPort, en vejledning i, hvordan man fÄr bedre performance ved at slÄ 10046 til,samt en status Miracle Breweries.

Denne klumme er fĂŠrdiggjort 22. september 2004.Af

Mog

ens N

Ăžrga

ard

Page 17: Questioning Solutions Since 2OOO 2

17OracleEkspert Oktober 2004

en mindre pointe.

UdstillingsomrĂ„det var ret lille, og der manglede endel firmaer som Quest og andre gamle kendinge. Jegved ikke hvorfor – mĂ„ske er det for dyrt, mĂ„ske er dentraditionelle Exhibition Hall (City of the Dead Eyes),som jeg plejer at kalde den) ved at have udlevet sigselv.

Den stĂžrste mangel pĂ„ Oracle World var et klart bud-skab fra Oracle. Ingen vision, ingen glĂžd i Ăžjnene. Detvar bare en konference og en udstilling. Engang vardet budskabet om platforms-uafhĂŠngighed, eller bud-skabet om at alt kunne kĂžbes hos Oracle. ”Grid” er joikke et budskab, det er noget teknik. Flere features iprodukterne er heller ikke et budskab, men teknik.

Ingen tvivl om, at Oracle’s database m.m. bliver bedreog bedre Ă„r for Ă„r. Men det gĂžr biler ogsĂ„, og selvomvi alle gĂ„r og venter pĂ„ Head-Up Displays (HUDs) ibilerne, fordi James Bond engang havde det, sĂ„ er detikke sikkert det fĂ„r os til at kĂžbe lige netop den bil, derfĂžrst kommer ud med det til en rimelig pris.

Databaserne er gode nok, og i sérdeleshed erOracle’s database mere end god nok. Masser af kun-der kunne sagtens nþjes med 7.3’s funktionalitet – oggþr det.

NĂ„r man sĂ„ samtidig ser en tendens hen imod at altarbejde fjernes fra databasen, og at selv constraints-checks udfĂžres i diverse Java-dimser – ja sĂ„ er detsvĂŠrt at se, hvad det er, der skal fĂ„ folk lokket til pganye 10g eller 11g (de er nĂŠsten fĂŠrdige med spec’s-ene til den) features.

Folk kÞber jo ogsÄ SEAT, Skoda, KIA, Huyanday (orwhatever) istedet for at kÞbe de seneste nye gadgetsi tyske og franske (og svenske) biler. De er jo godenok, omend en Mercedes med indbyggede afstands-mÄlere eller blot en Mondeo med den der nye overha-lings-blinke-blinke-automatik ville vÊre skÞn at have.

Dave Ensor bemĂŠrkede under en middag til mig, athan syntes Oracle nu var cirka ligesĂ„ interessant atbetragte som General Motors. Han skal nu ogsĂ„ altidvĂŠre sĂ„ morsom. Men ihvertfald var der – ligesomved bilshows – fire meget velformede piger i stramme,smĂ„ guldkjoler, som gik rundt med et banner overskulderen hvorpĂ„ der stod ”Intel Inside”. Om der vit-terligt var intelligens derinde ved jeg ikke (og jeg kig-gede ikke efter). Det sĂ„ ihvertfald ikke sĂ„dan ud, mende kedede sig vel bare.

Det skal simpelthen gĂžres bedre, eller formĂ„let medOracle World skal kommunikeres meget klarere ud.Det kunne ogsĂ„ vĂŠre en mulighed, at Oracle tog sigaf det overordnede, marketingsmĂŠssige, mens enrĂŠkke brugergrupper tog sig af det tekniske og prak-tiske – med hjĂŠlp fra Oracle.

CR I MS SQLSERVERDen er god nok: SQLserver 2005, tidligere kaldetYukon, har en feature de kalder Row Versioning, hvorde gemmer tidligere versioner af rékker i tempdb.Peter Gram sad og legede med det forleden nat tilhenad 3 (han bruger som bekendt ikke sþvn) og faldtover nogle ”spþjse ting”, som han siger, men alt i altser det ud til, at det kan komme til at virke (det er sta-dig en Beta-udgave).

Det sjoveste er at se de artikler Microsoft forberederfor at forklare, hvad hulen Consistent Reads (CR) erfor noget. Ind imellem prÞver de ogsÄ at forklare,

hvordan Oracle gÞr det, etc., og her begÄr de fejl, ogvrÞvler som en anden flok marketingsfolk.

Det er den sidste bastion. Hvis Microsoft fĂ„r enordentlig lĂŠse-konsistens (det kommer nok til at tagenogle Ă„r fĂžr den er helt god), sĂ„ er SQLserver ”godnok” til de fleste normale databaseting, og sĂ„ er derkun slagsmĂ„l om diverse eksotiske features tilbage.Endnu et skridt mod commodityseringen af databaser.Det ser iĂžvrigt ud til, at de fra starten meget gerne vilundgĂ„ en 1555-situation (Snapshot Too Old).

9.2.0.5Jeg skrev et par numre tilbage, at 9.2.0.5 sÄ ud til atvÊre noget, man liiige skulle vÊre lidt forsigtig med atopgradere til.

Jeg holdt et indlÊg om denne klumme pÄ Oracle-Ekspert-konferencen pÄ Trekroner-fortet, som MarcsÄ glimrende havde arrangeret. Mit gennemgÄendetema var, at jeg aldrig hÞrer noget om, hvad folk synesom det jeg skriver, osv., osv.

En af tilhþrerne – en sej kvinde – kom bagefter og for-talte mig flg. historie:

En kunde havde ringet og spurgt, hvorfor i Alverdenman havde opgraderet dem, nÄr der stod i Oracle-Ekspert, at 9.2.0.5 ikke var en god release?!?

Den seje kvinde svarede kunden, at han skulle tagedet helt roligt – ”nogle gange er Mogens jo lidt af ennervþs, gammel tante”.

Meget godt svaret, mÄ man sige. Stor respekt for det.Jeg sagde jo, det var en sej kvinde...

Pointen var imidlertid, at nĂŠste dag stod kundenssystem stille.

Det skyldes bl.a. en interessant bug i 9.2.0.5 omkringBuffer Sorts (nr. 3728339). Der er en fix til de flesteplatforme.

Endnu engang mÄ man konstatere, at stabilitet er vig-tigere end inkrementale forbedringer. En forandring afeksekveringsplanen kan komme nÄr som helst, nÄrman Êndrer i reglerne i Oracle-koden (patcher/opgra-derer), skruer pÄ parametre eller genererer nye statspÄ tabeller og indexer.

Tak til den seje kvinde for tippet.

REAKTIONER PÅ A MAN AND HIS ASDer er (naturligvis) ikke kommet ret mange reaktionerpĂ„ mit interview med Morten Egan om iAS’en og demennesker, der lever omkring den. Jeg fĂ„r aldrig reak-tioner pĂ„ det jeg skriver â˜ș.En enkelt kunde har spurgt, hvorfor artiklen er sĂ„negativ i tonen, nĂ„r vi i Miracle A/S jo netop kan tjenemasser af penge pĂ„ de problemer, der opstĂ„r medproduktet?

Interessant. Istedet for at advare/kritisere, burde jegistedet udsende en meddelelse med flg. Indhold:

”Kére kunde/partner: Vi skal hermed opfordre jer til,under alle ténkelige forhold, at anvende flest muligeprodukter, og gerne i flest mulige sammenhénge.Herunder ikke mindst iAS, RAC, Partitioning, AQ,ASM, <laaaang liste>. De bedste hilsener: MogensNþrgaard, teknisk direktþr for et – þh – konsulentfir-ma, der lever af forandringer og problemer.”

Det er jo det, der er holdningen hos mange sĂŠlgere

Page 18: Questioning Solutions Since 2OOO 2

18 OracleEkspertOktober 2004

og konsulenter (konsulenter er jo ogsÄ sÊlgere i envis forstand): Jo mere komplekse installationerne bli-ver, jo bedre. Ikke bedre for kunden. Bedre for os, dersÊlger timer.

I bogen ”Secrets of Consulting” (venligst udlĂ„nt afJakob Hammer) kan man lĂŠse flg. tre grundlove forkonsulenter:

FĂžrste lov: PĂ„ trods af det, din kunde fortĂŠller dig, erder altid et problem.

Anden lov: Uanset hvordan det initielt ser ud, sÄ er detaltid et menneskeligt problem.

Tredje lov: Glem aldrig, at de betaler dig per time, ikkeper lĂžsning.

Den tredje observation er interessant: Jeg har setdrÞmmen hos nÊsten alle fra jeg startede i branchen:Betal os for det du kan spare, betal os sÄ-og-sÄmeget, hvis vi kan lÞse dit problem, osv., osv. Men deter vist meget fÄ, der er kommet igennem med vÊrdi-baserede betalingsformer. Det er ihvertfald aldrig lyk-kedes for mig.

Kan I huske Trafikradio med Monrad & Rislund, hvorLars E. Christiansen selv tager spÞrgsmÄlet om hvor-vidt det er farligst at kÞre fra KÞbenhavn til NÊstvedeen gang eller 25 gange?

Han svarer, at det naturligvis er farligst at kÞre strÊk-ningen 25 gange. Det gÊlder derfor om, at tilbringe sÄkort tid som muligt pÄ vejen, og derfor gÊlder det altsÄom at kÞre hurtigst muligt pÄ strÊkningen.

For konsulenter, og virksomheder, der lever af at driveandres systemer, mv., gÊlder det altsÄ om at sÊlgeflest mulige timer. Det gÊlder derfor om at der opstÄrflest mulige problemer i systemerne. De skal altsÄvÊre ustabile, hvilket man sikrer med konstanteopgraderinger og tilfÞjelse af nye komponenter.Meget naturligt vÊlger man derfor at lade de selv-samme konsulenter og virksomheder rÄdgive sig omden fremtidige IT-strategi. Eller lÊgger ligefrem sineIT-systemet i deres hÊnder (outsourcing, etc.).

SÄ fra nu af gider vi ikke mere frÊse ind og lÞse etproblem (hvis vi KAN lÞse det, vel at mÊrke!) pÄnogle fÄ timer, og sÄ lÞbe lykkelige ud igen. For sÄ bli-ver man aldrig inviteret tilbage.

Istedet skal man som konsulent sikre sig, at manaldrig forbedrer noget mere end 10%, og hvis detendeligt sker, sÄ skal man sÞrge for, at en anden fÄrÊren for det.

Ellers bliver man ikke inviteret tilbage til den pÄgÊl-dende kunde.

Jeg mÄ se at fÄ lÊst hele den bog.

WDU/VBI-FEST

www.ViBrugerIkke.dk er vores stÞrste succesnogensinde. 800-1000 hits om dagen, og masser afkreative tilbagemeldinger fra folk, der har benyttetVBI-metoden. Michael Möller har oversat det tilengelsk. WeDoNotUse.com er under registrering ogvi har fÄet de fÞrste gode meldinger fra OakTable-folk.

Som de gode borgere vi er (man er vel kommendemedlem af MÄlÞv MenighedsrÄd!) holder vi derfor enfest. Det bliver 2. april 2005, det bliver i Ballerup/-MÄlÞv-omrÄdet, og der vil vÊre taler af diversebidragsydere, af sÊlgere der er blevet ramt af meto-den, samt folk, der prÞver at videreudvikle konceptet.

Og selvfĂžlgelig prĂŠmier til bedste VBI-indlĂŠg.

Vi er ved at fĂ„ lavet bagrude-streamers, som I vilkunne rekvirere gratis, og der vil vĂŠre T-shirts til alleved festen. Jeg forestiller mig en masse ting afbildetpĂ„ forsiden af trĂžjen med fede, rĂžde kryds henoversamt teksten ”Vi Bruger Ikke T-shirts” pĂ„ ryggen.

Lad mig slutte med et bidrag jeg modtog fra JesperChristensen fra Nordea forleden – det var hans fþrsteforsþg med metoden, men det gik da fint – det drejersig om en forsikringssélger...

MÄ jeg bruger 2 min. af din tid pÄ at fortÊlle lidt omvore forsikringer?

Jeg svarede: Vi bruger ikke forsikringer.F: NÄ, hvad gÞr I sÄ?M: Vi er selvforsikrende.F: Hm, det lyder interessant. Det kunne jeg godt

tÊnke mig at hÞre lidt mere om - hvad gÞr i sÄ,hvis i har indbrud?

M: Vi bruger ikke indbrud.F: Hm, I bruger ikke indbrud?M: Nej, alt hvad vi ejer mÄ gerne stjÊles.F: NÄ, men sÄ farvel.

UGENS FEJLDen her er fra Morten Egan, og den er da genial:

ERROR: ORA-24344: success with compilation error

XML OG TOM KYTEDer har vĂŠret en debat pĂ„ OakTable-listen omkringĂžnskede features i 11g. Een af de efterfĂžlgendedebatter handlede om brugen af XML eller ej til diver-se konfigurationsfiler. Skulle init.ora vĂŠre XML’et?Skulle tnsnames.ora? Nej og ja, mente Tom Kyte.Init.ora var sĂ„ passende primitiv, at det ville gĂžre tingmere besvĂŠrlige, mens tnsnames.ora var sĂ„ tilpaskompleks, at det ville vĂŠre rigtigt godt at anvendeXML.

Og sĂ„ gik det ellers lĂžs med en ”Kammerater! Vi ersamlede her idag...”-tale omkring den korrekte anven-delse af XML i forhold til en database – eller ej. Her eret lĂŠngere uddrag fra hans mail:

“But, it is funny how people can get carried away withXML (insert any technology there really)

I had a question the other day on section searchingwith text. Ask for details — an example from them.Guy comes back with:

<quote>The application is a Typical Java ORACLEwebbased application. (I’m already frightened atthis stage — a “typical java oracle webbasedapplication” — shivers up and down my spine).When an order is placed through the web all thedetails regarding the order are made into an XMLscript and it is stored in the ORDER_XML column ofthe ORDER_FORMATS table. The script for the sameis given below.</quote>

It goes on to give me this huge XML glob of data.They wanted to search this, retrieve it, use it like —well — like it was relational data.

I was agog, they have taken the classic RDBMSexample — ORDERS and LINE_ITEMS and glob-bed it into XML and now wanted to use it in theirsystem (their example was trying to unnest everything

Page 19: Questioning Solutions Since 2OOO 2

19OracleEkspert Oktober 2004

— the typical “find me all orders such that theDeliverTo address was like %attention% and theorderId = ‘PO’ and.....”). Man oh man. I just don’t getit. This is perhaps the most structured data on the pla-net and now it is almost useless because you have tovirtually write a program to access it.

My guess is this came from “we didn’t want to have towork with the DBA’s to do ugly things like create tab-les, design structures — we just have a table with twocolumns ID and XML — wah-lah, we can store any-thing we want — cool eh”. It is surprising how manyof these implementations are starting to pop up.

I’ve actually seen people a) take structured information (parameters)b) XML them into a stringc) call a generic wrapper that parses the XML pas-sed to it (to extract the parameters)d) to dynamically build a plsql call with those para-meters (c and d are written in plsql, a and b in java)e) invoke the plsqlf) get the outputs and XML them into a string g) return the stringh) parse the XML to get the structured informationback out My question to them was “why wouldn’t java just doa), d) e) and part of f)” — you know, build aCallableStatement, parse it, bind it, execute it andretrieve the output — given that b), c), f), and h) arehugely expensive operations....

Could not convince them.

This is why I don’t like XML, it is useful in someregards but it has fallen into the java religious catego-ry — that is, “there are only two technologies worthyof our interest, if it ain’t in Java and doesn’t use XML,it isn’t good enough for me”.

We built a system for a customer as a favor, usedHTMLDB to do it. They love it, does everything theyneed, few moving parts, installs in seconds, scalesmany times beyond what they need and is infinitelyflexible (they can change it easily, without a profes-sional programmer for most things). Their IT deptrejected it out of hand — doesn’t meet their IT stan-dards, it is not a J2EE application. They are hiring aconsulting firm to translate our screens into jsp’s now.It’ll probably have to use XML as the way to get datato and from plsql too :) “

SĂ„ vidt Tom Kyte – i virkeligheden nogle forfĂŠrdeligehistorier, som vi ogsĂ„ ser gentaget herhjemme.

Men slaget er tabt. Udviklerne i denne Verden bliverikke pludseligt enormt interesserede i databasen ogdennes features. De skal bare bruge noget ”persistentstorage”, og de skal vĂŠre ”databaseuafhĂŠngige”.Hvis vi tror vi kan overbevise dem, sĂ„ tager vi fejl.

Hvis ellers Tales of the OakTable-bogen kunnekomme til Kratvej i tilstrÊkkeligt antal snart, sÄ ville jeginvitere jeg til at komme og hente et eksemplar, oglÊse kapitel 10 af Jonathan Lewis, som handler ombl.a. databaseuafhÊngighed. Hans pointe er, at hvisman designer en applikation til at vÊre databaseuaf-hÊngig, sÄ vil det gÄ galt nÄr enten mÊngden af dataeller concurrency stiger i systemet.

Men det er jo fint for os – venlig hilsen en direktþr foret konsulentfirma.

Tom Kyte og de andre bitre mÊnd vil blive ved med atrÄbe op om traditionelle databasedyder, viden om,

hvad der fÄr performance mod en database til at swin-ge (eller ej), vigtigheden af at anvende PL/SQL, fordidet er simpelt og meget stÊrkt (og godt performende)- og meget andet godt. Der er bare ingen, der vil lytte.

Hvis vi kan holde det ud burde der vÊre masser afpenge at tjene pÄ den slags fjollerier i de kommendemange Är.

De rigtige konsulentfirmaer (Accenture, osv.) ved, atdet her ikke drejer sig om at fixe problemet, men omat forbedre performance med hĂžjst 10% â˜ș.

TEKNIKSECURITY NOTE 68 OG EGAN’S PERL-NOTEMorten Egan sad og sloges med den efterhĂ„ndenberĂžmte Security Patch 69, oprettede en TAR, ban-dede, og gjorde alle de ting man normalt gĂžr sent omnatten – alt sammen fordi der skal bruges Perl til atinstallere sikkerheds-patchen.

Morten fandt sÄ ud af flg:

Hvis man bruger Perl fra metalink, virker opatch udenproblemer. Hvis man derimod har downloadet Perl fraf.eks. ActiveState eller andre steder, er det vigtigt atman i sin dos-prompt/shell sĂŠtter fĂžlgende ekstravariabler (som dokken overhovedet ikke nĂŠvner selv-fĂžlgelig):

ACTIVE_STATE_PERL=TRUE (her er CAPS vigtigt)PERL5LIB=<sti_til_perls_lib_dir>

inden man kĂžrer opatch, ellers vil det fejle.

Der findes iĂžvrigt en note til patchen, som i sig selv eren afhandling, der vil noget. Support har knoklet medden note, og der blev vist HELT stille i Orlando sup-port-center, da Mortens observation blev nĂŠvnt. Deter jo heller ikke Support’s skyld, at der er sĂ„ mangeforskellige fixes i denne patch.

JOHANNES OG 10046 PERFORMANCE IMPROVEMENTDet var en meget mystisk sag: NÄr 10046 level 8 varslÄet til, kÞrte kundens applikation bedre! Den smedJohannes ud pÄ OakTable netvÊrket, og her er detforelÞbigt eneste svar (som jeg synes viser noget om,hvordan Tom Kyte tÊnker og arbejder):

“This is probably caused by “bind variable peeking”.The 10046 will create a child cusor, which can be sha-red by all other trace sessions, but it will be a childcursor. Heisenberg’s uncertainty principle :) Oracleis full of them. Example:ops$tkyte@ORA9IR2> drop table t;Table dropped.

ops$tkyte@ORA9IR2> create table t2 as3 select 99 id, a.* from all_objects a;

Table created.

ops$tkyte@ORA9IR2> update t set id= 1 where rownum = 1;1 row updated.

ops$tkyte@ORA9IR2> create index t_idx on t(id);Index created.

ops$tkyte@ORA9IR2> exec dbms_stats.gather_table_stats(user, ‘T’, method_opt => ‘for all indexed columns size254’, cascade=> true);

PL/SQL procedure successfully completed.

ops$tkyte@ORA9IR2> connect / as sysdbaConnected.

ops$tkyte@ORA9IR2> startup forceORACLE instance started.

Total System Global Area 269554896 bytesFixed Size 451792 bytesVariable Size 201326592 bytesDatabase Buffers 67108864 bytes

Page 20: Questioning Solutions Since 2OOO 2

20 OracleEkspertOktober 2004

Redo Buffers 667648 bytesDatabase mounted.Database opened.

ops$tkyte@ORA9IR2> connect /Connected.ops$tkyte@ORA9IR2> select sql_text from v$sql wheresql_text like ‘select * from t %’;no rows selected

ops$tkyte@ORA9IR2> variable n numberops$tkyte@ORA9IR2> exec :n := 99PL/SQL procedure successfully completed.

ops$tkyte@ORA9IR2> set autotrace traceonlyops$tkyte@ORA9IR2> select * from t where id = :n;

27849 rows selected.

Now, since :n = 99, and we have histograms, a full scanwill be choosen and assigned to this query while theinstance is up:

Execution Plan—————————————————————————————

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=41Card=13925 Bytes=1392500)

1 0 TABLE ACCESS (FULL) OF ‘T’ (Cost=41Card=13925 Bytes=1392500)

Statistics—————————————————————————————

590 recursive calls0 db block gets

2309 consistent gets399 physical reads308 redo size

1946947 bytes sent via SQL*Net to client20915 bytes received via SQL*Net from client1858 SQL*Net roundtrips to/from client

7 sorts (memory)0 sorts (disk)

27849 rows processed

ops$tkyte@ORA9IR2> set autotrace off

ops$tkyte@ORA9IR2> exec :n := 1PL/SQL procedure successfully completed.

Even though this query with these binds would benefitfrom an index, it will not:

ops$tkyte@ORA9IR2>ops$tkyte@ORA9IR2> set autotrace traceonlyops$tkyte@ORA9IR2> select * from t where id = :n;

Execution Plan—————————————————————————————

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=41Card=13925 Bytes=1392500)

1 0 TABLE ACCESS (FULL) OF ‘T’ (Cost=41Card=13925 Bytes=1392500)

Statistics—————————————————————————————

0 recursive calls0 db block gets

398 consistent gets0 physical reads0 redo size

1216 bytes sent via SQL*Net to client499 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)1 rows processed

That full scanned based on the 398 consistent gets —remember “explain plan” can lie, so we are relying onthe consistent gets, which are accurate here.

ops$tkyte@ORA9IR2> set autotrace offops$tkyte@ORA9IR2> @traceops$tkyte@ORA9IR2> alter session set events ‘10046trace name context forever, level 12’;

Session altered.

ops$tkyte@ORA9IR2> set autotrace traceonlyops$tkyte@ORA9IR2> select * from t where id = :n;

Execution Plan—————————————————————————————

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=41Card=13925 Bytes=1392500)

1 0 TABLE ACCESS (FULL) OF ‘T’ (Cost=41Card=13925 Bytes=1392500)

Statistics—————————————————————————————

0 recursive calls0 db block gets4 consistent gets2 physical reads0 redo size

1216 bytes sent via SQL*Net to client499 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)1 rows processed

ops$tkyte@ORA9IR2> set autotrace off

That is showing autotrace lies (it could not have fullscanned, 4 consistent gets).

ops$tkyte@ORA9IR2> select sql_text from v$sql wheresql_text like ‘select * from t %’;

SQL_TEXT———————————————————————————————————————————————————————-select * from t where id = :nselect * from t where id = :n

Tom Kyte: So, I would say you have a query that —given the binds that were in place the first time it wasexecuted “it was good” but the binds you were usingmade it “very bad”. Using the trace event, you gene-rated a “very good” plan for that query — running withthose binds — but only when tracing is on (the envi-ronment matches).

IMP & 942Den gamle, bitre mand Stig Hornuff har sendt mig fĂžl-gende:

”I fordums dage, den gang der stadig var noget, derhed 7.3.4(.5.6.7.8) gav jeg et fint lille eksempel tilOracle Support pĂ„ at exp/imp ikke virker - i hvert faldikke pĂ„ en opgraderet Applications database(Financials 10.6.X => 10.7).

Og det er en “feature” jeg nu har kunnet fĂžlge i ALLEefterfĂžlgende versioner - ogsĂ„ 10g (pĂ„ SlackwareLinux).

Opskriften er simpel:1) Lav en tabel.2) Lav en trigger pÄ tabellen. 3) Rename tabel. 4) Exp af bruger. 5) Drop brugers objekter. 6) Imp bruger. >> ORA-00942

Ligesom at Þl smager bedst hver gang, sÄ virker dettepÄ samme mÄde: Hver gang!

Man undres..... Ikke sandt? - specielt da triggeren sta-dig virker efter en rename og export-filen viser jo finthvilken tabel den vil lave triggeren pÄ.

Mon Oracle nogensinde lþser dette??”

Tilbage til mig (Mogens): Jeg kan godt nok ikkehuske, at jeg er stÞdt pÄ denne fejl. Skulle en af jerkende svaret, sÄ hÞrer jeg gerne om det.

BRYGGERIETHvis man vil lave et mikrobryggeri er man smĂ„krimi-net – det er der ingen tvivl om.

Det kan godt vÊre, at Carlsberg tilsÊtter enzymer tilderes Þl, sÄ det kun skal stÄ i de store tanke i to dÞgnistedet for i tre uger, men til gengÊld kan de(Carlsberg) roligt hÊlde det hele i kloakken, men detmÄ vi skam ikke.

SÄ en 15.000 liters tank er nu placeret rundt omkring(hvor man nu gider sÊtte den fra sig!) pÄ LassesskÞnne gÄrd fra 1725 pÄ Fyn. Den skal graves ned ihans forhave.

SÄ er der Told & Skat. Gulvet er lige blevet stÞbt for-leden, men de har allerede vÊret pÄ besÞg en gangeller to, samt ringet flere gange. Bl.a. skulle vi stillemed en sÊrlig garanti for, at vi nu ogsÄ havde pengei selskabet. Samtalen forlÞb cirka sÄledes:

T&S-mand: Vi skal bruge en revisor-underskrevet er-klĂŠring om, at I har mindst 125.000 kroner i selskabet.

Lasse: Jamen, det er jo et aktieselskab vi har stiftet.

T&S-mand: Ja, men I kan jo hĂŠve alle pengenedagen efter at I har stiftet selskabet!

Page 21: Questioning Solutions Since 2OOO 2

21OracleEkspert Oktober 2004

Lasse: Det er rigtigt. Men er der noget i vejen for, at vihÊver alle pengene i selskabet dagen efter at I harfÄet en revisorerklÊring?

T&S-mand: Nej, det er der ikke.

Lasse havde sĂ„ en rĂŠkke samtaler med Amt,Kommune, T&S, etc. indtil de frafaldt kravet. Ellersskulle vi have betalt 5.000 til 10.000 kroner for det –plus alt det ekstra arbejde.

SÄ er der ruminddelingen. Det er jo ikke en maskine,der bare laver Þl. NÊh, det er et Carlsberg #2 vi erved at lave! SÄ det er jo en proces at lave Þl, og Lassehar mÄttet udarbejdet fine tegninger over processen,og vi har endda hyret en food adviser, som har erfa-ring med at fÄ smÄ bryggerier frelst igennem det enor-me bureaukrati, der efter bedste evne prÞver atafskrÊkke opstarts-virksomheder.

En af hendes (food-adviserens) stÞrste genistregervar da hun fik lavet den nÞdvendige rum-inddeling(rum-inddeling er MEGET vigtig i et Carlsberg-lignen-de bryggeri) ved hjÊlp af snore hos det lille, nystarte-de bryggeri ude ved Roskilde. SÄ var den i vinkel.Men han slap ikke for at fÄ en rustfri stÄlvask sat op idet lille lokale, hvor folk kan komme og kÞbe hansÞlflasker. Faktisk skal han have en del rustfri stÄlva-ske rundt omkring i sit Carlsberg3-kompleks.

Det er kogt vand med korn og sukker, for pokker. Vi

hÊlder ikke engang enzymer i. Det lader vi de storeom. Man mÄ hÊlde restproduktet ud pÄ markerne, ogdet gÞder fint og naturligt.

NĂ„r det drejer sig om myndighederne, sĂ„ er det nogetbedre at vĂŠre meget stor (og derfor monopol-agtig)end at vĂŠre entusiastisk opstartsKaj. Jeg tĂžr ikketĂŠnke pĂ„, hvordan Lasse og jeg ville fĂ„ myndighe-derne pĂ„ nakken, hvis vi ville til at eksperimenteremed Ăžl pĂ„ smĂ„, behĂ„rede dyr â˜ș.Et par fiduser til sidst:

HÄndbrygning, hvor man laver 30 liter ad gangen,koster typisk 3-5 kroner per liter, og er fuldt lovligt ogskal ikke anmeldes til nogen myndighed. Der er ogsÄseriÞse hjemmebryggere, der laver 200 liter ad gan-gen.

Og sÄ skal I vide, at I fuldt lovligt kan lave spiritus udaf Þl: Put en god Þlblanding i en spand, sÊt lÄg pÄ ogsÊt det hele i fryseren (18-21 minusgrader). NÄr van-det er frossent, sÄ er alkoholen jo stadig flydende, ogsÄ er det jo bare at hÊlde det fra. Hvis man er avan-ceret, sÄ sÊtter man nogle klodser pÄ indersiden aflÄget, samt en taphane. Der kommer en halv litersprut (45%) ud af 10 Þl. Et rigtigt godt party-trick.

Miracle Breweries nĂ„r ikke at lave fĂžrst bryg til La-landia – Ăžv! – men vi burde vĂŠre i gang sidst pĂ„ Ă„ret.

Det kan jeg heller ikke.

MARK SOUZA OG STABILITETMark Souza, som er ansvarlig for Customer AdvisoryTeam (CAT) i SQLserver Development, var pÄ besÞgi Garagen i MÄlÞv for nogle uger siden. PÄ vej derudbragte jeg emnet om statistikindsamling op, og hansukkede lidt og fortalte, at han i de sidste tre Är havdeargumenteret for, at man skulle holde op med at laveal det der automatik omkring statistikopsamlingen iSQLserer. For, som han sagde:

”Stability is more important than incremental improve-ments”.

Mark har 11 Är med DB2 og 11 Är med SQLserver pÄbagen. Fra mainframen kender han til fastfrosne ekse-kveringsplaner (hvor det er selve planen der gemmes).

Nu er det jo ikke et mÄl i sig selv, at eksekveringspla-nen er den samme, kan man sige. MÄlet er, at appli-kationen udfÞres pÄ samme tid hver gang, sÄ det erforudsigeligt.

I version 9i fik vi endelig elapsed_time ind i v$sql ogdet kombineret med antal eksekveringer (executions)kan give et rimeligt billede af, om en SQL kÞrer bedreeller dÄrligere efter at have skiftet eksekveringsplan(hash_plan_value vil Êndre sig for den sammehash_value).

Dog skal man huske pÄ, at hvis man bruger bind vari-able, kan det vÊre ganske forskelligt, hvor meget derskal returneres fra den samme SQL. Der er ingennemme lÞsninger.

ANALYSE-METODERJeg er stĂždt pĂ„ to metoder til statistik-opsamling, sombegge udmĂŠrker sig ved at vĂŠre efter modellen ”gĂžr

det een gang, og sĂ„ aldrig mere”:

Benchmark-gutterne i Oracle kĂžrer deres data ind pĂ„test-maskinen, og sĂ„ laver de ’estimate 1 procent’ ogrĂžrer det aldrig mere. Her skal man lige huske, at dekender deres data, og at deres tabeller/indexer ikkevokser sĂŠrligt meget – og hvis de gĂžr, sĂ„ er det pro-portionalt.

Real World Performance-teamet i Oracle (underledelse af Andrew Holdsworth) laver ’compute statisti-cs’ een gang for alle pĂ„ tabeller og indexer med en’rimelig’ mĂŠngde data i, og sĂ„ aldrig mere. Med mind-re der sker en eksplosion i datamĂŠngden eet ellerandet sted.

Een undtagelse er dynamiske tabeller, dvs. tabeller, derhar konstant svingende antal rĂŠkker i sig – i dette til-fĂŠlde kan den dynamiske sampling i 10g (eller var det9i) pĂ„ kĂžrselstidspunktet vĂŠre en overvejelse vĂŠrd.

KONKLUSIONVed at holde op med at analysere hele tiden (fleregange om dagen, dagligt, eller ugentligt) kan man bĂ„-de spare en masse arbejde for sig selv og maskinen– og sikre stĂžrre forudsigelighed og stabilitet for sineapplikationer.

Der er naturligvis ogsĂ„ ulemper forbundet med dette,og de fleste af disse kan adresseres ved at overvĂ„geSQL’ernes eksekveringsplaner. Ellers vil de forandresig konstant, og dermed bidrage til fuldstĂŠndig man-gel pĂ„ forudsigelighed i systemerne.

Ironien i det er, at efterhĂ„nden som vi forstĂ„r, at manikke skal analysere hele tiden og altid – sĂ„ introduce-res der en masse features og faciliteter, der gĂžr detfuldautomatisk og overladet det til databasen at ana-lysere i tide og utide.

Fortsat fra side 10

Page 22: Questioning Solutions Since 2OOO 2

22 OracleEkspertOktober 2004

2004-09-24EU giver sandsynligvis Oraclemedhold EU-kommisĂŠr Mario Monti regnermed at godkende Oracles opkĂžb afPeopleSoft i slutningen af oktober,inden han fratrĂŠder som kommi-sĂŠr.

Det er ikke sandsynligt at EU vil gÄimod rettens kÊndelse i USA.

2004-09-23TietoEnator laver brugergrÊn-seflade til Oracle pÄ NokiasCommunicator TietoEnator har annonceret, at dehar lavet en brugergrÊnseflade pÄNokias Communicator 9300 og9500 til sikker afvikling af feksmoduler fra Oracles eBusinessSuite.

2004-09-22PeopleSoft annoncerer partner-skab med IBM Dramaet vil ingen ende tage! Kortefter at retten i USA har givetOracle lov til at fortsĂŠtte opkĂžbet afPeopleSoft, annoncerer People-Soft og IBM et partnerskab til USD1 mia.

Dette regnes dog ikke at betyde, atIBM vil opkÞbe PeopleSoft, da etsÄdan opkÞb ville ÞdelÊgge IBMsuafhÊngighed af ERP-markedetog dermed skade deres store ind-tÊgter ved at supportere feks SAP.

2004-09-16Oracles Q1-regnskab Oracles aktier steg med 7% efteroffentliggÞrelsen af en indtÊgts-stigning pÄ 16% i deres Q1-regn-skab.

IndtĂŠgterne steg fra USD 440 millsidste Ă„r til USD 509 mill i Ă„r.OmsĂŠtningen steg med 7% tilUSD 2.22 mia.

I juni havde Jeff Henley annonceretat Oracle ville komme til at tjene 9cent pr aktie i Q1. De USD 509 millsvarer til hele 10 cent pr aktie.

2004-09-15Ny Oracle Executive Vice Presi-dent Juergen Rottler er netop blevetudnĂŠvnt som ny Executive VicePresident for Oracle On Demandmed direkte reference til LarryElison.

Juergen Rottler kommer fra stillin-gen som Senior Vice President forHPs sektion for offentlige institutio-ner, sundhed og undervisning.

2004-09-09Oracle fÄr lov til at overtagePeopleSoft Det lakker mod enden... DommerVaughn Walker vurderede, at derikke var beviser for at Oracles over-tagelse af PeopleSoft ville Êndrekonkurrencesituationen pÄ ERP-markedet.

Retten har derfor ikke nedlagt for-bud imod Oracles fjendtlige overta-gelse af PeopleSoft.

Efter offentliggĂžrelsen af dommensteg PeopleSoft-aktien fra USD13.7 til USD 20.4. Oracle har tilbudtaktionĂŠrene USD 21 pr aktie.

2004-09-02LÞj Larry Ellison om fremtidsud-sigter? Selv om det tidligere var blevetafvist i retten, pÄ baggrund afmanglende beviser, har en domstolnu genoptaget sagen om insider-handel mod Oracles ledelse.

Retten finder det mistÊnkeligt atLarry Elison solgte aktier fornÊsten USD 900 mill kun enmÄned fÞr Oracle annonceredeskuffende financielle resultater.

Forud for annonceringen af kvar-talsresultaterne den 1. marts 2001havde bÄde Larry og andre iOracles ledelse spÄet at de dÄrligetider i IT-branchen ikke ville rammeOracle.

2004-08-20Oracle vil lave mÄnedlige patch-es Oracle har annonceret, at de vil tilat lave mÄnedlige patches for atsikre, at deres kunder fÄr de opgra-deringer, som er nÞdvendige.

Der er endnu ikke sagt noget om,hvornÄr dette vil blive sat i vÊrk.

2004-08-18Ford dropper Oracle Ford har opgivet udviklingen af etweb-baseret indkĂžbssystem tilUSD 200 mill.

Projekt Everest blev pÄbegyndt i2000. Ford vil flytte over 300 IT-medarbejdere til andre projekter,og fortsÊtte med deres gamle ind-kÞbssystem.

2004-08-17OpenWorld-registrering Ă„bnet Det er nu muligt at registrere sig tilOpenWorld is San Francisco, somafholdes fra den 5. til den 9.december 2004, hvor Larry Ellisonholder keynote-talen (hvilket han til-syneladende ikke gĂžr i OpenWorldi London den 6.-8. september.

2004-08-0334 sikkerhedsfejl i Oracle Sikkerhedseksperten David Litch-field fra Next Generation SecuritySoftware har rapporteret om 34 sik-kerhedsproblemer i Oracles data-base. Det er ifĂžlge David muligt atstjĂŠle og opdatere data uden brugaf brugernavn og password.

Oracle har lovet at komme medsikkerhedsopdateringer inden forden nĂŠrmeste fremtid.

David Litchfield har igennem flereÄr offentliggjort sikkerhedsproble-mer i software fra primÊrt Oracleog Microsoft.

NYHE

DER

Spred det glade budskab!

Referer nye abonnenter og fÄ signerede og numererede tryk af Oraclerne

Page 23: Questioning Solutions Since 2OOO 2

23OracleEkspert Oktober 2004

EventkalenderenHer kan alle abonnenter annoncere deres Database-relaterede arrangementer.

FÞlg med i de nyeste databaserelaterede arrange-menter og opret helt nye arrangementer direkte pÄvores hjemmeside www.OracleEkspert.dk underpunktet Eventkalender.

Det er gratis for vores abonnenter at oprette arran-gementer i Eventkalenderen.

FĂ„ Thomas Kytes (“AskTom”) gode rĂ„d Dato: 2004-10-07 ArrangĂžr: Oracle Danmark Kontakt: www.oracle.com/dk/education Sted: Oracle Danmark, Ballerup

Jonathan Lewis som instruktÞr pÄ RAC-kurset Dato: 2004-10-18 Tidspunkt: 18.-20. oktober 2004 ArrangÞr: Oracle Danmark Kontakt: http://www.oracle.com/dk/education Sted: Oracle Danmark, Ballerup

DesWeb SIG Dato: 2004-10-20 Tidspunkt: Kl 13-16 ArrangĂžr: OUGDK Beskrivelse: Karsten Schultz fortsĂŠtter sitindlĂŠg om Ob-jektorienteret analyse, design og udvikling. Og debatten om

OO vs Struktureret udvikling fortsĂŠtter! Kontakt: Tilmeld dig hos [email protected] Sted: Hos Oracle i Ballerup Pris: Gratis

Database Forum 2004 Dato: 2004-10-28 Tidspunkt: 28. - 30. oktober 2004 ArrangĂžr: Miracle A/S Beskrivelse: Tre dage med sessioner om databaseteknologi Kontakt: [email protected] Sted: Lalandia, RĂždby Pris: Annonceres senere

Thomas Pystynen som instruktÞr pÄ RMAN-kurset Dato: 2004-11-22 Tidspunkt: 22.-24. november 2004 ArrangÞr: Oracle Danmark Kontakt: http://www.oracle.com/dk/education Sted: Oracle Danmark, Ballerup

Oracle Open World 2004 Dato: 2004-12-05 Tidspunkt: 5. - 10. december 2004 ArrangÞr: Oracle Kontakt: Se mere pÄ http://www.oracle.com/openworld Sted: San Francisco, USA

LIVEDeadline for Artikler til OracleEkspert nr 27

er den 15. november 2004

Vi betaler 700 kr pr side

se mere pÄ:www.OracleEkspert.dk

Page 24: Questioning Solutions Since 2OOO 2