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

Questioning Solutions Since 2OOO 2

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

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