BEREGNING AF DANSKE HELLIGDAGE OUGDK ORACLE8 GIS (GEEKY INTERNAL STUFF): PHYSICAL DATA STORAGE INTERNALS

Størrelse: px
Starte visningen fra side:

Download "BEREGNING AF DANSKE HELLIGDAGE OUGDK ORACLE8 GIS (GEEKY INTERNAL STUFF): PHYSICAL DATA STORAGE INTERNALS"

Transkript

1 Juni 2001 Nr 6, Årgang 2 ISSN Pris: kr. 125,00 ex moms #6 OUGDK DBA SIG Dato for næste møde er endnu ikke fastlagt. Designer SIG Næste møde: juni 2001 Developer SIG Dato for næste møde er endnu ikke fastlagt. Data warehouse SIG Dato for næste møde er endnu ikke fastlagt. Web SIG Gruppen er lukket ned indtil en ny koordinator er fundet. NYHEDER Oracle databasen er #1 til CRM FastForward Mobile and Corporate Directory Nato implementerer E-Business Suite Microsoft går efter Oracle og Sun Langsomt salg de næste 2-3 kvartaler Ellison peger på efterfølger.now overhaler.net Oracle #1 i sikkerheds-certificering Oracle annoncerer idevelop2001 Online SAP og Yahoo går sammen om at udvikle portal software eweek bekræfter at ias9i giver øget performance Ellison får forbud mod at lande jetjager Oracle vil bygge digitalt hospital 2. generation af New Internet Computer Oracle vil fyre 2% af medarbejderne BEREGNING AF DANSKE HELLIGDAGE Danske helligdage er ikke noget man beregner. Dem slå man op i en tabel. Eller gør man? Ta årskalenderen fra sekretæren! Her får du en PL/SQL løsning, som beregner dem. Til og med væsentligt hurtigere end de kan SELECT es fra en tabel. Anders Frandsen ORACLE8 GIS (GEEKY INTERNAL STUFF): PHYSICAL DATA STORAGE INTERNALS This month, Dan will focus on some internals of the Oracle RDBMS, primarily physical storage of data. This article will concentrate on data blocks: how they re created, how space is really managed inside a tablespace, and some other geeky internal stuff of interest in the physical storage of data. Dan Hotka TOP-N QUERY At finde de 20 rækker fra en tabel med de største eller mindste værdier i en given kolonne har i mange år ikke været helt lige til. Denne artikel belyser hvorledes det alligevel kan klares med relativt enkle midler. Martin Jensen SIMULATING OPS$ USERS THROUGH A BROWSER If your business is running an intranet on an MS network, it is possible to authenticate MS users as Oracle users without prompting them for a second login name and password. Unfortunately, Oracle only supports this for client/server applications like Forms and Reports. This presentation will show you how to authenticate MS users running Web applications through a browser as well. Marc de Oliveira CUTTING CODE WITH STYLE PART II This article is part II of a two part series that explains a recommended coding style that is easy to write, read and maintain. This issue will focus on various structures of SQL and PL/SQL including SELECT, INSERT, IF and LOOPS. Scott Hollows

2 Leder BRUGERGRUPPENS EVOLUTION Marc de Oliveira, ansvarshavende redaktør. Trods en meget svær begyndelse er det nu lykkedes at udgive seks numre af Danmarks mindst ringe Oracle-tidsskrift. Dette har ikke kunnet lade sig gøre uden en masse frivilligt arbejde, villige annoncører, engagerede artikelforfattere og ikke mindst den støt voksende skare af abonnenter. OracleEkspert sendes nu ud til over 150 abonnenter i Danmark og enkelte andre europæiske lande! Specielt skal Miracle A/S, DBVision, ehuset, Quest Software og de 12 foredragsholdere takkes for deres store opbakning til OracleEkspert-konferencen, der blev afholdt den 26. april, som gjorde dagen til en stor oplevelse for alle os, der deltog. Ifølge deltagernes evaluering er ønsket om en gentagelse af konceptet enormt med en score på 91 (ud af 100). Bedømmelsen af indlæggenes indhold ligger også langt over middel med en score på 80%. Men selv om OracleEkspert-konferencen var en stor succes, så har bladet også fået mange knubs i løbet af sit første leveår. 150 abonnenter vidner om, en stor interesse for bladet. Det er dog alligevel ikke nok til at finansiere bladet, så vi har derfor været meget afhængige af annoncørernes velvilje til at betale en stor del af omkostningerne. Men som det også kan ses af de første seks numre, har annoncørerne ikke ligefrem stået i kø for at købe spalteplads. Så har dele af OUGDKs bestyrrelse langet ud efter bladet. Der har været kritik af, at navnet OUGDK blev placeret så centralt på forsiden, at det kunne give læsere den idé, at bladet var udgivet af brugergruppen. Kritikken handler også om at ved at bladet betaler for artiklerne er det blevet alt for svært for brugergruppen at få folk til at stille op til OUGDK-møderne uden betaling. Og endelig er vi blevet kritiseret for at have taget initiativ til Oracle- Ekspert-konferencen, fordi brugergruppen har været arrangør af en konference på færgen Sjælland for otte år siden. Også sidste nummers leder fremkaldte stærke reaktioner blandt læserne. Heldigvis kom der også positive tilbagemeldinger fra læsere, som var enige i, at virksomhederne vitterligt nedprioriterer deres faste medarbejder i forhold til hvad de er villige til at betale for konsulenter. Men vi fik også en stribe reaktioner fra konsulenter, som følte at artiklen var et angreb på dem og deres ret til at kræve den betaling, som virksomhederne var villige til at give. Det mest farverige udfald og den efterfølgende brevveksling er gengivet i forkortet version i debatkolonnen Svar. Oracle Danmark, som fra begyndelsen var en meget aktiv støtte for bladet via nyheder, annoncer, adresselister mv uden hvilke bladet aldrig kunne være blevet til noget, er efter Henrik Bustrups flytning til England, tilsyneladende blevet mindre venligt stemt overfor projektet. Selv Martin Jensens deltagelse i OracleEkspert-konferencen var truet. Som det kan ses af ovenstående, har det altså ikke blot været en dans på roser at få Danmarks mindst ringe Oracle-tidskrift på benene. Og det har ofte undret Deres ydmyge redaktør, at et initiativ som OracleEkspert har så svært ved at slå bredt igennem i Oracle-miljøet. OracleEkspert er blevet til for at støtte alt, hvad der har med Oracle at gøre. Primært skal alle os, som arbejder med Oracle, have styrket vores tekniske viden. Det er også bladets mål at formidle viden om, hvad der strategisk sker omkring selskabet Oracle, og hvad der bliver sagt om det i medierne. Det er også vigtig at alle, som udvikler Oracle-løsninger og udbyder Oracle-ydelser kan delagtiggøre Oracle-miljøet i hvad de kan gøre for os. OracleEkspert er også et godt sted at skabe en dialog med Oracle Danmark (eller USA for den sags skyld), hvor de er på udebane. Et sted, som ikke er kontrolleret af Oracle, hvor debatten mellem Oracle og Oracles brugere sker på lige fod. En sådan debat er i høj grad også i Oracles egen interesse. Endelig er OracleEkspert også et kald til at få OUGDK op af hullerne. Der er mange dygtige Oracle-brugere i Danmark, og de har lyst til at deltage i spændende udbytterige arrangementer. Med indkaldelsen til OUGDKs debatmøde om emnet den 31. maj er der åbnet mulighed for at brugergruppen kan evoluere til at blive en meget mere aktiv spiller i Oracle-miljøet. Det fortjener vi. Well, he hands you a nickel, he hands you a dime, He asks you with a grin if you're havin' a good time, Then he fines you every time you slam the door. I ain't gonna work for Maggie's brother no more. - Bob Dylan (fyldte 60 år i torsdags) Oplag: kopier Udgives af: pythia Information Kongensvej Frederiksberg Danmark Telefon: Fax: Info@OracleEkspert.dk Web: Ansvarshavende redaktør: marc de Oliveira Marc@OracleEkspert.dk Rettigheder: PYTHIA Information ejer alle rettigheder til indholdet af OracleEkspert. Kopiering af bladet i dele eller helhed må kun ske efter skriftligt samtykke fra PYTHIA Information. PYTHIA Information forbeholder sig rettigheder til at offentliggøre og genudgive de trykte artikler, tips mv, samt at tillade bladets læsere at anvende indholdet til såvel personlige som kommercielle formål. PYTHIA Information kan ikke drages til ansvar for eventuelle fejl og mangler i Indholdet af OracleEkspert. Artikler mv stilles tilrådighed uden garanti af nogen art. Pris: Enkeltnummer DKK 125,00 1 års abonnement dkk 600,00 Ved samtidig køb af minimum 5 kopier til samme adresse (enkeltnummer eller abonnement) gives 40% rabat på den samlede pris. Priserne er excl moms. Annoncer: Annoncer til OracleEkspert nr 6 skal være PYTHIA Information i hænde senest den 11. juli Annoncepriser kan findes på: Password: nwaabiab

3 Mogens Nørgaard: Din leder i nr. 5 er - efter min mening - uden pointe eller konsekvens. Du latterliggører på den ene side konsulent-timepriserne som afsindigt, latterligt, høje. Øh - hvordan fanden kan de være det? Som gammel, halvstuderet stud.polit. må jeg jo tørt konstatere at udbud og efterspørgsel faktisk svarer bedst til hinanden i et marked med åben og megen konkurrence - og det har vi fan'me i IT-konsulentbranchen. Det er kort sagt efter min mening kompelt og fuldstændigt sludder og nonsens du giver udtryk for. Du glemmer den store, logiske konklusion (logisk efter min mening :) ): Folk tager ikke springet ud som selvstændige for at blive rige. Det er iøvrigt en pisse nedladende holdning at åbenbare overfor (alle) os, der har turdet at starte noget selv, hvis jeg skal blive helt direkte overfor dig. Folk tager springet fordi Karl Marx (omsider!) har fået ret: Menneskene bør og ønsker at eje produktionsmidlerne. Og det gør de idag - hvis de vil, og hvis de tør. For produktionsmidlerne er deres viden/hjerne. Læs mere i bogen Funky Business, hvis du skal have det uddybet. Folk vil ganske simpelt bare være deres egen herre. Sådan som mennesket altid har ønsket sig det.et eksempel: Når folk siger op i det offentlige er det da - bevar os - nogle gange pga. lønnen. Det kunne også tænkes at være pga. manglende muligheder. Eller manglende ledelse. Men de ting er - tror jeg - ikke den udslagsgivende faktor. Det er derimod den manglende evne hos iøvrigt skidegode og -ivrige ledere til at få beslutninger presset igennem systemet. Det er det, der reelt frustrerer folk mest idag. Og hvis folk er deres egen herre kan de helt bypasse det problem og simpelthen bare tage beslutningerne selv. En fed tendens, iøvrigt. Den får hyggeonklerne og "vi-ved-bedst"-socialdemokraterne til at stejle, men faktisk har folk det bedst med at bestemme over sig selv. Marc de Oliveira: Jeg vil give dig ret i at min leder ikke giver nogen færdig løsningsmodel på det problem, som den berører (jeg har også kun en halv side at brede mig på!), men alligevel synes jeg, at den når at synliggøre nogle væsentlige pointer i diskussionen om virksomhedernes holdning til hhv fastansatte og konsulenter, og det er det, som har været min pointe med lederen. Skriv til: Svar@OracleEkspert.dk Mit udtryk "uhyrlige beløb langt over 1000 kr" anvendes til at beskrive det misforhold der er mellem den fastansattes egen løn og den pris, som hans/- hendes arbejde faktisk kan sælges til. Læst i sammenhæng bruges udtrykket klart til at påvise, at den faste medarbejder får for lidt, frem for at konsulenten får for meget. Dette understreges også andre steder med sætninger om konsulenter som "at få den fulde andel af deres arbejdes værdi" og "[at virksomhederne] betaler den faktiske markedspris for dem". Selvfølgelig er den pris, man kan sælge sin vare for et udtryk for varens værdi. Det vil jeg på ingen måde anfægte, og det mener jeg heller ikke, at jeg på nogen måde gør i lederen. At sige, at jeg (personligt) er nedladende overfor konsulenter er absurd, da jeg jo netop foretager mig en række ting, som selvstændig. Desuden synes jeg da, at jeg har et rigtigt godt forhold til en lang række selvstændige. Jeg kan på alle måder forstå de bevæggrunde, der får folk til at vælge freelance-karrieren. Som du selv nævner, gør jeg selv opmærksom på fordelene ved at dele specialviden i et resourceknapt miljø. Det er bestemt ikke min hensigt at fornægte værdien (endog nødvendigheden) af at virksomheder deler specialiseret viden via konsulenter. Men den diskussion ligger udenfor lederens tema. Jeg forsøger ikke noget sted i lederen at sige noget om, hvorvidt højt specialiserede folk er mere værd end mindre specialiserede folk eller ej. Det jeg forsøger at gøre opmærksom på, er at den samme arbejdskraft kan sælges som konsulentydelse eller via fastansættelse, og at så vel virksomheder som lønmodtagere alt andet lige (pris og kvalitet), ville have mere glæde af hinanden ved at have en mere fast tilknytning til hinanden. Jeg angiver netop også "mere selvbestemmelse og større frihed til at vælge deres arbejdsopgaver" som grunde til at blive freelance. Som allerede nævnt går min kritik på virksomhedernes dispositioner og slet ikke mod de folk, der enten vælger fastansættelsen eller freelance-livet. Mogens Nørgaard: OK, jeg læste det også som eet af dine forslag, at virksomhederne skulle bruge pengene på deres medarbejdere fremfor på konsulenter. Det kan man jo ikke være uenig i, for det ville jo åbenlyst være smartere. Men realiteterne er, at vi og vores branche (og sgu' sikkert også vores samfund) er på vej helt væk fra de store enheder og hierakier og hen mod en tilstand, hvor individet tager ansvaret for sig selv og sit liv i langt højere grad (på godt og ondt). Trenden har jo været der i 10 år i USA. Dem, der kan klare sig, laver næsten alle sammen noget selvstændigt virksomhedshalløj. Det er den tendens ("Marx fik ret"), der er virkeligheden, og den egentlige årsag til at folk søger væk (tror jeg). Ikke pengene eller ITudfordringerne. Derfor er det forkerte ting du sætter op mod hinanden. Rent økonomisk aner jeg efterhånden ikke, hvad en virksomhed burde foretrække. Der kan virkelig siges for og imod. Men man kan ikke sige Svar Fortsætter på side 14

4 Tools Teknisk Artikel BEREGNING AF DANSKE HELLIGDAGE Af Anders Frandsen. Anders arbejder som freelance konsulent for ZofteX ApS. Han har over 10 års erfaring med Oracle, primært med C (OCI), Oracle 7 / 8, SQL, PL/SQL og Forms. Han kan kontaktes på Anders.Frandsen@ZofteX.dk Hvorfor beregne? Alternativet til beregning, er kalenderopslag, typisk via en tabel. Den løsning indebærer 3 ting, jeg hader: 1. Vedligeholdelse (indtastning af næste års helligdage) 2. Mulighed for fejlindtastning 3. Datalogisk klamp! Alligevel er tabelopslag den eneste løsning, jeg har oplevet i Oracle-verden. Uanset om der skal beregnes bankdage eller fridage altid opslag i en tabel. Her følger mit bud på en beregningsløsning. Problemet Problemet opstod da man (Mayland s grundlæggere?) besluttede, at placeringen af Skærtorsdag, Langfredag og alle de andre uregelmæssigt faldende helligdage, skulle afhænge af placeringen af Påskedag, der som bekendt ikke falder på samme dato hvert år. Historien bag den Gregorianske kalender, er der sikkert mange(?) der finder interessant jeg gør ikke, og vil derfor ikke komme med en længere udredning om den. Hvis du er interesseret, kan du søge på nettet - du vil blive overrasket Kort fortalt: Kan man placere påskedag, kan man også placere alle andre danske helligdage. Påskedag falder på den første Søndag efter den første fuldmåne efter den 21. marts. Hvis denne fuldmåne falder på en Søndag, skal det være den følgende Søndag. Der findes mange forskellige algoritmer til at udregne ovenstående, jeg har valgt den første jeg fandt på nettet, som udemærker sig ved at være kompakt og overskuelig (læs: hurtig). Af forskellige (primært historiske) årsager, dækker algoritmen kun år Algoritmen er af den tyske matematiker Carl Friedrich Gauss ( ). PL/SQL løsning, version 1 Version 1 beregnede ved hvert eneste kald, om den aktuelle dato befandt sig I risikozonen, dvs. marts juni. Hvis dette var tilfældet, udregnede jeg placeringen af påskedag og de andre helligdage, for at se om der var et hit. Løsningen virkede, men det vil være løgn at påstå den var hurtig PL/SQL løsning, version 2 Løsningen var som med så meget andet i disse tider caching! Ved at udregne et helt år af gangen, og gemme udregningerne til efterfølgende kald, kan der spares mange beregninger. Jeg benytter en PL/SQL collection (PL/SQL tabel), hvor hvert år får tildelt 1000 elementer (elementer i en collection behøver ikke være fortløbende, og nye elementer kan indsættes før og efter eksisterende elementer). F.eks. vil år 1997 få tildelte elementerne På den måde kan alle år (som understøttes af Carl Friedrich Gauss algoritmen) være i en enkelt collection. Første element i hvert årsinterval, dvs. element for år 1997, benyttes som flag for om året allerede er beregnet. Dvs. ved første opslag på en dato i år 1997, vil værdien af element fortælle at året ikke er beregnet. Derefter beregnes hele året, og flaget I element sættes. Fremtidige opslag på datoer i år 1997 benytter herefter de allerede beregnede værdier. Der er ingen grund til at fylde 365 elementer ind for hvert år, vi kan nøjes med at udfylde de specielle datoer. Mangler et element (medfører exception NO_DATA_FOUND), er der tale om en almindelig dato. Det samlede forbrug af memory, bliver derfor ubetydeligt selv om der spørges til datoer i samtlige de 600 år som algoritmen dækker. Jeg vil ikke vise hele koden her (den kan downloades fra men vil dog vise et centralt udsnit, nemlig de 5 liniers kode, som er alt hvad der skal eksekveres for at besvare et spørgsmål af typen: Hvilken datotype er datoen 16/4-2001? Omformet til et kald til PL/SQL pakken Dates (bliver beskrevet senere) bliver det ldatetype:= Dates.dateType( c_normalday CONSTANT INTEGER := 0; c_grundlovsdag CONSTANT INTEGER := 1; -- Fra og med 1849 c_1maj CONSTANT INTEGER := 2; -- Fra og med 1891 c_christmaseve CONSTANT INTEGER := 3; -- Juleaften c_newyeareve CONSTANT INTEGER := 4; -- Nytårsaften c_saturday CONSTANT INTEGER := 5; c_sunday CONSTANT INTEGER := 6; c_newyearday CONSTANT INTEGER := 7; -- Nytårsdag c_palmsunday CONSTANT INTEGER := 8; -- Palme søndag c_holythursday CONSTANT INTEGER := 9; -- Skærtorsdag c_goodfriday CONSTANT INTEGER := 10; -- Langfredag c_eastersunday CONSTANT INTEGER := 11; -- Påskedag c_eastermonday CONSTANT INTEGER := 12; påskedag c_greatprayer CONSTANT INTEGER := 13; -- Store Bededag c_ascensionthursday CONSTANT INTEGER := 14; -- Kristi himmelfart c_pentecost CONSTANT INTEGER := 15; -- Pinsedag c_pentecostmonday CONSTANT INTEGER := 16; pinsedag c_christmas CONSTANT INTEGER := 17; -- Juledag c_2christmas CONSTANT INTEGER := 18; juledag Figur 1 4 Juni 2001 OracleEkspert

5 TO_DATE('16/4-2001','dd/mm-yyyy') ); der medfører eksekvering af de centrale 5 liniers kode: lidx:= TO_NUMBER(TO_CHAR(pDate,'yyyy')) * 1000; RETURN gcalendar( lidx + TO_CHAR(pDate,'DDD')); EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN RETURN gcalendar(lidx); Hvis det er første gang der spørges på en dato i et givet år, udføres der betydeligt mere kode (se FUNCTION datetype (pdate IN DATE) RETURN INTEGER FUNCTION datetypetoname (pdatetype IN INTEGER) RETURN VARCHAR2 Funktionen datetype modtager en DATE og afleverer en datetype (INTEGER), som er en af følgende konstanter (alle defineret i package specification): Bemærk grupperingen: 0 Normale dage 1-5 Mulige fridage Danske helligdage. Funktionen datetypetoname oversætter returværdien fra datetype til en streng med det danske navn for dagen. Et eksempel på brugen af begge funktioner ses i figur 2: SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 ldate DATE := TO_DATE(' ','yyyy.mm.dd'); 3 BEGIN 4 FOR i IN LOOP 5 dbms_output.put_line( TO_CHAR(lDate + i,'dd/mm-yyyy') ' = ' 6 Dates.dateTypeToName(Dates.dateType(lDate + i)) ); 7 END LOOP; 8 END; 9 / 06/ = 07/ = Lørdag 08/ = Palme søndag 09/ = 10/ = 11/ = 12/ = Skærtorsdag 13/ = Langfredag 14/ = Lørdag 15/ = Påskedag 16/ = 2. påskedag 17/ = 18/ = PL/SQL procedure successfully completed. Figur 2 Dates.sql), men efterfølgende kald med dato i samme år (i eksemplet 2001), vil nøjes med ovenstående 5 linier. Dates pakken Jeg har valgt at lave en løsning, der er så generisk som muligt, da der er stor forskel på hvordan man ønsker at anvende sin helligdagsviden. Bankdage udregnes på en måde, fridage på en anden (endda forskellig fra organisation til organisation, branche til branche etc.). Bl.a. af hensyn til fridagsberegning, understøtter Dates pakken også 1. maj og Grundlovsdag. Tanken er, at man laver en wrapper funktion, dvs. pakker kald til Dates pakken ind i sin egen funktion, der passer 100% til det aktuelle behov. Dates pakken består af 2 funktioner: Performance test SQL> CREATE TABLE datetypes (thisdate DATE, type NUMBER); For at dokumentere at beregning er hurtigere end opslag i en pre-kalkuleret tabel, har jeg sammenlignet performance mellem de 2 metoder. Først den tabel-baserede metode. Tabellen oprettes, fyldes med data og indekseres (se figur 3): Den anonyme PL/SQL blok indsætter 2192 rækker, fra d. 1/ til og med d. 31/ Da vi ikke SQL> DECLARE 2 ldate DATE := TO_DATE(' ','yyyy.mm.dd'); 3 BEGIN 4 WHILE ldate < TO_DATE(' ','yyyy.mm.dd') LOOP 5 INSERT INTO datetypes VALUES(lDate,0); 6 ldate := ldate + 1; 7 END LOOP; 8 END; 9 / SQL> CREATE INDEX datetypes_i ON datetypes(thisdate, type); Figur 3 OracleEkspert Juni

6 skal bruge kolonnen type til noget fornuftigt, indsættes blot 0. Hvis tabellen virkelig skulle bruges til opslag, skulle type naturligvis indeholde en værdi der beskrev den pågældende dato. Hvor hurtigt er tabelopslag så? Vi prøver med følgende, som slår alle 2192 datoer op 1000 gange (se figur 4)! Begge målinger er angivet som gennemsnittet af 3 kørsler. Omsat til procent er beregning ca. 51% hurtigere end tabelopslag. Når man tænker på hvor meget der foregår i kernen ved eksekvering af et SELECT udtryk - så er 51% ikke meget... Konklusion Beregning frem for tabelopslag, er klart at foretrække. SQL> SET TIMING ON SQL> DECLARE 2 ltype INTEGER; 3 ldate DATE; 4 BEGIN 5 FOR I IN LOOP 6 ldate := TO_DATE(' ','yyyy.mm.dd'); 7 WHILE ldate < TO_DATE(' ','yyyy.mm.dd') LOOP 8 SELECT /*+ INDEX(dateTypes datetypes_i) */ type INTO ltype 9 FROM datetypes 10 WHERE thisdate = ldate; 11 ldate := ldate + 1; 12 END LOOP; 13 END LOOP; 14 END; 15 / PL/SQL procedure successfully completed. real: Figur 4 Så benytter vi i stedet beregning, vha. funktionen Dates.dateType: SQL> DECLARE... samme kode som før, men linierne 8 10 er udskiftet med følgende linie 8 ltype := Dates.dateType(lDate); / PL/SQL procedure successfully completed. real: Vi slipper for irriterende vedligeholdelse og så er det hurtigere. Men samtidigt har ovenstående performancetest, fået mine øjne op for hvor langsomt et sprog PL/SQL er Med tanke på hvor lidt kode, der typisk udføres ved et enkelt kald, burde det være langt hurtigere. Måske skulle man alligevel begynde at bruge Java til sine beregningstunge (?) opgaver. Måske skulle jeg teste Java i forhold til PL/SQL? Det ka kun gå for langsomt! PL/SQL pakken Dates kan downloades fra Juni 2001 OracleEkspert

7 ORACLE8 GIS (GEEKY INTERNAL STUFF): PHYSICAL DATA STORAGE INTERNALS Dan Hotka is a Director of Database Field Operations for Quest Software. He has more than 20 years of experience in the computer industry and more than 15 years of experience with Oracle products. He is an acknowledged Oracle expert with Oracle experience dating back to the Oracle v4.0 days. He has co-authored the popular books Oracle Unleashed, Oracle8 Server Unleashed, Oracle Developer Unleashed, and Special Edition Using Oracle8/8i from SAMS Publications and is frequently published in Oracle Professional. He regularly speaks at Oracle conferences and user groups around the world. dhotka@earthlink.net. The relationship of table objects storage (segments) is that there s one segment header and one or more extents, which are made up of one or more contiguous data blocks. The first block of each Oracle segment is the segment header. A segment is made up of at least two blocks - the segment header and the initial extent. CREATE TABLE X (C NUMBER) Storage (INITIAL 1) creates a segment with two blocks. Block size The block size is defined at "CREATE DATABASE" time and can t be easily changed. The default block size for most systems is 2K. Oracle8 supports block sizes from 2K to 64K. Always choose a block size that s an even multiple of the operating system file system block size. If you were to make the Oracle block size smaller than the operating system block size, then extra data would always be read with each read operation. If the Oracle block size isn t an even multiple of the operating system block size, then there will be wasted disk space in the operating system file system. There s a distinct tradeoff between block size and performance. Larger blocks are useful for data warehouse and decision support systems. More data is read into memory with a single read operation, and more index leaf pointers can be stored in a single read operation. If an application has lots of updates and deletes (DML), then smaller blocks are useful. There will be less contention for rows because there will be fewer rows per block. You can query the X$KVIS view to see the actual values of db_block_size. Block header layout All Oracle blocks have similar attributes (see Figure 1). All blocks contain a header area. This header consists of a block type, a block format, relative database address (DBA), SCN, SCN sequence number, a check value, and a tail. These are some important block types: 1 Undo segment header 2 Undo segment block 5 Data segment header 7 Temporary table 11 Data file header Block format refers to whether this is an Oracle7 or an Oracle8 formatted block. The sequence number refers to the order of the blocks within the same SCN. The check value is an optional init.ora setting (DB_CHECK_SUM) that provides integrity checking at the block level. The tail is used as a block consistency check to ensure that the beginning of the block and the end of the block are consistent. This number consists of the SCN + block type + SCN sequence number. There are several methods to visualize or dump the data blocks. In UNIX, use the dd command: dd bs=2k if=/ora8/data/users01.dbf skip=200 count = 5 od -x > pg. In the VMS world, use the DUMP command: DUMP /BLOCKS = (START:<os block #>, END:,os block #>) /OUT = blockdmp.out users01.dbf. The NT world would use HEDIT. A formatted dump can be attained through Oracle via SVRMGR: alter system dump datafile 7 block 201. Since this discussion is about physical storage, this article will discuss the blocks related to physical storage such as segment headers and data blocks. A segment header is always the first block of an object. The segment header has six major areas: extent control header, map header, extent map, and three types of free lists. The extent control header contains the number of extents allocated to this segment, the number of blocks allocated to the segment, DBA of the last block of the extent map (0 if no UNLIMITED EXTENTS is used), number of extent map blocks, high water mark (HWM) extent size, HWM extent number, and HWM block number within the extent. DBA Teknisk Artikel Figure 1. Block Layout Figure 2. Space utilization in a segment OracleEkspert Juni

8 The HWM is the pointer to the DBA of the last block to receive inserts. Blocks below this mark are maintained on free lists. Blocks in extents above this mark have been allocated to the segment but haven t been used yet. Blocks above the HWM are available for SQL*Loader direct load operations, parallel DML, and for inserts once the free list has been exhausted and the HWM has been moved. The map header simply contains DBA information of the next block containing extent map information. The extent map contains the beginning data block DBA and the number of blocks associated with the extent. The size of the extent map is directly related to the block size being used. For example, the extent map will be able to hold 121 extent locations for a 2K block. Oracle7.3 introduced a concept known as unlimited extents. Instead of having the block size constrained by a limited number of extents (such as 121 for a 2K block), Oracle allows for objects to grow and dynamically extend indefinitely by chaining additional blocks to store additional extent map information (see Figure 2). There are three types of free lists that store information about available space within a segment. Master free lists (MFL) contain newly allocated blocks up to the HWM and blocks freed by a committed transaction. Process free lists (PFL) are user-definable (storage parameter FREELISTS N) and are used to reduce contention on the master free list. This list spreads the requests over several blocks. The transaction free list (TFL) holds blocks freed by a particular transaction to see if that same transaction can later use the space. After the commit, this space is then put on the MFL. The MFL contains a flag that says whether the free list is used or not (1 or 0). The segment header also contains the DBA of the first block on the free list chain and the DBA of the last block on the free list chain. The blocks on the free list chain (FLC) will contain a flag indicating that this block is linked to the free list chain and the DBA of the next block on the chain. This information is stored in the cache layer of the data block header. Blocks below the HWM that meets the PCTFREE parameters are managed on the MFL. Finding free space Figure 3 shows how Oracle will look for free space to store a newly inserted row. Oracle searches the uncommitted TFL first. If it finds space, it will use the space; otherwise, it will search the PFL. Once again, if it finds space, it will use the space. Oracle will then search the MFL for free space. If it finds free space, it will move the space to the PFL and use it. Oracle will then search the committed TFLs; if it finds space here, it will move the space to the MFL and begin the whole search process over. If all of this isn t successful, then Oracle will see whether the HWM can be advanced. If it can, it will add this new space to the MFL and search again; otherwise, Oracle will add another extent to the object, advance the HWM, and search the MFL yet again for space. If max extents is hit, then the "max extents exceeded" error is returned; otherwise, the "no more space in tablespace" error is returned. An extent is a contiguous set of blocks as defined by the storage parameter. If the extent size is indicated in bytes, then Oracle will round up the extent size to the nearest multiple of five blocks or to the nearest multiple of the MINIMUM EXTENT storage parameter value (if defined). Oracle will search the dictionary cache first, looking for an exact extent size match. If not found, then it will search the fet$ for an exact or larger extent size match. If no exact match is found, then Oracle will repeat the two searches looking for a larger area. If found, Oracle will use the required extent size from the larger area. If no matches are found, Oracle will coalesce the tablespace and do this whole process again. If again no space is found, Oracle will round down the extent size and try the whole process again. If space still isn t found upon the third loop of this process, Oracle will either extend the tablespace (if option is set) or return an error (see Figure 4). Adjacent unused extents are coalesced together to create larger extents that might satisfy space searches more quickly. Free space can be coalesced via three methods: on demand (as needed during a search, as explained previously), manually "alter tablespace... coalesce," or by SMON. SMON will perform this action for the tablespaces during a space transaction and only if PCTINCREASE is greater than 0 at the tablespace level. Block cache, transaction, and data layers Data blocks also contain a cache layer, a transaction layer, and a data layer. This discussion will be limited Figure 3. Finding free space Figure 4. Dynamic extent allocation 8 Juni 2001 OracleEkspert

9 to data blocks, but it suffices to say that the contents of the data layer are dependent upon the type flag indicating what kind of block this is. The data block contains a header, a table directory, a row directory, row data, and hopefully some free space (see Figure 5). The block header contains the same static block information as all other blocks, as discussed previously. The cache layer contains information about the number of interested transaction lists (ITL) slots, a flag for data or index block, and free list information such as free list flag and next block on the free list (that is, the free list chain). The ITL is used to mark the row locked until the transaction completes. The ITL contains the transaction identifier. The ITL defaults to 1 and is maintained by storage parameters INITRANS and MAXTRANS. The number of ITLs controls how many concurrent DML operations can happen to a particular block. The Transaction layer contains the actual ITL number (or numbers, as determined by INITRANS and MAX- TRANS), the undo address information, a status flag, the number of rows being affected by this transaction, and free space credits. Free space credits holds any space that was freed by an update or delete until the commit actually occurs. ITLs do take space that would otherwise be available for rows. The table directory tracks the tables that have rows in this data block - that is, tables involved in a cluster. Transaction Free Lists (TFLs) are stored in the block as a separate structure and aren t controlled by any external parameters. There are a minimum of 16 per segment, which are created implicitly by Oracle. Each TFL is associated with only one transaction. If the limit of TFLs is reached, then the transaction will wait for a TFL to free. This activity can be monitored with V$WAIT and V$TRANSACTIONS. The row directory contains information about the rows stored in the data block. What s left after rows are added or updated and the block header information is accounted for determines the free space area. As rows are inserted or updated, the row data part grows from the end of the block toward the front. The block header will grow down from the top based on the number of ITLs, rows added, and so forth. This free space is managed by a combination of PCTUSED and PCTFREE storage clause parameters. PCTUSED determines when a block is no longer available for inserted rows. PCT- FREE determines when a block is again available to have inserted rows. Tip: The combination of PCT- FREE and PCTUSED should be 75 or lower. Note that PCTFREE will always default to at least 10 percent, even if it s set lower than 10 percent. Row layout Actual row data is added from the bottom of the free space in a block toward the top. The static part of the row format contains a row flag, a lock byte (ITL entry locking this row), number of columns in this row, and a cluster key indicator (see Figure 6). Then there are a column length (one byte if the length is < 254; otherwise, three bytes) and the actual column data. Trailing null value fields aren t stored. When reading a dump, the next row would be indicated by the presence of another row flag. Some values for row flag include the following: H Head of row piece K Cluster key D Deleted row F First data piece L Last data piece P First column continues from previous location Row migration/row chaining Row migration occurs when an updated row no longer fits into the existing block (see Figure 7). Row chaining occurs when a row is either inserted or updated and it s physically longer than the available block size (see Figure 8). It s been my experience that Oracle will migrate and/or chain rows based on a variety of conditions. Truncate table The truncate command is the quickest way to delete all of the rows from a table. This method of clearing out a table has no recovery. It s fast because it simply sets HWM, MFL, and TFLs to null. If the REUSE option isn t specified (default behavior), all of the extents except for MINEXTENTS are then released back to the tablespace. Full table scans scan through all of the blocks until it reaches the HWM. If objects are loaded with large numbers of rows, then most of the rows are deleted; the table should be reorganized to move the HWM where it belongs rather than leaving it at the end of many empty or almost empty blocks. Direct path loading Direct path loading is a very fast way of loading data into an Oracle database. This method of data loading completely bypasses the Oracle kernel (SGA, background processes, logging, and so forth). Direct path loading happens above the HWM. This method of loading data begins by putting a shared lock on the object being loaded. A temporary segment is then created based on the extent size of the object being loaded. The tablespace must have enough room to accommodate an extent size of the initial and next extent of Figure 5. Data block layout Figure 6. Row layout OracleEkspert Juni

10 Figure 7. Migrated row layout the original table. This temporary segment is populated with the rows, and the extents are then added to the original table, with the HWM moved to the end of these new extents. SQL*Loader and some parallel operations use direct path loading. Temporary segments Temporary segments are needed when Oracle is unable to sort in memory. Create index or select statements that have order by, distinct, group by, or union clauses will cause a sort operation. The INIT.ORA parameter, sort_area_size, defines the amount of memory dedicated for sort operations. When this area is exhausted, then Oracle will use temporary segments to do the sort operation. There are two types of temporary storage: permanent tablespace (the tablespace as we know it) and temporary tablespaces. These are easily created by adding the TEMPORARY clause in the CREATE TABLESPACE command. Tablespaces can be Figure 8. exchanged with the ALTER TABLESPACE command. The basic difference between the two is that SMON will clean up unused temporary segments in a permanent tablespace where the segments are left alone after a sort operation in a temporary tablespace. Also, only temporary segments can exist in a temporary tablespace. This allows the space requirements of sort operations to grow and be maintained throughout the life of the instance. Monitor this sort area via V$SORT_SEGMENT and V$SORT_USAGE. Note: Use a consistent value for initial and next extent size with a PCTINCREASE = 0. Make the extent size a multiple of sort_area_size. Add one db_block size to allow for the segment header in the initial extent. OUGDK Oracle User Group Denmark er en selvstyrende gruppe for Oracle-brugere. Det er for tiden gratis at være medlem, dog skal man have en Oracle-databaselicens for at kunne blive medlem. Gruppen består af en bestyrelse og et antal Special Interest Groups, som afholder møder i Oracle Danmarks lokaler i Ballerup. Indkaldelse til møderne sker via brugergruppens mailliste og via brugergruppens web-side ( Brugergruppens web-side er for tiden ikke tilgængelig. Designer SIG ens arrangementer kan dog stadig findes på DBA SIG Koordinator: Jean-Marc Pedersen Dato for næste møde er endnu ikke fastlagt. Designer SIG Koordinator: Marc de Oliveira, Marc@deOliveira.dk Næste møde: Juni 2001 Sted: Oracle Danmark, Lautrupbjerg 2-6, 2750 Ballerup Emner for næste møde: Vi forsøger nu at få Lucas Jellema til Danmark (ja, tingene ændrer sig hurtigt i denne tid!). Følg med på Developer SIG Koordinator: Lone Aalekjær, loaal@wmdata.com Dato for næste møde er endnu ikke fastlagt. Data warehouse SIG Koordinator: Erik Haar, erh@lundbeck.com Dato for næste møde er endnu ikke fastlagt. Web SIG Gruppen er lukket ned indtil en ny koordinator er fundet. Husk at tilmelde dig til møderne hos Christian.Graversen@Oracle.com (ellers får vi for få kager/vand!!) 10 Juni 2001 OracleEkspert

11 TOP-N QUERY Af Martin Jensen - Oracle Consulting. Martin har siden 1982 arbejdet med bl.a. Oracles databasekerne, samt med anvendelse af Designer s Repository til diverse kvalitetsbevarende øvelser. Martin.Jensen@Oracle.com Allerførst må vi lige skalere EMP tabellen lidt op, hvortil vi skal bruge en tabel med ethundrede tusinde rækker: Antag at all_tab_columns har mere end 50,000 rækker: create table hundred_thousend as select rownum r from all_tab_columns where rownum <= union all select rownum r from all_tab_columns where rownum <= 50000; Opret nu tabellen BIGEMP med 1,400,000 rækker: create table bigemp storage ( initial 1M next 1M pctincrease 0 ) as select empno, ename, sal * r salary from scott.emp, hundred_thousend; Så mangler vi bare at generere statistik om tabellen: analyze table bigemp compute statistics; Vores første bud på at finde rækkerne med de 10 højeste lønninger kunne se således ud: select ename, salary from bigemp where rownum <= 10 order by salary desc; ENAME SALARY SMITH 8000 SMITH 7200 SMITH 6400 SMITH 5600 SMITH 4800 SMITH 4000 SMITH 3200 SMITH 2400 SMITH 1600 SMITH 800 Ups - det gav jo ikke det ønskede resultat fordi order by afvikles efter de 10 rækker fremfindes! Men hvad så med at bede databasen om at sortere før de 10 rækker trækkes ud? Vi ved jo at en union, distinct eller group by foretager en intern sortering! select -1* s, ename from ( select -1*salary s, ename from bigemp union select 1, 'hello' from dual where 1 = 2) where rownum <= 10; -1*S ENAME KING KING KING KING KING KING KING KING KING KING 10 rows selected. Elapsed: 00:00:20.40 Se Execution Plan på figur 1. Og med anvendelse af distinct kunne det se således ud: select -1*s, ename from ( select distinct -1*salary s, ename from bigemp) where rownum <= 10; -1*S ENAME KING KING KING KING KING KING KING KING PL/SQL Teknisk Artikel Execution Plan SELECT STATEMENT Optimizer=ALL_ROWS (Cost=19201 Card= Bytes= ) 1 0 COUNT (STOPKEY) 2 1 VIEW (Cost=19201 Card= Bytes= ) 3 2 SORT (UNIQUE STOPKEY) (Cost=19201 Card= Bytes= ) 4 3 UNION-ALL 5 4 TABLE ACCESS (FULL) OF 'BIGEMP' (Cost=598 Card= Bytes= ) 6 4 FILTER 7 6 TABLE ACCESS (FULL) OF 'DUAL' (Cost=1 Card=82) Statistics recursive calls 39 db block gets 3952 consistent gets 3951 physical reads 0 redo size 795 bytes sent via SQL*Net to client 424 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 1 sorts (disk) 10 rows processed Figur 1. Execution Plan OracleEkspert Juni

12 KING KING 0 rows selected. Elapsed: 00:00:18.87 Se Execution Plan på figur 2. Men hov! Her står jo at læse at vi anvender en reel sortering (1 sort (disk)), selvom vi i 8iNF kursusmaterialet fortalte, at det faktisk er muligt at finde de n største uden at foretage en egentlig sortering; og ifølge development fortsætter vi med dette i første release af Oracle9i Execution Plan SELECT STATEMENT Optimizer=ALL_ROWS (Cost=19198 Card= Bytes= ) 1 0 COUNT (STOPKEY) 2 1 VIEW (Cost=19198 Card= Bytes= ) 3 2 SORT (UNIQUE STOPKEY) (Cost=19198 Card= Bytes= ) 4 3 TABLE ACCESS (FULL) OF 'BIGEMP' (Cost=598 Card= Bytes= ) Statistics recursive calls 39 db block gets 3952 consistent gets 3951 physical reads 0 redo size 795 bytes sent via SQL*Net to client 424 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 1 sorts (disk) 10 rows processed Figur 2. Execution Plan Men fra Oracle8i kan samme resultat formuleres lidt enklere: select ename, salary from ( select ename, salary from bigemp order by salary desc) where rownum <= 10; ENAME SALARY KING KING KING KING KING KING KING KING KING KING rows selected. Elapsed: 00:00:16.93 Se Execution Plan på figur 3. Bemærk i øvrigt at det fra Oracle8i faktisk er muligt at have views med order by: create or replace view bigemp_v as select ename, salary from bigemp order by salary desc; select ename, salary from bigemp_v where rownum <= 10; I øvrigt fås samme resultat ved at anvende de nye analytiske SQL muligheder men det er ikke hurtigere, check selv: select ename, salary from ( select ename, salary, rank() over (order by salary desc) as salary_rank from bigemp ) where salary_rank <= 10; select ename, salary from ( select ename, salary, row_number( ) over (order by salary desc) as salary_row_number from bigemp) where salary_row_number <= 10; Execution Plan SELECT STATEMENT Optimizer=ALL_ROWS (Cost=19198 Card= Bytes= ) 1 0 COUNT (STOPKEY) 2 1 VIEW (Cost=19198 Card= Bytes= ) 3 2 SORT (ORDER BY STOPKEY) (Cost=19198 Card= Bytes= ) 4 3 TABLE ACCESS (FULL) OF 'BIGEMP' (Cost=598 Card= Bytes= ) Statistics recursive calls 39 db block gets 3952 consistent gets 3951 physical reads 0 redo size 797 bytes sent via SQL*Net to client 424 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 1 sorts (disk) 10 rows processed Figur 3. Execution Plan 12 Juni 2001 OracleEkspert

13 Fax eller send kuponen til: Pythia Information Kongensvej Frederiksberg Fax: ABONNEMENT Ja tak, jeg ønsker: Eller bestil via vores hjemmeside: Eller nedenstående oplysninger til: salg@oracleekspert.dk stk stk stk stk stk stk stk stk OracleEkspert nr 1 - DKK 125,00 pr stk...dkk OracleEkspert nr 2 - DKK 125,00 pr stk...dkk OracleEkspert nr 3 - DKK 125,00 pr stk...dkk OracleEkspert nr 4 - DKK 125,00 pr stk...dkk OracleEkspert nr 5 - DKK 125,00 pr stk...dkk OracleEkspert nr 6 - DKK 125,00 pr stk...dkk OracleEkspert nr 7 - DKK 125,00 pr stk...dkk 1 års abonnement (6 numre) - DKK 600,00 pr stk...dkk Jeg vil gerne begynde abonnementet med OracleEkspert nr: - 40% ved samtidig køb af minimum 5 blade eller abonnementer...dkk - 45% ved samtidig køb af minimum 10 blade eller abonnementer...dkk - 50% ved samtidig køb af minimum 20 blade eller abonnementer...dkk - 60% ved samtidig køb af minimum 50 blade eller abonnementer...dkk Bemærk: Når abonnementerne købes med mængderabat bliver alle blade sendt i én samlet forsendelse. Det er altså ikke muligt at få bladene sendt til individuelle modtagere. Pris i alt...dkk Firma: Navn: Adresse: Postnr/By: Land: Priserne er excl moms. Ved hver tegning af minimum 1 års abonnement på OracleEkspert sender vi et stk signeret kvalitetskopi af Oraclerne til den læser, som har refereret den nye abonnent til os. Kopien er trykt på kraftigt papir og signeret med rød tush. En OracleEkspert-læser er en person med eget abonnement eller en person ansat i et firma, som har tegnet abonnement på OracleEkspert. Refereret af: Adresse: Man kan ikke referere et abonnement til sig selv. Postnr/By: Som referencegave ønskes en signeret kopi af Oraclerne fra OracleEkspert: Nr 1 Det er fordi de ikke kan li fremmednøgler... [ ] Nr 2 Det er jo også vores Designer mand... [ ] Nr 3 Har du prøvet at skifte din Where-clause ud med en Santa clause?... [ ] Nr 4 Pro*C... [ ] Nr 5 No more table space...[ ] Nr 6 Komme i Forms...[ ] OracleEkspert Juni

14 Fortsat fra side 3 enten/eller, for hvis man vil have virkelig ekspertviden ind, så er det yderst sjældent man som virksomhed har tid og råd til at kultivere specialer. Det er nok her, jeg finder at dit indlæg mest lugter af sure tæer, for der er i de fleste tilfælde ikke noget alternativ til at bruge konsulenter. Ikke kun fordi de "dygtige" er selvstændige i dag, men også fordi det er uøkonomisk for en virksomhed at opretholde et beredskab af viden, som kun skal bruges sporadisk. Hvor meget kan du forlange mht. pris-effektivitet, fleksibilitet og hurtige kurs-ændringer af fastansat personale? Ikke meget, ihvertfald ikke i de virksomheder, hvor der "går fagforening i den" med hæve/sænke-borde, frisk frugt, Ginseng, børnepasning og vitaminpiller (dette er virkelig eksempler fra danske virksomheder). Men konsulenter kan jo altid holdes op mod hinanden, og har motivationen til at være på forkant hurtigt (hvilket iøvrigt er noget af det, der gør det sjovt for dem. En person, der laver noget han/hun er god til, står jo dybest set stille og mister markedsværdi). Marc de Oliveira: Jeg vil medgive dig, at jeg burde have håndteret din pointe om deling af meget specialiseret viden lidt bedre. Den var ikke central for min leder, men det fik jeg ikke rigtigt gjort opmærksom på. Jeg ser konsulentmarkedet som 10% meget dygtige specialister, og 90% jævne konsulenter, som lige så godt kunne være fastansat. Min erfaring, da jeg havde seks konsulenter gående, var at jeg selv var mindst 2-3 gange hurtigere om at løse en hvilken som helst af vores opgaver end nogen af konsulenterne. Kun XXX, som vi har haft gående i det meste af tre år, kan gå ind og løse opgaver lige så effektivt, som jeg selv. Så det er ikke kun merprisen, der er en faktor. Det er prisen holdt op mod den meget lave effektivitet man kan forvente af en konsulent, i den første meget lange tid (her tænker jeg så ikke på de 10%, som er meget dygtige til lige præcis den opgave, de bliver hyret til at løse, men på de 90% all-round'ere, som har 5-10 års erfaring med alt muligt inde for Oracle-verden). Jeg er helt enig i, at vi er ved at bevæge os over i en struktur, hvor vi alle bliver mere selvstændige, og det er netop denne bevægelse min leder stiller spørgsmålstegn ved. Er det virkelig i nogens interesse at vi alle bliver så uafhængige? Jeg er ikke enig i, at det nødvendigvis er de dygtigste, som bliver selvstændige. I univeristetsverden har man også kunnet fastholde mange af de dygtigste folk ved give dem frie rammer til at forske og adgang til meget store ressourcer at arbejde med - på trods af den begrænsede løn. Denne rubrik er åben for alle spørgsmål, forslag og tilkendegivelser om Oracle eller OracleEkspert, hvad enten de er tekniske eller mere strategiske. Indlæg kan godt være anonyme, men redaktionen skal vide, hvem der har skrevet dem. Oracle Danmark Support og Metalink tilbyder, at besvare de tekniske spørgsmål. SKRIV EN ARTIKEL Vi betaler dig 700 kr pr side for artikler, som trykkes i OracleEkspert (400 kr pr side for engelsksprogede artikler). Du kan også komme til at vinde OracleEkspertprisen, som i december-nummeret uddeles til forfatteren af årets bedste artikel. Deadline for artikler til OracleEkspert nr 7 (august 2001) er fredag den 11. juli Har du lavet noget genialt, som kunne have interesse for andre Oracle-udviklere, ledere, planlæggere mv, så skriv en artikel til OracleEkspert. Sådan gør du: Aflever et oplæg på ca 200 ord via vores hjemmeside: Når oplæget er godkendt af redaktionen, kan du skrive selve artiklen. Du kan hente en template på vores hjemmeside. Artiklen skal også godkendes af redaktionen. Dette sker ud fra kriterier om seriøsitet, relevans og teknisk niveau. Artiklerne skal henvende sig til erfarne Oraclefolk. Emnet skal blot være relateret til Oracle. Den normale størrelse af en artikel er 3-6 sider. Hvis din artikel falder udenfor denne størrelse, bør du gøre os opmærksom på det, inden du begynder at skrive den. Tips: Tips, som trykkes i OracleEkspert, belønnes med en flaske Leoville Barton 1997 Grand Cru til en værdi af ca DKK 400. Indryk en jobannonce i OracleEkspert DKK (excl moms) for 1/4 side Salg@OracleEkspert.dk 14 Juni 2001 OracleEkspert

15 SIMULATING OPS$ USERS THROUGH A BROWSER Marc de Oliveira is Team Leader at Novo Nordisk Engineering. He has worked with Oracle products (mainly CASE/Designer) since He is coordinator of the Danish Designer SIG and the Scandinavian reseller of DesignAssist. Marc@deOliveira.dk. What s your problem? Why would you want to simulate OPS$ users through a browser? To those not familiar with OPS$ users I should quickly fill you in. OPS$ users are also known as Operating System authenticated users. This is a very old Oracle feature that lets you bypass the Oracle login for users that have already been authenticated by a secure operating system like Unix or MS-network. In case we are sure that user X has been logged securely into the operating system there really is not much point in demanding an Oracle username and password, because we already know who the user is. So the OPS$ feature allows the end user to connect to an Oracle database without having to remember an Oracle username and password. Sounds great, right? If all your users are authenticated when logging into the same MS-domain they should be able to pass that login information to the Oracle database automatically, so that they can run intranet applications without being prompted for an Oracle username and password. Well, unfortunately Oracle does not support that, but if you would like to do it anyway then read on. The solution presented here is only relatively secure. It is secure enough to only allow users that are authenticated to the OS to login to the Oracle database. But smart Oracle users will be able to find a way to log into the database as another OS user than the one they logged into the OS as. You can do a number of things to diminish this loophole, but it will always be there. I ll get back to the security issues at the end of the paper. The solution shown here will work on any Oracle WebServer (WAS, OAS or ias). In the following I will be using the term WebServer referring to any of the Oracle WebServers. Why simulate? Why not use real OPS$ users? Operating System authentication has been a standard feature in Oracle for the past ten years but unfortunately it never made it into the Internet Age. The Internet Changes Everything, well, for people using OPS$ users it really did, because they had to give up this feature to be able to let their users connect individually to the database through a browser (for WebForms, WebDB or Designer WSG modules). OPS$ users still work in Client/Server mode for Forms, Reports, SQL*Plus etc but if the same users have to access Oracle through a browser as well, you must redefine them as regular Oracle users with an individual username and password, because OPS$ users and regular Oracle users cannot co-exist. You cannot create an Oracle user that can connect both as an OPS$ user (without the username and password) and as a regular Oracle user (with the username and password). So, we need to define an architecture that will allow for Operating System authentication on both Client/Server and Web applications without using the build-in OPS$ feature. We have to simulate OPS$ users. The Oracle username and password The first thing to do is to define a way to map OS usernames with Oracle usernames and passwords. On our site we have decided to map the OS username with the Oracle username directly but you are not restricted to that. You could decide to add OPS$ to the OS username, so that OS user USER1 logs into the database as OPS$USER1, or you could completely encrypt the OS username into an unrecognizable Oracle username, so that OS user USER1 becomes Oracle user XYZ The simplest possible function for mapping an OS username to an Oracle username follows here: FUNCTION MAKE_USERNAME (p_os_username in varchar2) return varchar2 IS v_db_username varchar2(30); BEGIN v_db_username:= p_os_username; RETURN (SUBSTR(v_db_username,1,30)); END; In parallel, it is necessary to define a way to map the DB username with the Oracle database password. The following function does that in a very simple way. I will leave it up to you to improve the function to make a more advanced mapping. FUNCTION MAKE_PASSWORD (p_db_username in varchar2) return varchar2 IS v_password number:= 1; BEGIN FOR i IN 1..length(p_db_username) LOOP v_password:= v_password * ASCII(SUBSTR(lower(p_db_username),i,1)); END LOOP; RETURN( PW SUBSTR(TO_CHAR(v_password),1,28)); END; Creating database users The next step is to create (or update) your database users using the above functions so that they all have a derivable password not known to themselves. A create script would look something like this: SET FEEDBACK OFF SET LINESIZE 200 SET PAGESIZE 0 SET HEADING OFF SPOOL create_user.ex SELECT 'CREATE USER ' MAKE_USERNAME('&1') Web Teknisk Artikel OracleEkspert Juni

16 ' IDENTIFIED BY ' MAKE_PASSWORD(MAKE_USERNAME('&1')) ' DEFAULT TABLESPACE DEFAULT_TS ' ' TEMPORARY TABLESPACE TEMP_TS;' FROM DUAL; SPOOL OFF START create_user.ex HOST del create_user.ex while a script for updating all your existing users would look something like this: SET FEEDBACK OFF SET LINESIZE 200 SET PAGESIZE 0 SET HEADING OFF SPOOL update_users.ex SELECT 'ALTER USER ' USERNAME ' IDENTIFIED BY ' MAKE_PASSWORD(USERNAME) ' DEFAULT TABLESPACE DEFAULT_TS ' ' TEMPORARY TABLESPACE TEMP_TS;' FROM SYS.DBA_USERS WHERE USERNAME IS NOT NULL AND USERNAME NOT IN ('SYS', 'SYSTEM'); SPOOL OFF START update_users.ex HOST del update_users.ex Now that all your users do not know their own passwords you really need to go the next step, so that they can automatically be logged on! Automatic login through the Web The logging into the database through the web browser is divided into three steps. First, we need to extract the login information, then we need to perform the login without making the WebServer invoke the login dialog. The third step is a necessary extra redirection. These steps are explained in the following. Extract the OS Username The Oracle WebServer does not have direct access to the OS username of the users requesting access to the database, so we need to extract the OS username in the MS environment. This can be done easily by using a Microsoft product like Active Server Pages (ASP). The ASP page needs to be called with the name of the Oracle procedure to be executed as an argument, so that the user can be redirected to the desired PL/SQL module after login. The URL to the ASP will look something like this (let us say that the ASP file is called START.ASP): to ASP directory>/ start.asp?module=mymodule$.startup To extract the argument MODULE and the current users OS username, the ASP file must look like this: <% p_module = Request("MODULE") v_os_username = LCase(Request.ServerVariables("Remote_User")) %> We then need to make ASP functions corresponding to the above MAKE_USERNAME and MAKE_PASS- WORD to map the extracted OS username to the corresponding database username and password. The main difference between ASP and PL/SQL is that you do not need to define your variables. MAKE_USERNAME would look like this: <% v_db_username = v_os_username %> MAKE_PASSWORD would look like this: <% i = InStr(v_os_username,"\") v_db_username = Mid(v_db_username,i+1,Len(v_db_username)-i) v_password = 1 for j = 1 to Len(v_db_username) v_password = v_password*asc(mid(v_db_username, j, 1)) next v_password = "PW" & v_password %> At this point, the ASP page have values for p_module, v_os_username, v_db_username and v_password. Note: If the module which you wish to call (p_module), has arguments you will have to hide the &-characters so that they are not interpreted as arguments for the ASP page. You could replace the &-characters with *- characters, like this: to ASP directory>/ start.asp?module=mymodule$.startup? myarg1=a*myarg2=b Log onto Oracle through the ias The actual logging into the Oracle database can be done from the above described ASP page using a little JavaScript to redirect the browser to an Oracle module. The login information can be placed in the URL like this: so the necessary JavaScript code will look as shown in figure 1. The <URL to plsql-cartridge> looks different depen- <% response.write "One moment, please..." Response.Write "<SCRIPT LANGUAGE=""JavaScript"">" + CHR(13) Response.Write "<!--" + CHR(13) Response.Write "{"+ CHR(13) Response.Write "self.location.href = "" & v_db_username & ":" & v_password & "@<URL to plsql-cartridge>/redirect?p_arg1=" & p_module & """"+ CHR(13) Response.Write "}"+ CHR(13) Response.Write "// -->"+ CHR(13) Response.Write "</SCRIPT>"+ CHR(13) %> Figure 1. Log onto Oracle through ias 16 Juni 2001 OracleEkspert

17 ding on which WebServer you are using. The second redirection Note that the above JavaScript is redirecting the browser to a plsql-module called REDIRECT with p_module as an argument. This second redirection is necessary to remove the username and password from the URL. If we did not do this, the username and password would permanently be visible in the URL, which would allow another user to note and reuse that username and password from his/her own computer to login as the other user. Another problem with keeping the username and password in the URL is that List Of Values generated from Designer will not work because the URL somehow is not recognized. As the REDIRCT procedure is called, the user is logged into the database, so we can now make the second redirection to the desired module without specifying the username and password. The REDIRECT procedure should look something like this: htp.print( '<html> ' '<head> ' '<META HTTP-EQUIV="REFRESH" CONTENT="0;' ' URL=' REPLACE(p_arg1,'*','&') ' ">' '</head>' '</html>'); The REPLACE is for converting the argument separation *-characters back to the necessary &-characters (se section Extract the OS Username). Done! With the above described ASP page and REDIRECT procedure installed on you system, MS-domain users will be able to access the Oracle procedure MYMOD- ULE(MYARG1, MYARG2) through their own schema, without being prompted for a username and a password. Just let them click on a link like this from a simple HTML page: to ASP directory>/ start.asp?module=mymodule$.startup? myarg1=a*myarg2=b Automatic login through Client/Server As Oracle schemes cannot be both OPS$ users and regular users at the same time we cannot use the supported OPS$ feature for our Client/- Server modules after having implemented the a- bove architecture for connecting to the database through a browser. Instead we need an architecture corresponding to the one for Web access where a startup form is called with a minimal connect string that can then calculate the database username and password to be used, make that connection and then call the desired form. declare v_os_username varchar2(30); v_db_username varchar2(30); The Minimal Scheme First you need a minimal scheme on the database that can connect to the database and nothing else. You might create the scheme like this: CREATE USER STARTUP IDENTIFIED BY NOT_SECRET; GRANT CONNECT TO STARTUP; This scheme is used to launch the startup form with the name of the desired form as a parameter, like this: Ifrun60.exe module=startup userid=startup/not_secret p_module=myform The Logon Scheme Next you need another minimal scheme on the database that can connect to the database and has access to the MAKE_USERNAME and MAKE_PASSWORD functions. You might create the scheme like this: CREATE USER LOGON IDENTIFIED BY SECRET; GRANT CONNECT TO LOGON; GRANT EXECUTE ON MAKE_USERNAME TO LOGON; GRANT EXECUTE ON MAKE_PASSWORD TO LOGON; This scheme is used from within the startup form to connect to the correct database user and launch the desired form. I need both the STARTUP scheme and the LOGON scheme to prevent end users from seeing the password of the LOGON scheme. More on this in the Security section. The Startup Form The startup form is a simple form with one small navigable item, a parameter called p_module and a whennew-form-instance trigger for launching the desired form. The trigger will look like figure 2. To get the OS username of the current user, I use the Win_API_Environment package contained in the D2KWUTIL.PLL library. The newest version of the D2KWUTIL.PLL library can v_password varchar2(100); v_connect varchar2(30); begin v_os_username:= lower(win_api_environment.get_windows_username); v_connect:= get_application_property(connect_string); logout; logon('logon', 'SECRET@<connect string>'); v_db_username:= make_username(v_os_username); v_password:= make_password(v_db_username); logout; logon(v_db_username, v_password '@' v_connect); new_form(:parameter.p_module); end; Figure 2. When-new-form-instance trigger be downloaded from: ftp://oracle-ftp.oracle.com/dev_tools/ OracleEkspert Juni

18 patchsets/dev2k/win95nt/d2kwutil/ That s it The resulting functionality is that the end user starts up the startup form that barely shows up before the desired form is opened instead. The startup form is not running in the background. Security issues In this section I will discuss some of the security issues raised by this OPS$ simulation. The ASP files The code for generating the database usernames and passwords is placed in the start.asp file which is just a simple text file. You should make sure that end users do not have read access to that file, while the ASP web server (Microsoft InformationServer) must be setup to be able to execute ASP files in the directory containing the start.asp file. This can be achieved by placing the ASP file in a directory only accessible to one specific user (it could be the Administrator), and map that directory to a virtual directory defined to access the physical directory as that user. Make sure that the virtual directory is defined with the Source option disabled, so that end users cannot request to see the source code of the ASP file. Another solution would be to wrap the code for making the username and password in an ActiveX component on the InformationServer and place the component somewhere not accessible to external users. Then the ASP file would just call the ActiveX component without revealing how the username and password is constructed. Getting around the MS-domain When logging into a PC, end users have the option to bypass the login dialog by pressing the Cancel button. When doing this, they will still have web access and, hence, be able to invoke the start.asp file. If end users bypass the login dialog they will not get an OS username and therefore the start.asp program will not be able to log them into the database. Even if the end user creates a local user and logs in locally as that user, that OS username will not be retrieved by the Request.ServerVariables("Remote_User") command. The MAKE_USERNAME and MASK_PASSWORD functions These functions can be used to generate the database username and password of any OS user so you should be very careful with whom you grant them to. The only scheme that needs access to these functions is the LOGON scheme, so be very careful about who gets to know about the password to the LOGN scheme. The password to the LOGON scheme is written in the STARTUP form, so it is important that end users do not have access to the STARTUP.FMB file. The password to the STARTUP scheme is kind of public but that does not affect security as the START- UP scheme does not have access to anything. The URL As the database username and password is passed to the REDIRECT procedure through the URL, it will be visible to the end user for a short time while the page is performing the second redirection (see the section about the second redirection). This means that an end user is exposed to his/her own database username and password for a short time (less than a second) every time a start.asp link is invoked. This is not a serious security problem because all users are able to connect as themselves, anyway. It still makes it possible for one end user to see another end user s database username and password if he/she can get access to the other end user s PC. To prevent this problem, end users must know that they should not leave their PCs without locking them first (or log of the domain entirely). Another solution is to expire the passwords often (see the next section). Password expiration Because all passwords are systematically generated using the function MAKE_PASSWORD it is easy to have them changed often to improve the security. By doing this, an end user that somehow got hold of another end user s database username and password (as explained in the previous section) would only be able to use that login information for a limited period. If you make the MAKE_PASSWORD function dependent of the current date and have a recurring job updating all passwords accordingly every night just after midnight, any password would only be valid for 24 hours. If you want to expire the passwords more often than this (every hour, maybe) you should make sure that the web server is set to Keep Database Connection Open between Requests, so that users are not forced reconnect all the time. Conclusion So there you have it. If you trust your MS-network, with a little PL/SQL, JavaScript, ASP, HTTP and HTML it is possible to let your users individually log directly into the database without prompting them for at username and a password. It is not a completely secure architecture but for most organizations I would say that it is secure enough because, 1) end users cannot get access to the database without logging into the MS-network first, and 2) after logging into the MS-network they have to be pretty smart to get access to another account than the one they logged onto the MS-network with. 18 Juni 2001 OracleEkspert

19 16. maj 2001 Oracle databasen er #1 til CRM 57% af all CRM-systemer er ifølge TDWI (The Data Warehouse Institute) baseret på Oracle databaser. Microsoft er #2 med 26% og IBM er #3 med 17%. Se også: tellmemore/? maj 2001 FastForward Mobile and Corporate Directory Oracle annoncerede i dag et nyt produkt, som gør det muligt for medarbejdere at få adgang til og egne og kollegaers kalenderoplysninger fra mobiltelefoner og andre ledningsfri enheder som PDA er. Systemet kan installeres på 15 dage. En række firmaer har allerede bestil produktet. Deriblandt Cap Gemini og Hewlett-Packard. 15. maj 2001 NATO implementerer E-Business Suite Oracle og NATO annoncerede i dag at Nato implementerer E-Business Suite i 19 hovedkvarterer fordelt i 12 forskellige lande. Produktet kaldes NATO Automated Financial System og installeres af Oracle Consulting og Support Service. Se også: tellmemore/? maj 2001 Microsoft går efter Oracle og Sun Chief Executive Steve Ballmer sagde i dag, at Microsoft vil gå efter servermarkedet. I dag udgør Microsofts salg af serversoftware 12% af Microsofts indtægter (ca USD 3 mia), men Ballmer forudså, at det på sigt kunne nå helt op på 20%. 24. april 2001 Ellison peger på efterfølger Larry Ellison regner med at blive siddende som administrerende direktør for Oracle i mindst 5-10 år endnu, men forespurgt om hvem der var nummer 2 efter at Ray Lane forlod Oracle, peger han på to personer: Executive Vice President Safra Catz og Chief Financial Officer Jeff Henley. Ellison siger at han desuden er ved at køre et antal yngre personer i stilling til at kunne overtage firmaet. 23. april 2001.NOW overhaler.net Oracle kritiserer i dag, at Microsoft endnu ikke har leveret.net det lovede udviklingsmiljø til mobil udvikling. Oracle tilbyder allerede Shared Web services.now og udviklingsmiljøet OracleMobile Online Studio, som er til 100% netbaseret udvikling med udvikling, afprøvning og implementering via nettet. Med få liniers programmering kan shared services integreres. I dag tilbydes bla Location awareness, Driving Directions og Yellow Pages. 12. april 2001 Oracle #1 i sikkerheds-certificering Oracle offentliggjorde i dag at deres database har fået 13 sikkerhedscertificeringer. Disse inkluderer ICSEC, ITEC og Common Criteria. Til sammenligning har Microsoft een certificering, mens IBM har nul. cashing foretaget af eweek kan antallet af genererede dynamiske websider per sekund øges med 30 gange ved at bruge ias9i. 31. marts 2001 Ellison får forbud mod at lande jetjager Larry Ellison har fået afslag på et krav om at få lov til at lande sin Gulfsteam V jetjager i San Joses internationale lufthavn mellem kl. 23:30 og 06:30. Afslaget betyder at Ellison må tilbage i retten den 9. april for at fortsætte sagen mod San Jose. Ellison er ved at bygge 9.4 hektar villa i japansk stil ved Woodside til USD 80 mill. Det hævdes at Ellison har brudt landingsforbudet seks gange på et år. Det er forbudt at lande fly på over 34 tons om natten, men selv om Ellisons jet kan lastes til 41 tons hævder hans pilot at det aldrig vejer mere end 34 tons, når de lander i San Jose. Desuden støjer Gulfstream V jetjageren mindre end mange fly, som vejer mindre end 34 tons. 26. marts 2001 Oracle vil bygge digitalt hospital Hospital and rehabilitationchain HealthSouth Corp. og Oracle vil bygge et digitalt hospital, som skal forbedre patienternes behandling og eliminere papirarbejdet. Målet er at have udviklet USAs teknologisk mest avancerede hospital inden udgangen af Nyheder 30. april 2001 Langsomt salg de næste 2-3 kvartaler George Roberts, Oracle's executive vice president of North American sales, sagde i dag, at salget, grundet den generelle udmatning i den amerikanske økonomi, kunne forventes at gå langsomt de næste 2-3 kvartaler. Rygter siger, at Oracle snart bliver nødt til at nedskrive forventningerne til 4. kvartal, som ender i maj. 9. april 2001 Oracle annoncerer idevelop2001 Online idevelop2001 Online er en 100% web-baseret 24x7 løsning til uddannelse og træning via OTN. OTN rundede samtidig 1.5 millioner medlemmer. 4. april 2001 SAP og Yahoo går sammen om at udvikle portal software SAP og Yahoo vil bygge software til at lave business-portaler. 4. april 2001 eweek bekræfter at ias9i giver øget performance Ifølge en undersøgelse af ias9is indbyggede statiske og dynamiske 21. marts generation af New Internet Computer I dag blev 2. generation af NIC en offentlig gjort. Den koster USD 199 og er baseret på NIC OS version 2.0. Ellison hævder stadig, at NIC en er det næste evolutionære skridt efter PC en. 20. marts 2001 Oracle vil fyre 2% af medarbejderne For at imødegå den langsomme økonomi vil Oracle nedlægge 866 stillinger. OracleEkspert Juni

20 PL/SQL Metode Teknisk Artikel CUTTING CODE WITH STYLE PART II Scott Hollows is Product Manager for Seeristic. He is an expert in a wide range of Oracle technologies and was previously Senior Principal at Oracle s world corporate headquarters in Redwood Shores, California. shollows@seeristic.com Introduction This article is part II of a two part series that explains a recommended coding style that is easy to write, read and maintain. In the last issue, we examined commenting and layout issues for SQL and PL/SQL. This issue will focus on various structures of SQL and PL/SQL including SELECT, INSERT, IF and LOOPS. SELECT Statements The layout of this SELECT statement is easy to read /* Data Model (*1) EMP >- 1 DEP >- 2 LOC */ and maintain. Of course, it does take a little extra effort to write, but the effort is well worth the benefits. It includes the following features: (*1) A Data Access Map represents how the query is joining the tables in the query. Data Access Maps are covered in more detail in the following section of this article. For further clarification, the joins numbers that in the Data Access Map ( 1 and 2 ) are also indicated in the Join section of the query as noted in (*5) below. This doubling up of effort significantly improves the readability of your code, but you must take extra care to keep the two in synch. (*2.a) Code Source Indicator : The first part of the comments EMP_PKG.- validate_emp indicates where the query can be found within the many application files and program units that make up your application. In this particular case, the Code Source Indicator shows that the query is part of a a procedure within a database package. Since these comments are part of the query itself, the comments will appear within database trace files. So if someone is examing the query in the trace file, they will immediately know where to find the query in the application. Trust me on this one scanning through hundreds of files to find the source code is not a pleasant experience and this simple technique removes this unpleasant task. Please read *2.a and 2.b further notes below (*2.b) Tuning Comments The tuning comments Tuned 20-MAY-2001 SHOLLOWS indicate that this query has been tuned, and by whom and when. I am constantly seeing applications where people have put a lot of effort into tuning (usually as a late phase in development) and do not bother to indicate that this effort has been done. If you don t add tuning comments, no one will know whether the query has been tuned or not and they may SELECT /* EMP_PKG.validate_emp : Tuned 20-MAY-2001 SHOLLOWS */ (*2a & b) EMP.id employee_id (*3),EMP.salary from emp EMP (*4),dep DEP,location LOC where /* Joins */ (*5.a) EMP.dept_id = DEP.dept_id -- 1 (*6) And DEP.location_id = LOC.location_id -- 2 /* Restrictions */ (*5.b) And EMP.status = ACTIVE And EMP.end_date <= sysdate (*7.a) (*7.b) Figure 1. Select statement have to end up duplicating your tuning effort now knowing that this has already been done. Another nice feature of this Tuning Comment is that it will appear in database trace files since the comment is part of the query itself. Please read *2.a and 2.b further notes below (*2.a and 2.b further notes) Optimizer Hints If you add a database optimizer hint such as /*+ INDEX (EMP EMP_STATUS_I) */ the optimizer hint must appear in a separate comment that is placed before the Tuning Comments and Code Source Indicator Comments otherwise the database will ignore the optimizer hint! SELECT /*+ INDEX (EMP EMP_STATUS_I) */ /* EMP.FMB validate_emp etc... */ Auto-Removal of Comments Unfortunately, some client programs (including Oracle Forms) strip out all SQL comments except for optimizer hints before sending the SQL to the database. Oracle Forms does this because it believes that the decrease in network traffic and effort in parsing the query is worth the extra effort that it takes to remove the comments. So, the effort that you put into commenting may not make it to the database! As a result you cannot rely on a lack of tuning comments within the trace file to indicate that the SQL has not been tuned. Even so, it is well worth the effort 20 Juni 2001 OracleEkspert

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Portal Registration. Check Junk Mail for activation  . 1 Click the hyperlink to take you back to the portal to confirm your registration Portal Registration Step 1 Provide the necessary information to create your user. Note: First Name, Last Name and Email have to match exactly to your profile in the Membership system. Step 2 Click on the

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1 IBM Network Station Manager esuite 1.5 / NSM Integration IBM Network Computer Division tdc - 02/08/99 lotusnsm.prz Page 1 New esuite Settings in NSM The Lotus esuite Workplace administration option is

Læs mere

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind

Læs mere

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

Black Jack --- Review. Spring 2012

Black Jack --- Review. Spring 2012 Black Jack --- Review Spring 2012 Simulation Simulation can solve real-world problems by modeling realworld processes to provide otherwise unobtainable information. Computer simulation is used to predict

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

Help / Hjælp

Help / Hjælp Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association

Læs mere

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen The X Factor Målgruppe 7-10 klasse & ungdomsuddannelser Engelskundervisningen Læringsmål Eleven kan give sammenhængende fremstillinger på basis af indhentede informationer Eleven har viden om at søge og

Læs mere

User Manual for LTC IGNOU

User Manual for LTC IGNOU User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service

Læs mere

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0 Userguide NN Markedsdata for Microsoft Dynamics CRM 2011 v. 1.0 NN Markedsdata www. Introduction Navne & Numre Web Services for Microsoft Dynamics CRM hereafter termed NN-DynCRM enable integration to Microsoft

Læs mere

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss Brugervejledning (side 2-6) Userguide (page 7-11) Bedienungsanleitung 1 - Hvordan forbinder du din E-PAD hængelås med din

Læs mere

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

Basic statistics for experimental medical researchers

Basic statistics for experimental medical researchers Basic statistics for experimental medical researchers Sample size calculations September 15th 2016 Christian Pipper Department of public health (IFSV) Faculty of Health and Medicinal Science (SUND) E-mail:

Læs mere

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Panorama billede fra starten den første dag i 2014 Michael Koldtoft fra Trolling Centrum har brugt lidt tid på at arbejde med billederne fra

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

Resource types R 1 1, R 2 2,..., R m CPU cycles, memory space, files, I/O devices Each resource type R i has W i instances.

Resource types R 1 1, R 2 2,..., R m CPU cycles, memory space, files, I/O devices Each resource type R i has W i instances. System Model Resource types R 1 1, R 2 2,..., R m CPU cycles, memory space, files, I/O devices Each resource type R i has W i instances. Each process utilizes a resource as follows: request use e.g., request

Læs mere

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute Sortering fra A-Z Henrik Dorf Chefkonsulent SAS Institute Hvorfor ikke sortering fra A-Å? Det er for svært Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å?

Læs mere

How Long Is an Hour? Family Note HOME LINK 8 2

How Long Is an Hour? Family Note HOME LINK 8 2 8 2 How Long Is an Hour? The concept of passing time is difficult for young children. Hours, minutes, and seconds are confusing; children usually do not have a good sense of how long each time interval

Læs mere

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og

Læs mere

CHAPTER 8: USING OBJECTS

CHAPTER 8: USING OBJECTS Ruby: Philosophy & Implementation CHAPTER 8: USING OBJECTS Introduction to Computer Science Using Ruby Ruby is the latest in the family of Object Oriented Programming Languages As such, its designer studied

Læs mere

WIKI & Lady Avenue New B2B shop

WIKI & Lady Avenue New B2B shop WIKI & Lady Avenue New B2B shop Login Login: You need a personal username and password Du skal bruge et personligt username og password Only Recommended Retail Prices Viser kun vejl.priser! Bestilling

Læs mere

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes. Brug sømbrættet til at lave sjove figurer. Lav f: Et dannebrogsflag Et hus med tag, vinduer og dør En fugl En bil En blomst Få de andre til at gætte, hvad du har lavet. Use the nail board to make funn

Læs mere

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com.

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com. 052430_EngelskC 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau C www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Vejledning til Sundhedsprocenten og Sundhedstjek

Vejledning til Sundhedsprocenten og Sundhedstjek English version below Vejledning til Sundhedsprocenten og Sundhedstjek Udfyld Sundhedsprocenten Sæt mål og lav en handlingsplan Book tid til Sundhedstjek Log ind på www.falckhealthcare.dk/novo Har du problemer

Læs mere

Bilag. Resume. Side 1 af 12

Bilag. Resume. Side 1 af 12 Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største

Læs mere

The River Underground, Additional Work

The River Underground, Additional Work 39 (104) The River Underground, Additional Work The River Underground Crosswords Across 1 Another word for "hard to cope with", "unendurable", "insufferable" (10) 5 Another word for "think", "believe",

Læs mere

LESSON NOTES Extensive Reading in Danish for Intermediate Learners #8 How to Interview

LESSON NOTES Extensive Reading in Danish for Intermediate Learners #8 How to Interview LESSON NOTES Extensive Reading in Danish for Intermediate Learners #8 How to Interview CONTENTS 2 Danish 5 English # 8 COPYRIGHT 2019 INNOVATIVE LANGUAGE LEARNING. ALL RIGHTS RESERVED. DANISH 1. SÅDAN

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Trolling Master Bornholm 2013

Trolling Master Bornholm 2013 Trolling Master Bornholm 2013 (English version further down) Tilmeldingen åbner om to uger Mandag den 3. december kl. 8.00 åbner tilmeldingen til Trolling Master Bornholm 2013. Vi har flere tilmeldinger

Læs mere

QUICK START Updated:

QUICK START Updated: QUICK START Updated: 24.08.2018 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get started

Læs mere

Database. lv/

Database. lv/ Database 1 Database Design Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management system) Et SW system der gør det muligt at definer, oprette og vedligeholde

Læs mere

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen.  og 052431_EngelskD 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau D www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8

Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 English version further down Der bliver landet fisk men ikke mange Her er det Johnny Nielsen, Søløven, fra Tejn, som i denne uge fangede 13,0 kg nord for

Læs mere

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Modtager man økonomisk støtte til et danseprojekt, har en premieredato og er professionel bruger af Dansehallerne har man mulighed for

Læs mere

Financial Literacy among 5-7 years old children

Financial Literacy among 5-7 years old children Financial Literacy among 5-7 years old children -based on a market research survey among the parents in Denmark, Sweden, Norway, Finland, Northern Ireland and Republic of Ireland Page 1 Purpose of the

Læs mere

RoE timestamp and presentation time in past

RoE timestamp and presentation time in past RoE timestamp and presentation time in past Jouni Korhonen Broadcom Ltd. 5/26/2016 9 June 2016 IEEE 1904 Access Networks Working Group, Hørsholm, Denmark 1 Background RoE 2:24:6 timestamp was recently

Læs mere

Trolling Master Bornholm 2012

Trolling Master Bornholm 2012 Trolling Master Bornholm 1 (English version further down) Tak for denne gang Det var en fornøjelse især jo også fordi vejret var med os. Så heldig har vi aldrig været før. Vi skal evaluere 1, og I må meget

Læs mere

Skriftlig Eksamen Diskret matematik med anvendelser (DM72)

Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Institut for Matematik & Datalogi Syddansk Universitet, Odense Onsdag den 18. januar 2006 Alle sædvanlige hjælpemidler (lærebøger, notater etc.),

Læs mere

Vina Nguyen HSSP July 13, 2008

Vina Nguyen HSSP July 13, 2008 Vina Nguyen HSSP July 13, 2008 1 What does it mean if sets A, B, C are a partition of set D? 2 How do you calculate P(A B) using the formula for conditional probability? 3 What is the difference between

Læs mere

GUIDE TIL BREVSKRIVNING

GUIDE TIL BREVSKRIVNING GUIDE TIL BREVSKRIVNING APPELBREVE Formålet med at skrive et appelbrev er at få modtageren til at overholde menneskerettighederne. Det er en god idé at lægge vægt på modtagerens forpligtelser over for

Læs mere

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Unitel EDI MT940 June 2010 Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Contents 1. Introduction...3 2. General...3 3. Description of the MT940 message...3 3.1.

Læs mere

Status på det trådløse netværk

Status på det trådløse netværk Status på det trådløse netværk Der er stadig problemer med det trådløse netværk, se status her: http://driftstatus.sdu.dk/?f=&antal=200&driftid=1671#1671 IT-service arbejder stadig med at løse problemerne

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

Sport for the elderly

Sport for the elderly Sport for the elderly - Teenagers of the future Play the Game 2013 Aarhus, 29 October 2013 Ditte Toft Danish Institute for Sports Studies +45 3266 1037 ditte.toft@idan.dk A growing group in the population

Læs mere

CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2

CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2 1 CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2 Outline 2 HW Solution Exercise (Equivalence Class Testing) Exercise (Decision Table Testing) Pairwise Testing Exercise (Pairwise Testing) 1 Homework

Læs mere

Blomsten er rød (af Harry Chapin, oversat af Niels Hausgaard)

Blomsten er rød (af Harry Chapin, oversat af Niels Hausgaard) Blomsten er rød (af Harry Chapin, oversat af Niels Hausgaard) På den allerførste skoledag fik de farver og papir. Den lille dreng farved arket fuldt. Han ku bare ik la vær. Og lærerinden sagde: Hvad er

Læs mere

Kalkulation: Hvordan fungerer tal? Jan Mouritsen, professor Institut for Produktion og Erhvervsøkonomi

Kalkulation: Hvordan fungerer tal? Jan Mouritsen, professor Institut for Produktion og Erhvervsøkonomi Kalkulation: Hvordan fungerer tal? Jan Mouritsen, professor Institut for Produktion og Erhvervsøkonomi Udbud d af kalkulationsmetoder l t Economic Value Added, Balanced Scorecard, Activity Based Costing,

Læs mere

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering Backup Applikation Microsoft Dynamics C5 Version 2008 Sikkerhedskopiering Indhold Sikkerhedskopiering... 3 Hvad bliver sikkerhedskopieret... 3 Microsoft Dynamics C5 Native database... 3 Microsoft SQL Server

Læs mere

From innovation to market

From innovation to market Nupark Accelerace From innovation to market Public money Accelerace VC Private Equity Stock market Available capital BA 2 What is Nupark Accelerace Hands-on investment and business developmentprograms

Læs mere

MSE PRESENTATION 2. Presented by Srunokshi.Kaniyur.Prema. Neelakantan Major Professor Dr. Torben Amtoft

MSE PRESENTATION 2. Presented by Srunokshi.Kaniyur.Prema. Neelakantan Major Professor Dr. Torben Amtoft CAPABILITY CONTROL LIST MSE PRESENTATION 2 Presented by Srunokshi.Kaniyur.Prema. Neelakantan Major Professor Dr. Torben Amtoft PRESENTATION OUTLINE Action items from phase 1 presentation tti Architecture

Læs mere

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528) Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 7

Trolling Master Bornholm 2016 Nyhedsbrev nr. 7 Trolling Master Bornholm 2016 Nyhedsbrev nr. 7 English version further down Så var det omsider fiskevejr En af dem, der kom på vandet i en af hullerne, mellem den hårde vestenvind var Lejf K. Pedersen,

Læs mere

ECE 551: Digital System * Design & Synthesis Lecture Set 5

ECE 551: Digital System * Design & Synthesis Lecture Set 5 ECE 551: Digital System * Design & Synthesis Lecture Set 5 5.1: Verilog Behavioral Model for Finite State Machines (FSMs) 5.2: Verilog Simulation I/O and 2001 Standard (In Separate File) 3/4/2003 1 ECE

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 6

Trolling Master Bornholm 2016 Nyhedsbrev nr. 6 Trolling Master Bornholm 2016 Nyhedsbrev nr. 6 English version further down Johnny Nielsen med 8,6 kg laks Laksen blev fanget seks sømil ud for Tejn. Det var faktisk dobbelthug, så et kig ned i køletasken

Læs mere

Design til digitale kommunikationsplatforme-f2013

Design til digitale kommunikationsplatforme-f2013 E-travellbook Design til digitale kommunikationsplatforme-f2013 ITU 22.05.2013 Dreamers Lana Grunwald - svetlana.grunwald@gmail.com Iya Murash-Millo - iyam@itu.dk Hiwa Mansurbeg - hiwm@itu.dk Jørgen K.

Læs mere

WIFI koder til Miljøagenturet: Brugernavn: AIACE course Kodeord: TsEG2pVL EU LOGIN KURSUS 21. AUGUST FORMIDDAG:

WIFI koder til Miljøagenturet: Brugernavn: AIACE course Kodeord: TsEG2pVL EU LOGIN KURSUS 21. AUGUST FORMIDDAG: WIFI koder til Miljøagenturet: Brugernavn: AIACE course Kodeord: TsEG2pVL EU LOGIN KURSUS 21. AUGUST 2019 - FORMIDDAG: EU Login er EU s NemID. Det er blot adgangsnøglen til en række EU-applikationer. Vælg

Læs mere

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form

Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form Danish Language Course for International University Students Copenhagen, 12 July 1 August 2017 Application form Must be completed on the computer in Danish or English All fields are mandatory PERSONLIGE

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 5

Trolling Master Bornholm 2016 Nyhedsbrev nr. 5 Trolling Master Bornholm 2016 Nyhedsbrev nr. 5 English version further down Kim Finne med 11 kg laks Laksen blev fanget i denne uge øst for Bornholm ud for Nexø. Et andet eksempel er her to laks taget

Læs mere

United Nations Secretariat Procurement Division

United Nations Secretariat Procurement Division United Nations Secretariat Procurement Division Vendor Registration Overview Higher Standards, Better Solutions The United Nations Global Marketplace (UNGM) Why Register? On-line registration Free of charge

Læs mere

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level.

Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level. Danish Language Course for Foreign University Students Copenhagen, 13 July 2 August 2016 Advanced, medium and beginner s level Application form Must be completed on the computer in Danish or English All

Læs mere

3D NASAL VISTA 2.0

3D NASAL VISTA 2.0 USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended

Læs mere

SAS Corporate Program Website

SAS Corporate Program Website SAS Corporate Program Website Dear user We have developed SAS Corporate Program Website to make the administration of your company's travel activities easier. You can read about it in this booklet, which

Læs mere

IPTV Box (MAG250/254) Bruger Manual

IPTV Box (MAG250/254) Bruger Manual IPTV Box (MAG250/254) Bruger Manual Når din STB (Set top Box) starter op, bliver der vist en pop up boks på skærmen, hvor du kan åbne EPG ved at trykke på F2 (Nogle bokse kan fortælle at den har brug for

Læs mere

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA

Læs mere

Trolling Master Bornholm 2016 Nyhedsbrev nr. 3

Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 English version further down Den første dag i Bornholmerlaks konkurrencen Formanden for Bornholms Trollingklub, Anders Schou Jensen (og meddomer i TMB) fik

Læs mere

Improving data services by creating a question database. Nanna Floor Clausen Danish Data Archives

Improving data services by creating a question database. Nanna Floor Clausen Danish Data Archives Improving data services by creating a question database Nanna Floor Clausen Danish Data Archives Background Pressure on the students Decrease in response rates The users want more Why a question database?

Læs mere

Mandara. PebbleCreek. Tradition Series. 1,884 sq. ft robson.com. Exterior Design A. Exterior Design B.

Mandara. PebbleCreek. Tradition Series. 1,884 sq. ft robson.com. Exterior Design A. Exterior Design B. Mandara 1,884 sq. ft. Tradition Series Exterior Design A Exterior Design B Exterior Design C Exterior Design D 623.935.6700 robson.com Tradition OPTIONS Series Exterior Design A w/opt. Golf Cart Garage

Læs mere

Trolling Master Bornholm 2014

Trolling Master Bornholm 2014 Trolling Master Bornholm 2014 (English version further down) Populært med tidlig færgebooking Booking af færgebilletter til TMB 2014 er populært. Vi har fået en stribe mails fra teams, som har booket,

Læs mere

En Kort Introduktion til Oracle

En Kort Introduktion til Oracle En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering

Læs mere

Oracle PL/SQL. Overview of PL/SQL

Oracle PL/SQL. Overview of PL/SQL Oracle PL/SQL John Ortiz Overview of PL/SQL Oracle's Procedural Language extension to SQL. Support many programming language features. If-then-else, loops, subroutines. Program units written in PL/SQL

Læs mere

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1)

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1) Fejlbeskeder i SMDB Validate Business Rules Request- ValidateRequestRegist ration (Rules :1) Business Rules Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl

Læs mere

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames...

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames... InDesign Basics Before you begin...................2 Part 1: Document Setup................3 Part 2: Master Pages................ 4 Part 3: Page Numbering...............5 Part 4: Texts and Frames...............6

Læs mere

On the complexity of drawing trees nicely: corrigendum

On the complexity of drawing trees nicely: corrigendum Acta Informatica 40, 603 607 (2004) Digital Object Identifier (DOI) 10.1007/s00236-004-0138-y On the complexity of drawing trees nicely: corrigendum Thorsten Akkerman, Christoph Buchheim, Michael Jünger,

Læs mere

extreme Programming Kunders og udvikleres menneskerettigheder

extreme Programming Kunders og udvikleres menneskerettigheder extreme Programming Software Engineering 13 1 Kunders og udvikleres menneskerettigheder Kunder: At sætte mål og få projektet til at følge dem At kende varighed og pris At bestemme softwarefunktionalitet

Læs mere

Linear Programming ١ C H A P T E R 2

Linear Programming ١ C H A P T E R 2 Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation

Læs mere

Nyhedsmail, december 2013 (scroll down for English version)

Nyhedsmail, december 2013 (scroll down for English version) Nyhedsmail, december 2013 (scroll down for English version) Kære Omdeler Julen venter rundt om hjørnet. Og netop julen er årsagen til, at NORDJYSKE Distributions mange omdelere har ekstra travlt med at

Læs mere

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax TM4 Central Station User Manual / brugervejledning K2070-EU STT Condigi A/S Niels Bohrs Vej 42, Stilling 8660 Skanderborg Denmark Tel. +45 87 93 50 00 Fax. +45 87 93 50 10 info@sttcondigi.com www.sttcondigi.com

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

Læs mere

Martin Lohse. Passing. Three mobile for accordion. Composed

Martin Lohse. Passing. Three mobile for accordion. Composed Martin Lohse Passing Three mobile for accordion Composed 2011-12 Passing Three mobile for accordion The score is in exact pitch, and the proposed registers can be changed according to room and instrument

Læs mere

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll

Microsoft Dynamics C5. version 2012 Service Pack 01 Hot fix Fix list - Payroll Microsoft Dynamics C5 version 2012 Service Pack 01 Hot fix 001 4.4.01.001 Fix list - Payroll CONTENTS Introduction... 3 Payroll... 3 Corrected elements in version 4.4.01.001... 4 Microsoft Dynamics C5

Læs mere

3D NASAL VISTA TEMPORAL

3D NASAL VISTA TEMPORAL USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended

Læs mere

Online kursus: Content Mangement System - Wordpress

Online kursus: Content Mangement System - Wordpress Online kursus 365 dage DKK 1.999 Nr. 90213 P ekskl. moms Wordpress er et open-source content management system, som anvendes af mere end 23% af verdens 10 millioner mest besøgte hjemmesider. Det er et

Læs mere

Overfør fritvalgskonto til pension

Overfør fritvalgskonto til pension Microsoft Development Center Copenhagen, January 2009 Løn Microsoft Dynamics C52008 SP1 Overfør fritvalgskonto til pension Contents Ønsker man at overføre fritvalgskonto til Pension... 3 Brug af lønart

Læs mere

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Fortæl om Ausumgaard s historie Der er hele tiden snak om værdier, men hvad er det for nogle værdier? uddyb forklar definer

Læs mere

Besvarelser til Lineær Algebra Reeksamen Februar 2017

Besvarelser til Lineær Algebra Reeksamen Februar 2017 Besvarelser til Lineær Algebra Reeksamen - 7. Februar 207 Mikkel Findinge Bemærk, at der kan være sneget sig fejl ind. Kontakt mig endelig, hvis du skulle falde over en sådan. Dette dokument har udelukkende

Læs mere

University of Copenhagen Faculty of Science Written Exam - 3. April Algebra 3

University of Copenhagen Faculty of Science Written Exam - 3. April Algebra 3 University of Copenhagen Faculty of Science Written Exam - 3. April 2009 Algebra 3 This exam contains 5 exercises which are to be solved in 3 hours. The exercises are posed in an English and in a Danish

Læs mere

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer

www.cfufilmogtv.dk Tema: Pets Fag: Engelsk Målgruppe: 4. klasse Titel: Me and my pet Vejledning Lærer Me and my pet My dogs SVTV2, 2011, 5 min. Tekstet på engelsk Me and my pet er en svenskproduceret undervisningsserie til engelsk for børn i 4. klasse, som foregår på engelsk, i engelsktalende lande og

Læs mere

IBM Software Group. SOA v akciji. Srečko Janjić WebSphere Business Integration technical presales IBM Software Group, CEMA / SEA IBM Corporation

IBM Software Group. SOA v akciji. Srečko Janjić WebSphere Business Integration technical presales IBM Software Group, CEMA / SEA IBM Corporation IBM Software Group SOA v akciji Srečko Janjić Business Integration technical presales IBM Software Group, CEMA / SEA Service Oriented Architecture Design principles and technology for building reusable,

Læs mere

Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning

Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning Side 1 af 9 SEPA Direct Debit Betalingsaftaler Vejledning 23.11.2015 1. Indledning Denne guide kan anvendes af kreditorer, som ønsker at gøre brug af SEPA Direct Debit til opkrævninger i euro. Guiden kan

Læs mere

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet. ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.

Læs mere

1 What is the connection between Lee Harvey Oswald and Russia? Write down three facts from his file.

1 What is the connection between Lee Harvey Oswald and Russia? Write down three facts from his file. Lee Harvey Oswald 1 Lee Harvey Oswald s profile Read Oswald s profile. Answer the questions. 1 What is the connection between Lee Harvey Oswald and Russia? Write down three facts from his file. 2 Oswald

Læs mere

Exploring Subversive Eclipse SVN Team Provider

Exploring Subversive Eclipse SVN Team Provider Exploring Subversive Eclipse SVN Team Provider Eclipse Summit Europe 2007 Presenter: Igor Vinnykov (igor.vinnykov@polarion.org), Polarion Software 2007 by Igor Vinnykov; made available under the EPL v1.0

Læs mere

Velkommen. Backup & Snapshot v. Jørgen Weinreich / Arrow ECS Technical Specialist

Velkommen. Backup & Snapshot v. Jørgen Weinreich / Arrow ECS Technical Specialist Velkommen Backup & Snapshot v. Jørgen Weinreich / Arrow ECS Technical Specialist 1 Agenda Fra backup til restore produkt Politikstyret Backup Live Demo 2 IBM XIV Snapshots - Næsten uden begrænsninger Snapshot

Læs mere

Skriftlig Eksamen Beregnelighed (DM517)

Skriftlig Eksamen Beregnelighed (DM517) Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 31 Oktober 2011, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner

Læs mere

Freefly B-Række Regler

Freefly B-Række Regler Freefly B-Række Regler Freefly B-Rækken er skabt til at imødekomme både nye og erfarende freeflyere, og præsentere dem for konkurrence elementet. Der konkurreres efter FAI regler, men der forekommer dog

Læs mere