#12 ORACLE TIL COM VIA JAVA 4 OUGDK 23

Størrelse: px
Starte visningen fra side:

Download "#12 ORACLE TIL COM VIA JAVA 4 OUGDK 23"

Transkript

1 Juni 2002 Nr 12, Årgang 3 ISSN Pris: kr. 125,00 ex moms #12 OUGDK 23 OUGDK Stormøde Næste møde er endnu ikke fastlagt. DBA SIG Næste møde er endnu ikke fastlagt. Designer SIG Næste møde:14. august 2002 kl. 13:00 Developer SIG Næste møde er endnu ikke fastlagt. Data warehouse SIG Næste møde: 12. juni 2002 Web SIG Næste møde er endnu ikke fastlagt. NYHEDER 22 Dato for Oracles årsresultat Boise Casc. migrerer fra Informix Oracle og IBM slår verdensrekort Upgrade Assist fra Oracle Oracle9i Developer Suite Oracle og Interwoven samarbejder Gartner roser Oracles mobilplatform Oracle besvarer donationanklage Oracle nr 1 på relationsdatabaser IBM større end Oracle på DB Oracle svarer på anklage om svindel Oracle foretrækkes af Fortune 100 Oracle når ikke mål for Q4 JDeveloper vinder mod.net ORACLE TIL COM VIA JAVA 4 Martin Håkansson Interesserer man sig for at udvide Oracle med funktionalitet fra andre egne af softwarelandskabet er COM-teknologien et interessant bekendtskab. Component Object Model er egentlig en Microsoft teknologi, men kan bruges mange steder i Oracle. Vi kigger på mulighederne og giver et virkelighedsnært eksempel, hvor Java spiller en vigtig rolle som integrator. TALES FROM THE CRYPT, GETTING TO KNOW THE ORACLE SUPPLIED PACKAGES 9 Rune Mørk The title for this article comes from the fact that I here will show packages that, in some cases, have been around since 92 but with lack of public interest, now they are pulled into daylight from the crypt where they were lying hidden in such a long time. GROANS FRA MOGENS 16 Mogens Nørgaard Velkommen til den første udgave af min faste klumme. Formålet med klummen er at informere om Oracle-verdenen, give råd og tips, fortælle om arrangementer, osv. Alt sammen selvfølgelig tilsat private meninger, rene gætterier, usubstantierede rygter og ikke mindst løse formodninger. Vindere af billetter til Oracle WorldW Michael Christensen, Eniro A/S Jacob Dybbro, Cap Gemini Danmark A/S Bodil Feldinger,, Rambøll Informatik Britta a Christiansen, WM-data a esolutions A/S Johnny Johansen, PKA A/S Jan Mikkelsen, Columbus IT Partner AS Hans Jørn Hoppe, Træ-Industri-Byg T Karin Helsinghoff, ACE BioSciences Michael Kjærgaard, Naicom Sanne Pallesen, ChangeGroup ApS Premierne er sponseret af Oracle Danmark. Se mere om Oracle World konferencen på:

2 Leder PROVOEKSPERT Marc de Oliveira, ansvarshavende redaktør. Det er med stor glæde at jeg, som det fremgår af bladets forside, nu har udtrukket de ti vindere af en billet til Oracle World konferencen i Bella Centeret den juni De heldige vindere vil modtage deres bekræftelser i løbet af de nærmeste dage. Billetterne inkluderer en middag på Balkonen i Tivoli den 25. juni. Jeg vil i den forbindelse takke Oracle Danmark for at have sponseret billetterne, så denne lodtrækning kunne blive mulig. Inden nogen skulle begynde at undre sig over, at der blandt vinderne figurerer personer, som har skrevet, annonceret eller på anden måde har en særlig tilknytning til bladet, vil jeg gerne slå helt fast, at disses tilknytning ikke på nogen måde har haft indflydelse på deres chancer for at vinde. Selv om det nu ikke længere er muligt at vinde billetter til Oracle World, så fortsætter abonnementkampagnen helt frem til OracleEksperts to års fødselsdag den 1. august Dvs at der gives 10% rabat samt en signeret og nummereret kopi af en Oraclerne-strip ved tegning af et nyt abonnement eller ved konvertering af et almindeligt abonnement til et af de elektroniske abonnementer. Ja, du læste rigtigt... Det er nu muligt at tegne et elektronisk abonnement på OracleEkspert. Hvis du er nr 5 eller 10 på cirkulationslisten til OracleEkspert, så skulle du måske få ændret jeres abonnement til et elektronisk abonnement, så I alle kan modtage en kopi af bladet i PDFformat på udgivelsesdagen. Vi tilbyder nu to typer elektronisk abonnement på OracleEkspert. Det almindelige elektroniske abonnement koster frem til 1. august DKK 1080 og giver ret til at abonnenten kopierer filen til alle virksomhedens ansatte. For DKK 1620 kan man få et års OracleEkspert medlemskab, som desuden også giver adgang til alle tidligere numre af Oracle- Ekspert, samt mulighed for selv at udskrive bladene, hvis man gerne vil kunne læse i det uden at skulle have adgang til en computer. Du kan læse mere om de to typer elektroniske abonnementer, der nu tilbydes, på bladets hjemmeside: Herfra kan man også bestille en konvertering af sit eksisterende abonnement. Men her stopper de nye initiativer ikke. Begyndende med dette nummer er jeg meget begejstret for at kunne annoncere at vi har fået en ny fast rubrik med DBA-tips, vrede udfald mod alle i Oracle-miljøet, rygter og meget andet nyttig viden med relation til Oracle. Det er selvfølgelig den berygtede Mogens Nørgaard, der tager tråden op, fra den gang han havde sin rubrik i Oracle Danmarks hedengangne blad Delphi. Et af formålene med denne rubrik, som vi kalder Groans fra Mogens (som kan oversættes til noget i retning af Jammer fra Mogens), er at få pustet nyt liv i vores debatrubrik Svar, som aldrig kom rigtig i gang. Mogens vil med sin vanelige sans for kontroversielle udtalelser forsøge at få provokeret læserne op af hullerne, så vi kan få diskuteret nogle interessante emner. Der er åbent for kommentarer fra alle hvad enten de er Oracle-kunder, -ansatte, -partnere eller -konkurrenter. Om du er højt eller lavt placeret, erfaren eller nybegynder, så er du velkommen til at sende dine meninger, spørgsmål mv til Svar@OracleEkspert.dk. Da OracleEkspert er uafhængig af økonomiske interesser er der ingen, vi skal tage hensyn til. Så længe dine kommentarer er relevante og nogenlunde sammenhængende, vil de kunne komme med i bladet. Lad mig afsluttende citere lidt relateret poesi fra pop-musikkens ubestridte provokatør nr 1, der netop har udsendt sin nyeste CD: Though I m not the first king of controversy I m the worst thing since Elvis Presley To do black music so selfishly And use it to get myself wealthy Eminem - Without Me Oplag: kopier Udgives af: pythia Information Kongensvej Frederiksberg Danmark Telefon: Fax: Info@OracleEkspert.dk Web: Ansvarshavende redaktør: marc de Oliveira Marc@OracleEkspert.dk Groans fra Mogens: Mogens Nørgaard mno@MiracleAS.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: - Blad DKK 600,00 - Elektronisk DKK 1200,00 - Medlemskab DKK 1800,00 Rabatordninger kan findes på vores hjemmeside. Annoncer: Annoncer til OracleEkspert nr 13 skal være PYTHIA Information i hænde senest den 12. juli Annoncepriser kan findes på vores hjemmeside. Password: mdeesf

3

4 Tools Teknisk Artikel ORACLE TIL COM VIA JAVA Martin Håkansson er konsulent hos WM-data, med Oracle som speciale. Indledning Interesserer man sig for at udvide Oracle med funktionalitet fra andre egne af softwarelandskabet er COM-teknologien et interessant bekendtskab. Component Object Model er egentlig en Microsoft teknologi, men kan bruges mange steder i Oracle. Vi kigger på mulighederne og giver et virkelighedsnært eksempel, hvor Java spiller en vigtig rolle som integrator. Oracle kan udnytte mulighederne i COM-objekter på en række områder. I artiklen fortæller vi om den bagvedliggende teknologi og giver et eksempler fra den virkelige verden. Kort fortalt er COM Microsofts model og grænseflade for hvordan objekter, dvs. processer eller programmer, kan arbejde sammen. Det giver f.eks. alle Microsoft Office-produkterne en grænseflade der kan udnyttes fra andre der snakker COM sk. Hvor COM foregår på én og samme computer, kan Distributed COM (DCOM) objekter benytte hinandens faciliteter over nettet. Når man snakker sammen på COM sk er det egentlig ligegyldigt hvad ens modersmål er oprindeligt. COM og DCOM dækker kommunikation mellem eksekverbare, binære moduler, uanset hvilket sprog kildekoden er skrevet med - hvis de har et COM interface så er de med. Alt dette gør at man kan genbruge funktionalitet, og det er vi udviklere jo ret vilde med. I denne artikel præsenterer vi et eksempel på hvordan Oracle og COM kan snakke sammen på en lidt usædvanlig måde, nemlig når det drejer sig om et procesanlæg til fremstilling af medicin. Oracle og COM Oracle har en del muligheder for kommunikation med COM-objekter. Både indbyggede og via trediepartsprodukter. Endelig er Java kommet på banen og har givet en åbning mod en hel ny verden af integration. Forms har fået Pluggable Java Components, se f.eks. hvordan man henter stavekontrol til lange tekstfelter [6]. Det gør at COM-objekter, som dem vi viser her, wrappe t med java, kan integreres. Oracle COM Data Cartridge giver direkte adgang til COM-objekter fra Oracle-databasen, se [2]. Java Med Java i databasen, åbnes der en række muligheder for integration med COM objekter og Java i det hele taget. Faktisk kan Java og COM-objekter bruges i flæng. Det er fuldt ud muligt at wrappe Java-classer til COM og omvendt at wrappe COM-objekter med Java-kode. Vores eksempel her viser hvordan det gøres med J-Integra. OLE for Process Control (OPC) Som eksempel på kommunikation fra Oracle til COMobjekter viser vi en løsning fra et medicinalfirma. Man ønsker her at kommunikere med et procesanlæg fra Oracle. Firmaets produktionsstyringssystem (PSS) er Oracle-baseret, mens procesanlægget styres fra en OPC-server (Object Linking and Embedding for Process Control), se nedenstående figur. Der er her tale om et produktionssystem der skal levere varen. Det består af en produktionskolonne hvor der i princippet kommer råvarer ind i den ene ende og medicin ud af den anden. Hele processen styres, reguleres og overvåges af PCS-systemet. Den overordnede styring af batch-kørsler og afrapportering sker derimod i PSS-systemet. 4 Juni 2002 OracleEkspert

5 Opgaven lyder altså på at integrere systemerne, begge veje vel og mærke. De Oracle-baserede systemer skal kunne aflæse og indstille anlægget og anlægget skal kunne levere hændelser tilbage. Det sidste er nok så væsentligt, fordi det kræver at Oraclesystemet opfanger disse events. Da OPC-serveren har et COM (component object model) interface kunne man umiddelbart få den idé at snakke COM sk direkte fra basen. Denne løsning giver dog ikke mulighed for at opfange de hændelser OPCserveren leverer, f.eks. alarmer. Så i stedet ligger løsningen i at etablere en Java-gateway, som samtidig er RMI-server (Remote Method Invocation, Java protocol til kommunikation mellem processer, baseret på sockets og TCP/IP), vi kalder denne for vores OPC Gateway. For at kunne snakke Java med OPC-serveren, indkapsles denne med Java-wrapper klasser. Vores OPC Gateway skal køre kontinuerligt og opfange hændelser fra OPC-serveren via Java-wrapper-klasserne. Disse hændelser kan så leveres videre til PSS-systemet vha. JDBC-kald til et Interpretation layer. På Oracle-siden er så implementeret en RMIklient der videregiver kommandoer fra PSS-systemet, til RMI-serveren på vores OPC Gateway. OPC Interpretation Layer følger en standard og her er den så implementeret som Oracle Java Stored Procedures. Produktionsstyringssystem (PSS) PSS-systemet håndterer recepter, skemalægning af produktion, kvalitetskontrol, rapportering fra produktion, udførsel af produktionsjobs m.m. Det skal integreres med selve produktionsanlægget. Det der ikke er vist, er virksomhedens ERP-systemer, Navision, SAP, mv., som bygger videre på oplysningerne fra PSS-systemet. Process Control System (PCS) PCS-systemet håndterer den egentlige afvikling af produktionen på procesanlægget. Det inkluderer kalibrering, konfiguration, alarmer, monitorering og afvigelser. Konfiguration og aflæsning af anlægget foregår ved at sætte og læse etiketter, såkaldte TAGS. Disse svarer så til følere (temperatur, tryk, flowhastighed osv.) og aktuatorer på anlægget (omdrejningstal, ventilstillinger osv). Alarmer og andre events monitoreres ved subscriptions, altså abonnementer. Hvilke komponenter indgår I løsningen Den eksisterende forretningslogik ligger i pl/sql i PSSsystemet og det skal den blive ved med. Derfor skal der laves så tynde komponenter som muligt. De komponenter der indgår i den samlede løsning er vist i nedenstående figur. OPC Gateway Den viste OPC Gateway er hovedsageligt inddelt i kommunikation med OPC-serveren via DCOM og til Oracle via RMI/JDBC. Man kan dog sagtens forestille sig en SMTP (Simple Mail Transfer Protocol) baseret funktion til afsendelse af mail ved f.eks. afslutning af produktionsjobs eller alarmer. OPC INTERPRETATION LAYER OPC Interpretation Layer (OIL) håndterer PSS-specifikke funktioner og omsætter dem til funktioner i OPC Gateway klienten. OIL en er implementeret som Oracle Java Stored Procedures (OJSP), men med en PL/SQL-pakke som wrapper. OPC Interpretation Layer kan håndtere funktioner som for eksempel STATUS_CHANGE, anlægget har skiftet status og vi skal muligvis reagere herpå ALARM, alarm på anlægget DOWNLOAD, hent data fra anlægget OPC Interpretation Layer er en firmastandard for kommunikation mellem PSS og OPC systemerne, så når vi opfylder standarden, kan funktioner implementres som vist her i OJSP. Hvilket så bliver til dette i Oracle: CREATE OR REPLACE PACKAGE OIL AUTHID CURRENT_USER AS PROCEDURE ALARM(p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER); PROCEDURE PARAMETER_CHANGE( p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER); PROCEDURE STATUS_CHANGE(p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER); END OIL; OracleEkspert Juni

6 CREATE OR REPLACE PACKAGE BODY OIL AS PROCEDURE ALARM(p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER) AS LANGUAGE JAVA NAME 'com.nn.opc.rmi.client.interpretationlayer.alarm(java.lang.string, java.lang.string, java.sql.date, int)'; PROCEDURE PARAMETER_CHANGE( p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER) AS LANGUAGE JAVA NAME 'com.nn.opc.rmi.client.interpretationlayer.parameter_change(java.lang.string, java.lang.string, java.sql.date, int)'; PROCEDURE STATUS_CHANGE(p1 IN VARCHAR2, p2 IN VARCHAR2, p3 IN DATE, p4 IN NUMBER) AS LANGUAGE JAVA NAME 'com.nn.opc.rmi.client.interpretationlayer.status_change(java.lang.string, java.lang.string, java.sql.date, int)'; END OIL; Disse ret abstrakte funktioner bygges op af en række kald til settag(), gettag(), await(), subscribetag() og unsubscribetag() i OPC Gateway klienten, som for eksempel (pseudo) // Set the tags which corresponds to the message // Set RESULT to PROCESS and wait for ack (PROCESSED) public void message() { if OPC_GATEWAY_CLIENT.getTag(MESSAGE:RESULT) == READY) { OPC_GATEWAY_CLIENT.setTag(MESSAGE:RESULT,PROCESSING) OPC_GATEWAY_CLIENT.setTag(MESSAGE:RESULT,PROCESS) if OPC_GATEWAY_CLIENT.await(MESSAGE:RESULT,PROCESSED) OPC_GATEWAY_CLIENT.setTag(MESSAGE:RESULT,READY) else // handle error } else MESSAGE CANNOT BE SEND } PSS, OIL og OPC Gateway klienten snakker udelukkende sammen internt i Oracle. Fra OPC Gateway klienten til OPC Gateway en springer man så ud af Oracle-databasen og bruger RMI til at kommunikere og man får dermed valgfri placering af komponenterne på samme maskine eller på hver sin maskine i netværket. Når systemet skal testes, kan dette f.eks. gøres direkte fra SQL*Plus med select OPC.OPC_GATEWAY_CLIENT.gettag( 'localhost', 'GW1', 'DOWNLOAD', 'PCS_DL_BATCH_NUMBER') from dual; OPC GATEWAY KLIENT OPC_GATEWAY_CLIENT håndterer kommunikationen fra Oracle til RMI-serveren, altså en RMI-klient. Her ses hvordan aflæsning af en TAG er videregivet fra Interpretation Layer og håndteres når der skal kommunikeres til RMI-serveren: package com.nn.opc.rmi.client public static String gettag( String rmihost, String rminame, String groupname, String itemname) throws Exception { String result = ""; RMIConstants rmi = new RMIConstants(); IOPC myobj = RMIDiscovery.getRemoteObject( rmihost, rminame, rmi); TagInfo tag = new TagInfo(groupName, itemname); result = myobj.gettag(tag); System.out.println( "get tag " + tag + " result: <" + result + ">"); return result; } OPC Gateway klienten bruger metoderne defineret i IOPC.java interfaceklassen og dermed RMI specifikationen. RMI SERVER På næste side er vist et simpelt tilfælde hvor en TAG aflæses initieret fra RMI-klienten, som vist tidligere. Og her ender vi så i de wrapper-klasser COM2JAVA har genereret. Når kommunikationen går den anden vej kontakter OPC-serveren RMI-serveren på OPC Gateway en. Her leveres hændelserne videre ved hjælp af JDBC til et Interpretation Layer der kommunikerer med PSSsystemet. For at dette skal kunne fungere er der implementeret en række callback-funktioner. Disse fungerer ved at man fra OIL en abonnenerer på en række såkaldte transaction counters, specielle tags i OPC en: subscribetag(status_change:counter,status_change) Når OPC en vil sende besked tilbage til PSS-systemet opdaterer den tælleren og dette trigger OPC Gateway en til at kalde en specifik stored procedure i OIL-pl/sql-pakken. Selve tjekket på OPC Gateway en på om den pågældende tæller er ændret kan enten være pollet eller hændelsesbaseret. DCOM For at kommunikere med OPC-serveren benyttes et trediepartsprodukt COM2JAVA fra J-Integra, som stiller metoder til rådighed for at kommunikere med COMobjekter. Man retter produktet ind mod et vilkårligt COM-objekt og det fyrer så en række Java-klasser af der indkapsler funktionaliteten. Hver tilgængelig objekt i COM-objektet får sin egen klasse og metoder. Kommunikation mellem Java og COM håndteres af de fra COM2JAVA genererede wrapper-klasser, så et egentlig indblik i mekanismerne får vi ikke, idet vi ikke kigger på den interne struktur i COM-objektet så ville ideen om black box genbrug jo osse gå lidt tabt. Andre COM-objekter Der findes jo mange COM-objecter derude, som med f.eks. ordbøger, stavekontrol, telefoni, ruteplanlægning, og oversættelse. På Open Directory, se {3}, findes en liste over tilgængelige komponenter (antal links i parentes): Collections (6) altså samlinger af komponenter, Addressing (1), Business Rules (2), Charting (12), Communications (83), Compression (5), Database (11), File Management (25), Financial (9), Mapping (1), Multimedia (12), Printing (3), Reporting 6 Juni 2002 OracleEkspert

7 package com.nn.opc.rmi.server private String gettag(taginfo tag, int retry) throws java.rmi.remoteexception { if (retry <= 0) throw new RemoteException("No more retries"); String todo = "Get tag=" + tag; String result = ""; server.verifyopc(); OPCItem opcitem = server.findopctag(tag); if (opcitem == null) { Log.writeInfo("No Items on the specified Groups on the OPC Server"); throw new RemoteException("No Items on the specified Groups on the OPC Server"); } try { result = server.readopcvalue(opcitem); } catch (AutomationException e) { handleerror(e, todo); // if we get here the error has been handled. try again return gettag(tag, --retry); // making the method recursive to allow for retries } catch (java.io.ioexception e) { handleerror(e, todo); } return result; } package com.nn.opc.rmi.server.data; import opc.*; public String readopcvalue(opcitem opcitem) throws AutomationException, java.io.ioexception { String result; try { Object []value = new Object[1]; Object []timestamp = new Object[1]; Object []quality = new Object[1]; opcitem.read((short)opcdatasource.opcdevice, value, quality, timestamp); result = "" + value[0]; } catch (AutomationException e) { throw e; // rethrow } catch (java.io.ioexception e) { throw e; // rethrow } return result; } (3), Scheduling (6), Software Protection (14), System Management (28), Web Management (2), Web User Interface (10), Windows User Interface (49), XML (6), og det er jo ikke småting! Konklusion COM-objekter er en umiddelbar tilgængelig måde at udvide Oracle s funktionalitet og der er rigeligt materiale at tage af. Til kommunikation med OPC-serveren i vores eksempel giver Java en fleksibel, funktionel måde at integrere de to teknologier. Vi har gennemgået et hjørne af COM og holdt det op mod Oracle. Så har vi vist et eksempel på anvendelse af de to teknologier sammen. Forhåbentlig har vi inspireret jer der derude undervejs for vi kan nok ikke lave det om! Tak til Johnny Thomsen fra WM-data som beredvilligt har stillet materiale og viden til rådighed. Software Vi har benyttet os af følgende stykker software og de fleste kan fåes i gratis-versioner til afprøvning. Jdeveloper (opgraderet til Jdeveloper9i undervejs!) Java 2 SDK (version 1.3.1) J-Integra JCA-COM Bridge Oracle database Matrikon OPC Server Simulator Referencer [1] J-Integra Dokumentation, Accessing COM objects. [2] OTN Technical Note, Oracle COM Data Cartridge Software Development KIT, Developer Release. [3] Oracle Magazine, Steven Feuerstein, Best of Both Worlds: Calling Java from PL/SQL. [4] Microsoft Corporation (msdn.com), Chad Verbowski, Integrating Java and COM. [5] Sun Microsystems, Java Remote Method Invocation Distrbuted Computing for Java. [6] ODTUG, Technical Journal, september 2001, Mari Cobb, Plugging a Java Spell-checking component into Web Forms. Links {1} Microsoft har et site om COM og DCOM, {2} J-Integra kan hentes i en tidsbegrænset gratis udgave (licens tilsendes per mail), {3} Open Directory, liste af COM-objekter, dmoz.org/computers/programming/component_- Frameworks/COM/ {4} OPC Programmers' Connection, siger vist sig selv. {5} COM Store at ComponentSource, componentsource.com, COM-objekter til at sende SMS beskeder, Artificiel Intelligens, kryptering og dekryptering, matrice-matematik, tegne diagrammer, PDA kommunikation og meget mere! {6} Matrikon gratis utilities, deriblandt OPC Server Simulator, OracleEkspert Juni

8

9 TALES FROM THE CRYPT, GETTING TO KNOW THE ORACLE SUPPLIED PACKAGES Rune Mørk, Novo Nordisk Engineering A/S There exists a number of Oracle supplied packages, that developers in some cases only get to know by chance. In this presentation I will focus on how to get information on the many different Oracle supplied packages, and show some of the content in some of the packages with examples of usage from the real life. My aim with this article is to get you guys more interested in the supplied packages, so if you leave this session with the idea that you want to go exploring inside the crypt of Oracle, I will have fulfilled my goal. The title for this article comes from the fact that I here will show packages that, in some cases, have been around since 92 but with lack of public interest, now they are pulled into daylight from the crypt where they we lying hidden in such long time. The packages I will cover are Dbms_application_info Dbms_describe Dbms_utility Dbms_session Dbms_ddl Dbms_job Dbms_ profiler For each package I will mention the most interesting procedure/function within, give them a line of thought and illustrate the use of some of them. The source of information The first problem you got is how to know that these packages exist, hence if you do not know they are there at all how could you look up information about them. I always peek into user_source to investigate what Oracle decided to put in production for a specific release. When your attention is drawn to a specific package, then you need to get further information on how to use and abuse it. You can get this info from several places, you could use metalink, buy several books, look into the documentation or peek into the Oracle files. Using metalink will give you, in some cases, a very short explanation, on how to use these packages, reading books will gain you some knowledge, but in most cases they are not covering all details, hence most books focus on covering all package, and therefore only covers the packages lightly, so you are left with the only option, to look into user_source, test and lean. There exists several tools, you could use to peek into the crypt. Among them are forms, toad and sql navigator. Looking into the source will reveal that in most cases you are only granted the privilege to see the specification not the body itself, since it is wrapped, meaning it is dianacode made into hex causing it to be unreadable. Dbms application info This useful package is one of the best kept secrets of the Oracle supplied packages, it enables you to monitor your progress of a long running job without using utl_file, or writing to your own temporary table and committing, by simply querying v$session. You can see the package specification in the file $oracle_home\rdbms\admin\dbmsapin.sql. Reading this file reveals that this package has been around since 96, and it even existed earlier with the name dbms_registration since 94. Boy I could have used that package at that time, but sadly it first came to my attention in Some of the useful procedures in this package are: procedure set_module(module_name varchar2, action_name varchar2); procedure read_module( module_name out varchar2, action_name out varchar2); procedure set_client_into( client_into in varchar2); procedure get_client_into ( client_into out varchar2); The way to use these procedures is to embed it into the code where you want to monitor your progress. The procedures write information to the v$session memory table structure, to which you do not have immediate access, therefore ask the dba to grant you select from v$_session (ie the memory held table) and then create a private synonym v$session for sys.v$_session. You cannot create a public synonym here since sys and system already has a v$session synonym. The columns in v$session that we are using has limited length, see table 1 for info. Column name Length Module Varchar2(48) Action Varchar2(32) Client_info Varchar2(64) Table 1 Changeable columns in v$session using dbms_application_info An example of how it works can bee seen in figure 1. PROCEDURE long_running(p_num in number) IS BEGIN dbms_application_info.set_module ('Long running','has started'); for i in 1..p_num loop -- do something -- monitor your progress here as the -- last line of code if mod(i, ) = 0 then dbms_application_info.set_module ('Long running','now at ' i); end if; end loop; END; Figure 1 Long running procedure When you run procedure long_running, you can monitor progress by querying v$session, like select module, action from v$session where module is not null; Looking at the code reveals that you do not need to OracleEkspert Juni

10 commit to see the result in v$session, because any change in v$session is held directly in memory, which is of enormous benefit. Dbms describe This package is another one of the oldies, dating back to January 92. The only usage of this package is to describe a procedure within a package. Why would anyone use that feature? Well if you do not have a client side tool that could describe a procedure in a package, then you need to maintain the old version of sql*plus (version 3.x), or fall back on selecting from user_source. This package contains one procedure dbms_- describe.describe_procedure, so I ve written some code for using that I ve included the code for this in figure 2. There exist a number of problems with this package. First and foremost the description on metalink is not correct, and even worse the description in the package spec also contains errors. As you can see in the code in figure 2, the package returns a number indicating the datatype of the parameters. The meaning of these numbers can be seen in table 2 (which is copied from the metalink paper). When you refer to a plsql/table you will get number 123 as the description and not 251 as the PROCEDURE my_describe(p_object in varchar2) IS v_overload dbms_describe.number_table; v_position dbms_describe.number_table; v_level dbms_describe.number_table; v_argument_name dbms_describe.varchar2_table; v_datatype dbms_describe.number_table; v_default_value dbms_describe.number_table; v_in_out dbms_describe.number_table; v_length dbms_describe.number_table; v_precision dbms_describe.number_table; v_scale dbms_describe.number_table; v_radix dbms_describe.number_table; v_spare dbms_describe.number_table; v_datatype_name varchar2(30); BEGIN dbms_describe.describe_procedure (p_object, null, null, v_overload, v_position, v_level, v_argument_name, v_datatype, v_default_value, v_in_out, v_length, v_precision, v_scale, v_radix, v_spare); dbms_output.put_line('overload ' 'Position ' 'Argument ' 'Level ' rpad('datatype',20) 'Length ' 'Prec ' 'Scale ' 'Rad '); dbms_output.put_line(rpad('-',99,'-')); for i in 1..v_overload.count loop dbms_output.put( rpad(v_overload(i),10) rpad(v_position(i),10)) ; if v_argument_name(i) is null then dbms_output.put(rpad('return',15)); else dbms_output.put(rpad(v_argument_name(i),15) ); end if; if v_datatype(i) = 1 then v_datatype_name := 'VARCHAR2'; elsif v_datatype(i) = 2 then v_datatype_name := 'NUMBER'; elsif v_datatype(i) = 3 then v_datatype_name := 'NATIVE INTEGER'; elsif v_datatype(i) = 8 then v_datatype_name := 'LONG'; elsif v_datatype(i) = 11 then v_datatype_name := 'ROWID'; elsif v_datatype(i) = 12 then v_datatype_name := 'DATE'; elsif v_datatype(i) = 23 then v_datatype_name := 'RAW'; elsif v_datatype(i) = 24 then v_datatype_name := 'LONG RAW'; elsif v_datatype(i) = 96 then v_datatype_name := 'CHAR (ANSI FIXED)'; elsif v_datatype(i) = 106 then v_datatype_name := 'MLSLABEL'; elsif v_datatype(i) = 250 then v_datatype_name := 'PL/SQL RECORD'; elsif v_datatype(i) = 251 then v_datatype_name := 'PL/SQL TABLE'; elsif v_datatype(i) = 252 then v_datatype_name :='PL/SQL BOOLEAN'; else v_datatype_name := 'UNKNOWN'; end if; dbms_output.put_line( rpad(v_level(i),9) ' ' rpad(v_datatype_name,20) ' ' rpad(v_length(i),9) ' ' rpad(v_precision(i),9) ' ' rpad(v_scale(i),9) ' ' rpad(v_radix(i),10) ); end loop; END; Figure 2 Code for my_describe 10 Juni 2002 OracleEkspert

11 table indicates Number Description 1 VARCHAR2 2 NUMBER 3 NATIVE INTEGER (for PL/SQL's BINARY_INTEGER) 8 LONG 11 ROWID 12 DATE 23 RAW 24 LONG RAW 96 CHAR (ANSI FIXED CHAR) 106 MLSLABEL 250 PL/SQL RECORD 251 PL/SQL TABLE 252 PL/SQL BOOLEAN Table 2 Interpretation of datatype Documentation also states that you should be able to issue a command like my_describe( standard.greatest ) but that does not work either. Dbms utility Good to know, I ve just recently came across it when PROCEDURE analyze_schema( schema VARCHAR2, method VARCHAR2, estimate_rows NUMBER DEFAULT NULL, estimate_percent NUMBER DEFAULT NULL, method_opt VARCHAR2 DEFAULT NULL); There is also one for converting a comma seperated list into a pl/sql table. PROCEDURE comma_to_table( list IN VARCHAR2, tablen OUT BINARY_INTEGER, tab OUT uncl_array); And one for the reverse PROCEDURE table_to_comma( tab IN uncl_array, tablen OUT BINARY_INTEGER, list OUT VARCHAR2); One for compilation of all object in a specific users schema. PROCEDURE compile_schema(schema VARCHAR2); SQL> execute my_describe('pdpack.pdformat_sagsnr'); Overload Position Argument Level Datatype Length Prec Scale Rad Return 0 VARCHAR P_PROJEKTAAR 0 NUMBER P_NNE_SAGSNUMME 0 NUMBER P_SAGSNUMMER_2 0 VARCHAR Figure 3 Result from my_describe I had then need to know, inside a plsql-program unit, who actually did invoke the program. The package consist of many interesting procedure, the first one is used for analyzing all objects belonging to a schema. One for formatting the whole error stack into a string. FUNCTION format_error_stack RETURN VARCHAR2 Getting the current time with 1/100 of a second precision in a number of the format nnnnnn, where nnnnnn is the number of 1/100th of seconds passed since the last whole hour. CREATE OR REPLACE PROCEDURE HEGMNMC(P_MODULENAME IN OUT VARCHAR2,P_MODULECOMPONENT_NAME IN OUT VARCHAR2) IS -- Program Data V_STRENG VARCHAR2(4000); V_PLAC PLS_INTEGER; V_PLAC2 PLS_INTEGER; V_PLAC3 PLS_INTEGER; -- PL/SQL Block BEGIN -- the call stack look like -- v_streng:= 'PL/SQL Call Stack - object line object handle number name 62b8ab package body PYTHIA.WEPACK package body PYTHIA.HEMODU$MODULE_COMP package body PYTHIA.HEMODU$MODULE_COMP package -- body PYTHIA.HEMODU$MODULE_COMP 40dcf20 22 package '; v_streng := dbms_utility.format_call_stack; --removes new lines v_streng := replace(v_streng,chr(10),' '); --find the first $ v_plac := instr(v_streng,'$'); -- find the fist blankspace after $ v_plac2 := instr(v_streng,' ',v_plac); -- shortens the string so all after the first blankspace after $ is gone v_streng := substr(v_streng,1,v_plac2-1); -- find the first. v_plac3 := instr(v_streng,'.', -1); -- extract the modulename and the modulecomponent name p_modulename := substr(v_streng, v_plac3 + 1, v_plac - v_plac3-1); p_modulecomponent_name := substr(v_streng, v_plac + 1 ); END; Figure 4 Who invoked me? OracleEkspert Juni

12 FUNCTION get_time RETURN NUMBER; And last, one for formatting the whole call stack into a string. FUNCTION format_call_stack RETURN VARCHAR2; I ve used format call stack in my coding to find the invoker, in this case it is in the context of a web pl/sql program, therefore the strange string handling, of a program, see figure 4. After the invocation of hegmnnc illustrated in figure 4 we know who the invoker was, as you can see in our case we need a little bit of codeing exercise to extract who the invoker is, so if you decide to use format_call_stack it is a good idea to see the content first of the stack, in order to substring you to the right information you need. Dbms session One of the larger packages, containing a large number of function of which the most interesting ones are: Procedure set_role (role_cmd varchar2); Enabling a specified role equivalent to the sql command set_role, you can use it as seen in figure 5. PROCEDURE aktivate_write (p_role in varchar2,p_pwd in varchar2) IS BEGIN sys.dbms_session.set_role (p_role ' identified by ' p_pwd); END; Figure 5 Activate a role Another function in the same area is for investigating if a role is enabled. Function is_role_enabled (rolename varchar2) returns boolean; Resetting a package, ie setting package variable to its initial values and closes package cursors. Procedure reset_package; Returning the session id for the current session. Function unique_session_id ; Freeing unused memory after large transactions. Procedure free_unused_user_memory; It is difficult to show some good examples for this package, since most of the package functions replace sql-commands, but in the next chapter about dbms_ddl I ve used one of them. Dbms ddl Very useful package. In an environment that often changes it is bound that objects get invalidated, or that we often need to compute statistics for objects in order to get the costbased optimizer to work properly, this is what this package is ment for. The interesting part of this package is the following 2 procedures: Procedure alter_compile (type varchar2, schema varchar2, name varchar2); procedure analyze_object (type varchar2, schema varchar2, name varchar2, method varchar2, estimate_rows number default null, estimate_percent number default null, method_opt varchar2 default null, partname varchar2 default null); There are 2 purposes for using these, I've written the code for, first one is a batch recompiler of all invalid objects owned by a specific user, the code for this can PROCEDURE batch_compile IS cursor sel_obj is select object_name, object_type, rownum from USER_objects where status = 'INVALID' and object_type in ('TRIGGER','PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY', 'VIEW') order by decode(object_type,'view',1,'package',2,3); v_number pls_integer; v_run pls_integer := 0; BEGIN select count(*) into v_number from USER_objects where status = 'INVALID' and object_type in ('TRIGGER','PROCEDURE','FUNCTION','PACKAGE','PACKAGE BODY', 'VIEW'); FOR my_obj IN sel_obj LOOP v_run := v_run + 1; dbms_application_info.set_module ('Batch compile ' v_number ' objects', 'Compiling(' v_run ') ' my_obj.object_name); if my_obj.object_type = 'VIEW' then execute immediate('alter View ' my_obj.object_name ' compile'); else dbms_ddl.alter_compile(my_obj.object_type, USER, my_obj.object_name); end if; END LOOP; dbms_session.free_unused_user_memory; END; Figure 6 Batch recompilation 12 Juni 2002 OracleEkspert

13 bee seen in figure 6 A funny point in this, as you can see in the code, is that I've used user_object to select from, in my testing I also tried to use dba and all_objects, and strange enough, all_object did not at all behave the same way when used in the pl/sql engine, as it did in sql, here is room for a more thorough investigation. You might wonder if it is possible to create a batch compiler of all invalid objects, but sadly I haven't found a way through this yet. You could grant all on all your objects to one schema, and let this schema have the DBA privilege, or at least the alter any procedure privilege plus access to dba_objects. But I reckon that this is not an archichecture that is desireable. The other usage of the package is a batch analyzer of objects, for which I included the code in figure 7. As you can see I ve used dbms_session.free_- unused_user_memory after the analyzing and the batch compilation. Dbms job This package might be useful to you, it s purpose is to manage batch processing of jobs. It is used for setting jobs in queue and to monitor the progress of such jobs. The package has been around for a while, but is not very widely used in all communities, since most operating systems offers a service similar to the one offered by dbms_job, and my experience with dba s has revealed that they tend to let the operating system DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE, interval IN VARCHAR2, no_parse IN BOOLEAN) Removes a job from the queue. DBMS_JOB.REMOVE(job IN BINARY_INTEGER); Changes parameters to an already scheduled job, if you want to alter just a single change of parameters this can be done by a separate procedure not revealed here. DBMS_JOB.CHANGE(job IN BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE, interval IN VARCHAR2); Used for marking a job as broken or unbroken. DBMS_JOB.BROKEN(job IN BINARY_INTEGER, broken IN BOOLEAN, next_date IN DATE); Forces a job to be run now. DBMS_JOB.RUN(job IN BINARY_INTEGER); In order to get dbms_job to work properly, there are 2 init.ora parameters you might need to consider. The first one is JOB_QUEUE_PROCESSES, which indicates how many processes to start. If set to zero, no jobs are executed, and default is 0, range is (At least that s what documentation says, reality is that default is 4). PROCEDURE batch_analyze IS cursor sel_a is select object_name, object_type from user_objects where object_type in ('TABLE','INDEX') order by object_type desc, object_name; BEGIN FOR a_rec IN sel_a LOOP dbms_ddl.analyze_object (a_rec.object_type, USER, a_rec.object_name,'estimate', NULL, 10, NULL, NULL); dbms_application_info.set_module('batch analysing','analyzing ' a_rec.object_name); END LOOP; dbms_session.free_unused_user_memory; END; Figure 7 Batch analyzing handle such batch jobs instead of letting the Oracle kernel. Oracle itself uses for instance this package for updating materialized views and handling preaggregated summaries is discoverer. The package consist of many procedures and functions, the most interesting ones are: Submitting a job for a queue, where job is an identifier, what is the job, next_date is the date to perform the job (default sysdate), interval is the interval for the next job, here it is ment to be an expression that could evaluate to a date expression(default null), parse is a boolean indicating if a job should be passed at submit time or passed at execution time (default false). The other one???, which is deciding how long an interval the process will sleep before checking for a new job, default is 60 sec, range is sec. (And here, default is 10). I ve included a small demo of how it works. Imagine I want to run a procedure every minute and thereafter every second minute, I would use a command like: dbms_job.submit (v_job,'xxx;',sysdate+120/(24*60*60), 'SYSDATE + 60/(24*60*60)'); Now if I want to inspect when I actually is going to run the job I could investigate the user_job table, with a query like: OracleEkspert Juni

14 select job, to_char(next_date, 'ddmmyyyy hh24:mi:ss') next, to_char(sysdate,'ddmmyyyy hh24:mi:ss') now, what from user_jobs That would give me a result like: Now if I want to alter anything about this job, I would use one of the above-mentioned functions, I my case I would like to remove the job so I issue: exec dbms_job.remove(29); So that was a brief intro to dbms_job, and how to use it. profload.sql. This package contains a number of procedures and functions. In this article I will only present those that is necessary to make profiling work: The first function is used to start the profiling, when is has been executed statistical data is beeing colleted for all plsql program units executed in the current session, until you explicit pause or stop the profiling. function start_profiler (run_comment IN varchar2 := sysdate, run_comment1 IN varchar2 := '') return binary_integer; To stop profiling you need to know the function: function stop_profiler return binary_integer; JOB NEXT NOW WHAT :27: :26:04 xxx; Dbms profiler Officially this package has been around since 8i, but never the less it existed already for 8.0.4, but, of course, it wasn t documented, neither did the script work properly and had to be modified by hand to get it installed, hence this package is not installed by a standard installation of the RDBMS. This neatly package is used to monitor the usage and timing of plsql packages/functions/procedures. For a very thorough description of the package see my article for last year s conference. To install this package you need to run the script Profload.sql in the RDBMS- catalog of your Oracle_home. Introducing dbms_profiler The package DBMS_PROFILER can be used to collect information about your plsql program units and how well or poor they perform, the package is not default installed in your database, to get it to work you need to install both the profiler tables and the profiler package to the SYS account. Installing the profiler tables To install the profiler tables, sequences and grant access to them you need to run the script ORA- CLE_HOME\rdbms\admin\proftab.sql. Plsql_profiler_runs, that contains information about the different profiler runs that has been run. Plsql_profiler_units, that contains information about witch programunits that has been executed in a specific profile run. Plsql_profiler_data, that contains information about which codelines of plsql code that has been used and statistical information about the execution of these (number of executions, total number of runs, min execution time and max execution time). After installation remember to grant all on them and create public synonyms. Installing the profiler packages To install the DBMS_PROFILER-package you need to run the script ORACLE_HOME/rdbms/admin/- Both function return a binary integer that is an errorcode, if you choose to investigate the result of the errorcode any values different from 0 represents an error, se DBMS_PROFILER documentation for further information. Normal profiling If you already have an idea about what plsql program that is causing problems for your application, you could use the profiler as intended. To do so you need to perform 4 steps 1. Starting the profiling 2. Doing profiling 3. Stop profiling 4. See the results Step 1 Starting the profiling In order to start the profiling you need to tell the profiling utility to start collecting data, which could be done by issuing: declare err number; begin err:= dbms_profiler.start_profiler( &1 ); dbms_output.put_line(err); end; in SQL*PLUS Step 2 Doing profiling I ve created 2 sample pl/sql programs in order to demonstrate the profiling they look like the following: CREATE OR REPLACE procedure give_all_raise is cursor sel_dept is select deptno from dept order by deptno; begin for i in loop for r in sel_dept loop give_raise(r.deptno,i/1000); end loop; end loop; end; 14 Juni 2002 OracleEkspert

15 procedure give_raise ( p_deptno in number, p_raise_percent in number ) is begin update emp set sal= sal+(sal*p_raise_percent*.01) where deptno = p_deptno; commit; end give_raise; These programs are really nonsense, but in order to be able to demonstrate then... So now I execute the procedure give_all_raise, the execution will be slightly slower in order to collect the statistics. Step 3 Stop profiling After the program give_all_raise has been executed then I need to stop the profiling. This can be done by issuing the following: declare err number; begin err := dbms_profiler.stop_profiler; end; again in SQL*PLUS. Step 4 Viewing the result. Now it is fairly easy to investigate the profiling result, by joining the profiler tables with user_source, you can get a accurate picture of what the pl/sql program unit actually did spent its time on. The select statement looks like: SELECT SUBSTR(PPU.UNIT_NAME,1,10) UNAME, PPD.TOTAL_OCCUR, PPD.TOTAL_TIME, PPD.MIN_TIME, PPD.MAX_TIME, US.TEXT FROM PLSQL_PROFILER_DATA PPD, PLSQL_PROFILER_RUNS PPR, PLSQL_PROFILER_UNITS PPU, USER_SOURCE US WHERE PPU.RUNID = PPR.RUNID AND PPD.UNIT_NUMBER = PPU.UNIT_NUMBER AND PPD.RUNID = PPU.RUNID AND US.NAME = PPU.UNIT_NAME AND US.LINE = PPD.LINE# AND US.TYPE = PPU.UNIT_TYPE AND PPU.RUNID = &1 ORDER BY PPU.UNIT_NAME, PPD.LINE# After executing this you would get a result like the one in figure 10. Now these 4 steps need to be repeated every time you find the need to do profiling, I ve found it worth while to invest a little time in order to make this much easier. Conclusion My aim with this article was to take you on a journey into the Oracle crypt, letting you have a peek into what interesting stuff lays buried there. During the preparation for this article I took a closer look on STANDARD package, and came across the clip in figure 11 function 'IS NOT NULL'(b BOOLEAN) return BOOLEAN is begin return (NOT b IS NULL); end 'IS NOT NULL'; Figure 11 Function is not null That gave me the idea to create a function like the one in figure 12 create or replace function "Wery strange" return varchar2 is begin return 'Wery strange ideed'; end; Figure 12 The strange function An even more strange thing about this function is that it is case sensitive and I need to use double quotes where Oracle seem like to get along with single quotes. So you see there is plenty of things to investigate in the Oracle crypt, the list for my next expedition involve packages like 1. DBMS_SPACE (Space management) 2. STANDARD (The standard package) 3. UTL_INADDR (Gives opportunity to find ipadress of local host) 4. OUTLN_PKG (Drop outlines) 5. DBMS_RLS (Row level security) Thank you very much, you can contact me on runm@nne.dk. UNAME TOTAL_OCC TOTAL_TIME MIN_TIME MAX_TIME TEXT GIVE_ALL_R E select deptno GIVE_ALL_R E for i in loop GIVE_ALL_R E E+09 for r in sel_dept loop GIVE_ALL_R E give_raise(r.deptno,i/1000); GIVE_RAISE E E+10 update emp set sal=sal+(sal*p_raise_percent * GIVE_RAISE E E+10 commit; Figure 10 Profiling result Indryk en stillingsannonce i OracleEkspert DKK 1500 (for 1/4 side) Salg@OracleEkspert.dk OracleEkspert Juni

16 Groans Fra Mogens Kære læser! Velkommen til den første udgave af min faste klumme. Formålet med klummen er at informere om Oracle-verdenen, give råd og tips, fortælle om arrangementer, osv. Alt sammen selvfølgelig tilsat private meninger, rene gætterier, usubstantierede rygter og ikke mindst løse formodninger. Emnerne denne gang spænder vidt: Ingen går til konferencer, Bør kunderne springe 9i Release 1 over?, To 9i-bugs du bør kende, Whitepapers på OraPerf.com, Oracle og fremtiden samt den laaaange Historien om Oracle Support. De emner jeg planlægger til næste gang er bl.a. Historien om Education, Betal meget mindre for din Oracle-licens (tak til min kilde DT i Oracle for det tips!) samt historier fra EOUG i Rom og Oracle World i Bella Centret. Gode tips og rygter er velkomne på mno@miracleas.dk til hver en tid. Jeg giver selvfølgelig øl i belønning for de bedste af dem. Venlig hilsen, Mogens Nørgaard Ingen går til konferencer Ingen går til konferencer i øjeblikket eller der er i hvert fald skåret kraftigt ned på disse aktiviteter hos virksomhederne. Nogle eksempler: DECUS Danmark måtte for nyligt aflyses for anden gang pga. lav tilmelding. EOUG i Rom i uge 20 skal være glade, hvis der kommer 350 (de har deres egne ting at slås med, idet den forrige President for EOUG åbenbart har stjålet hele kassen, så de skal lis som starte helt forfra ). Miracle s Database Forum i Sydney i uge 22 kryber lige over 100 deltagere, måske 150, på trods af at alle navnene fra OakTable er med: Steve Adams, Jonathan Lewis, James Morle, Anjo Kolk, Cary Millsap, osv. Der har ikke været en teknisk konference i Sydney i 3-4 år, og der er masser af Oracle-kunder derude. Alligevel er det svært at få dem til at dukke op. Oracle World i Bella Centret i uge 26 har lige flyttet deres Early Bird-dato fra 10/5 til 24/5, og fra Oracle s side gøres der virkeligt mange anstrengelser for at få folk til at dukke op til konferencen. Det er vist aldrig sket, at man har aflyst en Oracle World, men der skal åbenbart også gøres en ekstra indsats fra Oracle s side i år for at få folk ud af kontorene. Årsagerne kan man jo spekulere længe over, men den generelle ståen i stampe og holden tilbage og passe lidt på og se sig lidt for er jo nok hovedårsagen. Det bliver spændende at se, hvordan det går med tilmeldingerne til arrangementerne i efteråret (Database Forum i Middelfart, Oracle World i USA, osv.). Der er også temmelig stille indenfor kursusbranchen, hvor både Oracle og alle vi andre mærker, at folk går mindre på kursus i øjeblikket. Det eneste der ser ud til at være efterspørgsel på (eller penge til, om man vil) er måske skræddersyede kurser afholdt af kompetente folk ude hos kunderne med en blanding af teori og praktik. Jeg er snart træt af denne nedtur og stilstand på markedet. Lad os alle sammen købe en Oracle-licens og på den måde få gang i hjulene. Bør man springe 9iR1 over? Man skal i hvert fald overveje det. 9i Release 2 (9.2) er i skrivende stund (10/5) just udkommet, og Anjo og andre har allerede prøvet alskens sjove ting af. Den ser meget imponerende ud mht. features, og så må man jo spørge sig selv, om der er nogen grund til først at gå til 9.1 og dernæst til 9.2? Der kan selvfølgelig være nogle certiferingsmæssige ting, der tvinger én til at køre 9.1 og først senere 9.2, men derudover er det vel nemmest at springe 9.1 over Nå, jeg må lige nævne nogle sjove ting om 9.2: Der er nu 802 parametre (de fleste selvfølgelig udokumenterede), men et par af dem ser ret interessante ud: statistics_level: Kan sættes til ALL, TYPICAL eller BASIC) optimizer_dynamic_sampling OPTIMIZER_DYNAMIC_SAMPLING Default value: If OPTIMIZER_FEATURES_ENABLE is set to or higher, then 1 If OPTIMIZER_FEATURES_ENABLE is set to or lower, then 0 Parameter class Dynamic: ALTER SESSION, ALTER SYSTEM Range of values 0 to 10 Level 0 slår det fra. Level 1 vil hjælpe i tilfælde (med diverse betingelser og undtagelser), hvor en af de involverede tabeller i en query ikke har stats på sig. Level 2 laver sampling på alle ikke-analyserede tabeller. Level 3-10 har så stigende grad af sofistikering og muligheder. Der er nogle nye, spændende views, såsom v$segstat, der samler stats på diverse objekter, såsom ITL waits, buffer busy waits, samt diverse reads og writes (direkte og indirekte), samt row lock waits og noget global cache (RAC/OPS)-halløj. Der er en pakke kaldet DBMS_XPLAN, der kan vise seneste explain plan fra v$sql_plan, vise specifik information fra en bestemt plan table, og alt muligt. Der er også et view v$sql_plan_statistics, tror jeg det hedder, hvor man kan få noget information ud om det arbejde, der er udført (jf. Martin Berg s fantastiske papir om Bortsmidning af Rækker som måske snart udkommer i en 9i-aware udgave? Det kan vi da håbe på). Og så den HELT store nyhed (synes jeg): De beskriver i readme-filen til Statspack, hvordan man skal bruge YAPP-formlen, og Statspack-rapporten understøtter den til en vis grad. Hurra! Instrumenteringen af Oracle 7-kernen skete i 1992, og Anjo s YAPP-papir 16 Juni 2002 OracleEkspert

17 kom ud i 1996, men bedre sent end aldrig J. To 9i-bugs du bør kende Bug og note selve bugteksten er blanket ud, men eksempler på, hvordan man udnytter svagheden findes på alle mailinglisterne, naturligvis. Her er et eksempel på et select fra en bruger, der kun har create session-privilegie: select a.userid, a.password from sys.link$ a left outer join sys.link$ b on b.name= a.name; I 9.1 introducerer Oracle fuld ANSI join syntax. Hvis man joiner via ANSI join syntaxen med f.eks. DUAL kan man selecte fra alle tabeller. Hvis man oven i det har create view rettigheder (og kan finde en primary key af rette type) kan man på den måde slette data i f.eks. dictionarien via updatable join views uden at have nævneværdige rettigheder. Masser af fixes er tilgængelige. Der er fixes til stort set alle versioner og hardwareplatforme. Dog var der ikke en patch til Windows sidst jeg checkede, men det burde der være når du læser dette. Bug : Den her er grim. Den har at gøre med Automatisk Undo Management og kan forårsage alvorlige problemer med databasen (man kan risikere at miste den). Den er fixet i og der er backports til andre versioner. Whitepapers på OraPerf.com Jeg vil lige benytte lejligheden til at reklamere for de whitepapers, du kan finde på - pt. finder du seks i alt: Anjo s YAPP-papir, Bjørns StatsPack-papir, James Morle s Sane SAN, Anjo s Timing-papir, et papir om tuning af EMC og HP-diske. Og endelig et papir, som Mario fra DEComHPaq eller hvad de nu hedder, har færdiggjort for et par dage siden om RAC. Papiret dokumenterer en række ting man kan gøre for at få RAC til at performe virkelig godt og dokumenterer også, at det til tider kan være nødvendigt at gen-indføre den forfærdelige parameter gc_files_to_locks for at få RAC til at skalere. RAC skalerer IKKE nødvendigvis out of the box, hvilket måske er en overraskelse for nogle læsere. Oracle og fremtiden Jeg er ærlig talt lidt bekymret for Oracle for tiden. I 1991 var aktien nede i kurs 5 eller deromkring, og database-versionen var 6. Nu er aktien nede omkring 8 og database-versionen er 9. Ellers har Oracle altid formået at holde aktiekursen højere end current RDBMS-version, som Anjo påpegede forleden. Headhunteren Carl og møderne mellem Larry og Gates For mange år siden, da jeg var udstationeret i Californien, kom jeg til at tale med en mand, der sad ved siden af mig i et fly. Han fortalte en underlig historie om, at han arbejdede som head-hunter for både Larry og Gates, og hans kone bakkede ham pænt op med temmelig detaljerede beskrivelser af Larry s kvinder, hvilket er årsagen til, at jeg kan huske historien i dag. Denne underlige mand Carl fortalte mig, at han i 1991, da Oracle s aktiekurs var omkring 5, havde arrangeret tre møder mellem Larry og Gates mhp en sammenslutning af de to firmaer. Carl s kone fortalte mig så grinende, at forhandlingerne naturligvis var strandede på, at de to herrer ikke kunne blive enige om, hvem der skulle styre hvad i firmaet. Jeg fik flere år senere i øvrigt bekræftet, at en fyr ved navn Carl havde stået for rekrutteringen af bl.a. Jeff Henley (CFO i Oracle) m.fl. Så jeg er tilbøjelig til at tro på historien. Tre udfordringer til Oracle Men når aktiekursen for en virksomhed stædigt holder sig i single-digit-området, så begynder virksomheden at være følsom overfor overtagelser/mergers. Og når man så kigger på de andre ting, der sker for Oracle pt. kan man for alvor blive nervøs: For det første Det kan for det første blive svært for SAP og Oracle at overbevise mellemstore virksomheder om, at de skal købe ERP-systemer fra dem, når Microsoft har Navision eller Store Græsplæner eller hvad hulen de vil kalde det, som vil være tæt integreret med Excel, databaser, Word, Mediespillere og alt muligt skrammel. Nyheden om Navisions salg til Microsoft vil, så vidt jeg kan gætte, medføre, at f.eks. Axapta (som er high-end produktet) om et par generationer ikke længere kører på en Oracle-database. Vil Oracle f.eks. hjælpe Microsoft med at få adgang til udviklingsresourcer og rådgivning mhp at få Axapta til at køre hurtigt og godt på Oracle? Vil det være i Microsofts interesse? De Navision (Damgaard) partnere, der hele tiden har haft en helt klar Oracledatabase-strategi har mere brug for Oracle s støtte end nogensinde. Vil de få den? Jeg tvivler hvad skal Oracle få ud af det i det lange løb? For den nye direktør for Microsoft Danmark, Klaus Andersen (med en fortid som chef for Oracle Education globalt) må dette træk siges at være en effektiv tak for sidst. Jeg kender Klaus, idet han ansatte mig i sin tid i Oracle, og sådan noget vil han i øvrigt aldrig indrømme. For det andet Oracle bliver for det andet også presset af IBM, som jo nu mener (igen), at de er større end Oracle. Oracle er heller ikke længere størst på Windows-platformen og taber terræn på Unix. Disse påstande går jo frem og tilbage hvert år, og Oracle kan med rette hævde, at Microsoft indregner salget af Access i deres databasesalg (men Oracle indregner måske også Rdb i deres?). Alt sammen virker jo lidt smålatterligt på almindelige mennesker. Men investorer er ikke almindelige mennesker. De skal give købs- og salgs-signaler til kunder, der risikerer deres sparepenge, så de læner sig op af alle mulige og umulige ratios (adr!) og rygter og hensigtserklæringer og fornemmelser. Hvis Gartner siger, at IBM nu er størst så er IBM størst. Hvis Gartner siger, at Microsoft nu er størst på Windows så er Microsoft størst på Windows. Alt andet er detaljer og fnidder, som markedet ikke gider OracleEkspert Juni

18 beskæftige sig med. For det tredje Og så for det tredje - min kæphest: Oracle har en partner-strategi, som lidt ironisk/humoristisk og provokerende kan beskrives således: Hvis du som partner kan sælge licenser for os, så er det fint. Vi vil alligevel engang imellem gå udenom dig og direkte til din kunde og give ham et godt tilbud, som du partneren ikke kan give ham. Det sker ikke ofte, men typisk i anledning af kvartals-, halvårs- eller finansårsafslutninger. Hvis du leverer service-ydelser vil vi konkurrere med dig uanset hvad du laver: Uddannelse er en konkurrent til Oracle Education og vi vil udelukke dig fra kurser, lægge sager an mod dig, mv. Hjælp og support konkurrerer med Support (her lysner det dog! Se artiklen om Support senere). Konsulentydelser konkurrerer med Oracle Consulting. Remote overvågning af databaser konkurrerer med Oracle Online eller hvad det nu hedder pt. (det flyttes i hvert fald til en centraliseret lokation i Prag) Endelig er sidste skud på stammen, at Oracle også vil lave Hosting, nu da det begynder at ligne et godt marked og partnerne var begyndt at tage fat for alvor. Hvorfor er Oracle s partnere nervøse for Oracle Disclaimer: Det her er ikke nogen danskers skyld! Sælgerne i Oracle s Partnerafdeling vil gerne have det godt med Oracle s partnere. Alle i Oracle Danmark kan se det fornuftige i en stærk partner-strategi, og hvert år lægges der stor vægt på dette i planlægningen. I Consulting ved alle lederne ganske udmærket, hvor vigtigt det er at have gode og stærke partnere. Men når realiteterne rammer og markedet strammer, så er det resultaterne der fokuseres på i alle virksomheder. Sådan handler SAP, IBM, PWC og andre også. Siden vi startede Miracle A/S for halvandet år siden har jeg talt med mange Oracle-partnere, og ovennævnte opfattelse deles af dem alle. Når jeg tænker tilbage har jeg også hørt disse ting mens jeg arbejdede i Oracle jeg hørte bare ikke rigtigt efter men det er jo ikke noget nyt. Alle har oplevet at Oracle går bag om ryggen på dem og direkte til kunderne. Alle har oplevet, at Oracle går ind og konkurrerer på deres service-ydelser. Ingen af dem ville drømme om at involvere Oracle i en sag med mindre de var tvungne til det. På trods af lidt slankning i de senere måneder består Oracle Consulting alene i Danmark af 130 mand eller mere, som skal have noget at lave (næsten) hver dag. Selv efter afskedigelserne sidder der stadig mange konsulenter på bænken hver dag. Ligesom i andre, store konsulenthuse. Consultings ledelse skal naturligvis levere resultater ligesom alle andre, og det betyder at de også skal vende alle de sten, de finder på deres vej man kan jo ikke vide, hvilken sten, der giver resultat. Og så er det pludselig ikke så nemt at have en ordentlig partner-strategi Løsningen er Løsningen det lyder nemt, ikke? er selvfølgelig at transformere Oracle til et ægte salgs- og marketingsfirma, der lader partnerne levere services i det omfang dette er muligt. Det betyder f.eks., at al Education lægges ud til partnere. Vi er nogle stykker, der før har kunnet holde Oracle-kurser med tilfredsstillende resultater. Det betyder at megen Support sælges fra. Her lysner det jo Teymi har fået lov at lave rigtig Support i samarbejde med Oracle Danmark og Kim Engberg, men mere er påkrævet. Det betyder, at man kunne slanke Consulting, så den måske kun bestod af de allerdygtigste og mest specialiserede (måske mand i alt?), som så til gengæld kunne udfylde en pre-sales rolle og bruges i alvorlige situationer. Hosting-halløjet skal selvfølgelig bare droppes. Der er masser af firmaer, der har satset på dette forretningsområde og har langt mere erfaring end Oracle. Microsoft, Damgaard, Navision har gjort det På den måde vil partnerne ikke længere opfatte Oracle s service-afdelinger som evige konkurrenter. Det har Microsoft forstået hele tiden, og da Damgaard i sin tid solgte sin konsulentafdeling fra til Aston var det også et signal, der blev opfattet utroligt positivt af Damgaard-partnerne. Navision har fra starten kørt en hel ren partner-strategi og har altid været elskede af deres partnere. Så kommer produkternes relative kvalitet og ydeevne faktisk i anden række det handler jo om, hvor nemt det er for os partnere at få skabt en virksomhed, der kan give os mad på bordet og sjov i hverdagen. Jeg tror det er Oracle s eneste redning. De skal ud og hjælpe partnerne (og omvendt) og droppe den der ide om, at man i det lange løb kan konkurrere om formiddagen og samarbejde om eftermiddagen. Som partner er man meget lidt tilbøjelig til at invitere folk fra Oracle med på projekter, for man ved, at de vil forsøge at gå udenom partneren og direkte til kunden. Det er måske en stor kamel at skulle sluge, men den nuværende kurs duer altså ikke ret meget længere. Og det er jo noget, der både vil ramme SAP, IBM og andre, der i disse år stædigt holder på, at de kan alt selv og at de i øvrigt kan det bedre end nogen andre, og ikke har brug for nogens hjælp. De taler med kløftede tunger om at partnerne er vigtige for dem, samtidig med at de konkurrerer med partnerne på livet løs, gør de. Den fantastiske database Det eneste, der holder partnerne fast i Oracle-valget er simpelthen kvaliteten af databasen. Oracle s database er bare bedre end nogen anden. Tools, applikations-servere, programmeringsværktøjer, etc. er såmænd ikke bedre eller dårligere end andres, og der findes masser af alternativer. Men databasen er helt fantastisk. Hvor længe mon Oracle s database er helt fantastisk? Og vigtigst af alt: Hvor ofte vil økonomidirektørerne 18 Juni 2002 OracleEkspert

19 stille spørgsmålet til teknikerne: OK, OK, så den har rækkelåsning og multi-version read consistency og stabile cursors og frem for alt! et fantastisk Wait Interface. Men er SQL Server GOD NOK til lige præcis det her job?. SQL Server er IKKE lige så god som Oracle, men derfor kan den godt være god nok til mange ting (og det er den jo markedsandelen er nu større end Oracle s på Windows-platformen). Microsoft ved godt, hvad de skal have lavet ved deres database mange af deres Kernel-udviklere kommer fra Oracle. Så det kommer. Hvor skal pengene komme fra til fortsat udvikling af Oracle, hvis ERP/CRM-markedet ligger dødt? Microsoft har masser af forskellige indtjeningsmuligheder, der kan finansiere fortsat R&D. FY03 Jeg tror der kommer til at ske meget i Oracle-organisationen når finansårets resultat ligger klart ca. midt i juni. Oracle s 2002 Finansår (FY02) slutter 31. maj og så kommer FY03 pr. 1/6. Det er grunden til, at maj er den bedste måned (afslutning af såvel kvartal som finansår), hvis man vil gøre en god handel med Oracle. Andre gode måneder er august (kvartal), november (kvartal og halvår) og februar (kvartal). Diverse top-chefer er smuttet (bl.a. Jeremy Burton, der var Mark Jarvis næstkommanderende han er gået til Veritas, som ledes af ex-oracle Gary Bloom). Der er allerede skåret totalt ned på kursus- og konference-deltagelse, interne afregninger håndhæves meget hårdt. Der er også forbud mod at benytte eksterne konsulenter i projekter, og salgsafdelingerne opfordres til at give alle jobs til Consulting og ikke til partnere for at sikre et så godt resultat som muligt. Alt sammen normale tegn i denne tid, men sammenholdt med de andre faktorer jeg har nævnt kræver det, at Oracle gør noget drastisk. Eller som Cary Millsap engang formulerede det: I wonder how many times Larry can actually lift the car off his son?. Historien om Oracle Support Det følgende er en subjektiv, urimelig, unfair og simplificeret gennemgang af den transformation, som Oracle Support har gennemgået i de senere år. Jeg har - udover mine 10 år i Support i Oracle Danmark - fulgt med på sidelinien når kunder, Oracle-medarbejdere og partnere snakkede om deres oplevelser med Support-organisationen siden den blev oprettet af Jannik Ohl i slutningen af 80'erne. I begyndelsen var Support Support blev startet af Jannik Ohl i Den første ansatte var Ove Kaastrup, som stadig er der. Da jeg kom ind i billedet i 1990 bestod Support af en VMSgruppe (mig og Margrethe Worsøe), en Unix-gruppe (Claus Moldt, Søren Madsen, og andre) og en PCgruppe (Ove Kaastrup m.fl.). Når kunderne ringede ind blev de spurgt, hvilken OS de benyttede og derefter dirigeret hen til den relevante gruppe. Vi skulle derfor alle vide noget om Forms, Pro*C og RPT. Vi modtog en kopi af bug-databasen fra USA på et TK-50-bånd een gang om måneden. Martin Jensen (fra DDE) havde bedre adgang til US- Supports bulletiner end vi havde. Men vi har alligevel lykkelige og glade og unge. Vi startede i Stjernehuset i Ballerup, flyttede til Farum i 1990 og tilbage til Oracle's nuværende domicil i 1994 eller deromkring. I begyndelsen kunne omstillingen (Lena Kastofte) klare at stille kunderne videre til de enkelte grupper. Siden blev Helle Messerschmidt sat til det. Da de dårlige tider med een-cifrede aktiekurser i 1991 slog igennem måtte vi desværre sige farvel til Helle. Som Karl Marx har sagt: Historien gentager sig: Første gang som komedie, anden gang som tragedie. Oracle's aktiekurs i skrivende stund er Som Anjo Kolk bemærkede for nyligt, så er det første gang siden 1991 at aktiekursen er lavere end den aktuelle RDBMS-version. Produktgrupper, OPK og telefonsvareren Siden blev der lavet produkt-grupper: En RDBMSgruppe (mig som chef, Michael Möller, Peter Gram, Jan Kofod, Christian Fabricius, Jesper Lykke, Mogens Rode), en Tools-gruppe under Anders Hansen/Lars Selsbæk, Desktop-gruppen under Ove Kaastrup, osv. Applications var iøvrigt også blevet en selvstændig ting på et ret tidligt tidspunkt. Vi havde også i lang tid vores OPK (Opkaldscenter), hvor den måske mest forhadte telefonsvarer i Danmarks historie havde en prominent plads. Vi sad tre mand høj i OPK: Een fra RDBMS, een fra Tools, een fra Desktop. Det var lidt lotteri-agtigt for kunderne: Hvis de havde et RDBMS-problem var der 33% chance for, at de fik fat i personen fra RDBMS-gruppen. Men vi lærte meget af at sidde så tæt og intenst sammen og løse mange forskellige problemer. Faktisk kunne folk ikke holde til at sidde i OPK ret meget mere end nogle få dage ad gangen - så måtte de roteres eller bæres ud og sidde i "Køen", som vi kaldte den. André Bakker og Atlas Så fik vi direkte telefonnumre til de enkelte grupper (RDBMS, Tools, Desktop, Apps) og Anne Green og andre tog hovedtelefonen (og overflowen, når vi andre ikke kunne klare presset). Det skyldtes en omfattende plan for at gøre Support i Europa ligeså succes-fuld som Support alle dage havde været i Holland under Andre Bakkers ledelse. Andre Bakker blev udnævnt til Vice President for Support og påbegyndte et meget ambitiøst program kaldet Atlas, hvor alle detaljer var med - lige fra hvor mange gange man skulle lade telefonen ringe (to) til generelle observationer a la "...niveauer skaber køer - eliminer køerne ved at lade kunderne ringe direkte ind til supporterne og lad alle supportere være på samme niveau". Atlas blev stort set gennemført før Andre Bakker blev afløst af Bill Cadogan, som nu også er blevet afløst. OracleEkspert Juni

20 Bronze, Sølv, Guld og Premium Det gik godt for Support. Kunderne var faktisk rimeligt tilfredse, og når man snakker med kunder der kendte Support dengang er det lidt som at høre på folks gamle soldaterhistorier - nøj, hvor var det hårdt, men det var helt sikkert bedre end idag. Man oprettede Bronce, Sølv og Guld. Premium Services startede i Huhej, hvor det gik. Og hele tiden tog vi os også af småopgaver såsom installation eller panikredninger ude hos kunderne. Det gav lidt praktisk erfaring og en smule føling med kunderne. Man kunne høre historier om, at DB2-DBA'ere og SQL Server-DBA'ere og Sybase-DBA'ere var misundelige på Oracle-DBA'erne fordi de kunne få sådan en god support - de kunne bare ringe og stille et spørgsmål, for nu at nævne noget helt vildt. Monopolbruddet i 1999 Men så rykkede IBM pludseligt med noget, der set i bakspejlet var langt mere genialt end de nok selv forestillede sig. For det skulle vise sig at gøre Oracle Support dårligere og derved fjerne en betydelig konkurrencefordel for Oracle. I april 1999 kunne man - meget overraskende - læse, at IBM pludselig var større end Oracle på databasemarkedet. Eller rettere: At deres licens-omsætning var større end Oracle's. Hvordan kunne de pludselig hævde, at deres licensforretning var større end Oracle's? Det kunne de ved hjælp af et snedigt bogføringstrick. Sidste nyt (7. maj 2002): IBM har nu iflg. Gartner større andel af database-markedet end Oracle takket være opkøbet af Informix. Før april 1999 havde IBM ligesom Oracle et herligt princip omkring Support-betaling kaldet bundling: Enten købte kunden BÅDE Upgrade Rights (ca. 15% af licensbeløbet) OG Support (7%) - eller også købte de ingenting. Kort sagt et monopol: Enhver kunde er jo nødt til at købe Upgrade Rights, og når det er bundled sammen med Support, tjah, hvem gider så købe Support et andet sted også? Nu er det sådan - af underlige årsager - at hvis man un-bundler disse to ting, så kan indtjeningen fra Upgrade Rights lægges over som licensindtægter, dvs. overføres fra Support-forretningen til licensforretningen. Så da IBM un-bundlede kunne de overføre 2/3 af deres Support-indtægter til licensforretningen og vupti! var de større end Oracle's licensforretning. Jeg simplificerer det en anelse, men det er hovedprincippet. Jamen, vil de fleste nok indvende: Forretningen som helhed er vel ikke blevet større? Næh, men det er licensomsætningen der bliver kigget på ude i den virkelige verden, hvor investorer flytter deres penge rundt hele tiden. Det er licensomsætningen, der fortæller markedet, om der er gang i firmaet eller ej, når vi taler om softwarevirksomheder som Oracle, IBM, Microsoft, SAP, Navision, osv. Det kan I selv være Den tyggede Oracle på i et halvt års tid. Den 16. december 1999 kom der en pressemeddelelse fra Oracle, der omhandlede Apps (eller E-business Suiten eller hvad den nu blev kaldt) - men nederst stod der i en bisætning, at support-ydelsen forresten var blevet un-bundled. Det er ikke noget ret mange ved. Det er ikke noget Oracle har gjort et stort nummer ud af. Det er aldrig blevet meddelt i klart sprog til support-kunderne. Men det var den dag det skete. Tænk lige over, hvad det rent faktisk betyder: Det betyder, at man kan købe sin support et andet sted - eller helt lade være med at købe den og bare basere sig på netværket, mail-lister, diverse tekniske fora på nettet, osv. Det faktum er ikke gået op for ret mange kunder endnu. Groft sagt havde det en meget stor impact på Support-forretningen i alle lande - 2/3 af pengene skulle flyttes over til licens. Husk på, at Support kørte så godt for Oracle, at det faktisk i mange lande var en større forretning end licenssalget. Vi havde - som den daværende Supportchef Allan Marker udtrykte det - alle muligheder for, at Support kunne blive krumtappen om al kundepleje (CRM nu om dage). Før unbundlingen. Men pludselig var det meste af forretningens penge væk. Det betød naturligvis også, at overskuddet faldt dramatisk i Support. Og igen er markederne benhårde: Microsoft, f.eks., kører helst med 50% overskud i alle deres lines of business (LOB's). Det skal Oracle også gøre for at virke troværdige på markedet. Back in Business Nå, hvordan får vi banket overskudsgraden op igen efter at have misten størstedelen af omsætningen? Det er jo en udfordring for de fleste... og den omstrukturering, der har fundet sted de senere år er bestemt ikke noget kunderne kan lide. Heller ikke medarbejderne i Support. Jeg tror egentlig heller ikke den er specielt morsom for management. Men den er nødvendig. Man kan følge logikken hele vejen fra IBM's unbundling og nedad. Der er ikke rigtigt noget at gøre andet end at prøve at gøre Support meget profitabel igen. Det gør man ved at indføre selv-service (itar, ihope, ipray, som man siger), ved at skære dramatisk i antallet af support-medarbejdere, ved at nedlægge lokale support-centre (Support i Vejle her i Andedammen blev også forsøgt lukket, men det måtte man opgive af forskellige årsager - meget pinligt) - og ved at insistere på, at folk skulle lave TAR's istedet for at snakke med supporterne direkte i telefonen. Der blev hængt skilte op i Support, der mindede supporterne om, at kunderne skulle bruge Metalink, Metalink, Metalink. Anne Green havde et meget utaknemligt arbejde i den periode, for det var hende, der skulle fortælle kunderne, at Verden nu var en anden, når de forsøgte at ringe til Support. Det var ikke altid lige nemt at forklare dem, når de stadig betalte det samme som hidtil (og det behøver jo ikke være små-beløb). 20 Juni 2002 OracleEkspert

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret. Check dine svar på: https://dtu.codejudge.net/02101-e18/ Exercise 1: Installer Eclipse og Java. Dette kan f.eks. gøres ved at følge instuktionerne i dokumentet eclipse intro.pdf som ligger under Fildeling

Læs mere

Trolling Master Bornholm 2015

Trolling Master Bornholm 2015 Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af

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

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

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

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

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

Titel: Barry s Bespoke Bakery

Titel: Barry s Bespoke Bakery Titel: Tema: Kærlighed, kager, relationer Fag: Engelsk Målgruppe: 8.-10.kl. Data om læremidlet: Tv-udsendelse: SVT2, 03-08-2014, 10 min. Denne pædagogiske vejledning indeholder ideer til arbejdet med tema

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

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

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

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

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

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

Dean's Challenge 16.november 2016

Dean's Challenge 16.november 2016 O Dean's Challenge 16.november 2016 The pitch proces..with or without slides Create and Practice a Convincing pitch Support it with Slides (if allowed) We help entrepreneurs create, train and improve their

Læs mere

COACH NETWORK MEETING

COACH NETWORK MEETING COACH NETWORK MEETING Tommerup d. 1 The presentation: Split into 4 parts: Who am i? Pre Post Ask questions anytime 2 Who am i? 23 years old Started my career in Vildbjerg Svømmeklub in 2010 Became assistant

Læs mere

Richter 2013 Presentation Mentor: Professor Evans Philosophy Department Taylor Henderson May 31, 2013

Richter 2013 Presentation Mentor: Professor Evans Philosophy Department Taylor Henderson May 31, 2013 Richter 2013 Presentation Mentor: Professor Evans Philosophy Department Taylor Henderson May 31, 2013 OVERVIEW I m working with Professor Evans in the Philosophy Department on his own edition of W.E.B.

Læs mere

MultiProgrammer Manual

MultiProgrammer Manual MultiProgrammer Manual MultiProgrammeren bruges til at læse og skrive værdier til ModBus register i LS Controls frekvensomformer E 1045. Dansk Version side 2 til 4 The MultiProgrammer is used for the writing

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. 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

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

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

INTEL INTRODUCTION TO TEACHING AND LEARNING AARHUS UNIVERSITET

INTEL INTRODUCTION TO TEACHING AND LEARNING AARHUS UNIVERSITET INTEL INTRODUCTION TO TEACHING AND LEARNING 8 BÆRENDE PRINCIPPER 1-4: BÆREDYGTIGT OG FLEKSIBELT Billigt Nemt at administrere Skalérbart Fleksibelt 5: RELEVANT Indhold organiseret i themes 6: EKSEMPLARISK

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

MOC On-Demand Identity with Windows Server 2016 [20742]

MOC On-Demand Identity with Windows Server 2016 [20742] E-learning 90 dage DKK 7.999 Nr. 89067 P ekskl. moms Dato Sted 29-12-2019 Virtuelt kursus MOC On-Demand Identity with Windows Server 2016 [20742] Online undervisning når det passer dig MOC On-Demand er

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

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

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

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

Trolling Master Bornholm 2013

Trolling Master Bornholm 2013 Trolling Master Bornholm 2013 (English version further down) Tilmeldingerne til 2013 I dag nåede vi op på 85 tilmeldte både. Det er stadig lidt lavere end samme tidspunkt sidste år. Tilmeldingen er åben

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

Titel: Hungry - Fedtbjerget

Titel: Hungry - Fedtbjerget Titel: Hungry - Fedtbjerget Tema: fedme, kærlighed, relationer Fag: Engelsk Målgruppe: 8.-10.kl. Data om læremidlet: Tv-udsendelse: TV0000006275 25 min. DR Undervisning 29-01-2001 Denne pædagogiske vejledning

Læs mere

Managing stakeholders on major projects. - Learnings from Odense Letbane. Benthe Vestergård Communication director Odense Letbane P/S

Managing stakeholders on major projects. - Learnings from Odense Letbane. Benthe Vestergård Communication director Odense Letbane P/S Managing stakeholders on major projects - Learnings from Odense Letbane Benthe Vestergård Communication director Odense Letbane P/S Light Rail Day, Bergen 15 November 2016 Slide om Odense Nedenstående

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

PMDK PC-Side Basic Function Reference (Version 1.0)

PMDK PC-Side Basic Function Reference (Version 1.0) PMDK PC-Side Basic Function Reference (Version 1.0) http://www.icpdas.com PMDK PC-Side Basic Function Reference V 1.0 1 Warranty All products manufactured by ICPDAS Inc. are warranted against defective

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

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

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

Observation Processes:

Observation Processes: Observation Processes: Preparing for lesson observations, Observing lessons Providing formative feedback Gerry Davies Faculty of Education Preparing for Observation: Task 1 How can we help student-teachers

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

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

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

Trolling Master Bornholm 2013

Trolling Master Bornholm 2013 Trolling Master Bornholm 2013 (English version further down) Tilmeldingerne til 2013 I dag nåede vi op på 77 tilmeldte både. Det er lidt lavere end samme tidspunkt sidste år. Til gengæld er det glædeligt,

Læs mere

INGEN HASTVÆRK! NO RUSH!

INGEN HASTVÆRK! NO RUSH! INGEN HASTVÆRK! NO RUSH! Keld Jensen Nr. 52, december 2018 No. 52, December 2018 Ingen hastværk! Vær nu helt ærlig! Hvornår har du sidst opholdt dig længere tid et sted i naturen? Uden hastværk. Uden unødvendig

Læs mere

Titel Stutterer. Data om læremidlet: Tv-udsendelse 1: Stutterer Kortfilm SVT 2, , 14 minutter

Titel Stutterer. Data om læremidlet: Tv-udsendelse 1: Stutterer Kortfilm SVT 2, , 14 minutter Pædagogisk vejledning Titel Stutterer Tema: kærlighed Fag: Engelsk Målgruppe: 8.-10.kl. QR-koden fører til posten i mitcfu Data om læremidlet: Tv-udsendelse 1: Stutterer Kortfilm SVT 2, 11-09-2016, 14

Læs mere

Trolling Master Bornholm 2014

Trolling Master Bornholm 2014 Trolling Master Bornholm 2014 (English version further down) Den ny havn i Tejn Havn Bornholms Regionskommune er gået i gang med at udvide Tejn Havn, og det er med til at gøre det muligt, at vi kan være

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

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

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015 BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015 SAS VISUAL ANALYTICS 7.1 ADMINISTRATOR Mulighed for at udføre handlinger på flere servere

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

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

Skriftlig Eksamen Beregnelighed (DM517)

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

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

Udbud på engelsk i UCL. Skabelon til beskrivelse

Udbud på engelsk i UCL. Skabelon til beskrivelse Udbud på engelsk i UCL Skabelon til beskrivelse Indhold 1. Forord... 3 2. What to do... 3 3. Skabelon... 4 3.1 Course Overview... 4 3.2 Target Group... 4 3.3 Purpose of the module... 4 3.4 Content of the

Læs mere

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne - Åbning Engelsk Dansk Dear Mr. President, Kære Hr. Direktør, Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne Dear Sir, Formel, mandelig modtager, navn ukendt

Læs mere

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne

Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne - Åbning Dansk Engelsk Kære Hr. Direktør, Dear Mr. President, Meget formel, modtager har en meget speciel titel som skal bruges i stedet for deres navne Kære Hr., Formel, mandelig modtager, navn ukendt

Læs mere

Small Autonomous Devices in civil Engineering. Uses and requirements. By Peter H. Møller Rambøll

Small Autonomous Devices in civil Engineering. Uses and requirements. By Peter H. Møller Rambøll Small Autonomous Devices in civil Engineering Uses and requirements By Peter H. Møller Rambøll BACKGROUND My Background 20+ years within evaluation of condition and renovation of concrete structures Last

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

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

IPv6 Application Trial Services. 2003/08/07 Tomohide Nagashima Japan Telecom Co., Ltd.

IPv6 Application Trial Services. 2003/08/07 Tomohide Nagashima Japan Telecom Co., Ltd. IPv6 Application Trial Services 2003/08/07 Tomohide Nagashima Japan Telecom Co., Ltd. Outline Our Trial Service & Technology Details Activity & Future Plan 2 Outline Our Trial Service & Technology Details

Læs mere

User guide - For testing SFTP and HTTP/S data communication

User guide - For testing SFTP and HTTP/S data communication User guide - For testing SFTP and HTTP/S data communication with Nets Danmark A/S P. 1-9 Index General information... 3 Introduction... 3 Rights... 3 Limitations... 3 Prerequisites... 3 Preparations...

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

Login til DOLL Visitor Center kalender

Login til DOLL Visitor Center kalender Log Ind C: Hjælp Venligst log ind Login til DOLL Visitor Center kalender Bruger Login Email: [din@email-adresse.dk Adgangskode:.,.. FILL IN TO LOGIN Hold mig logget ind O Husk min e-mail 0 Spørg mig hver

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

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

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling 6.5.2009 Jacob Schaumburg-Müller jacobs@microsoft.com Direktør, politik og strategi Microsoft

Læs mere

1 Indlæsning af script

1 Indlæsning af script 1 Indlæsning af script Når opgraderingen af invokeren er foretaget, skal du indlæse et script på den SQL server, hvor I skal modtage jeres SLS-data. Scriptet henter du her http://www.oes.dk/sw49118.asp

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