#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 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: Web: www.OracleEkspert.dk Ansvarshavende redaktør: marc de Groans fra Mogens: Mogens 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 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) 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å 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

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

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

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

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

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

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

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

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

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

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

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

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

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

WINDCHILL THE NEXT STEPS

WINDCHILL THE NEXT STEPS WINDCHILL THE NEXT STEPS PTC/user, 4. marts 2015 Jens Christian Jensen, Econocap Agenda Windchill the next steps Bliv opdateret og inspireret til at se hvor Windchill kan hjælpe dig med andet end blot

Læs mere

POSitivitiES Positive Psychology in European Schools HOW TO START

POSitivitiES Positive Psychology in European Schools HOW TO START POSitivitiES Positive Psychology in European Schools HOW TO START POSitivitiES Positive Psychology in European Schools PositivitiES er et Comenius Multilateral europæisk projekt, som har til formål at

Læs mere

GIVE IT. SOME ENGlISH1. Hedwig

GIVE IT. SOME ENGlISH1. Hedwig Doth Ernst Jacobsen og Henriette BETH Brigham GIVE IT SOME ENGlISH1 Hedwig Give It Some English I 2014 Doth Ernst Jacobsen og Henriette Beth Brigham og Forlaget Hedwig Sat med Calibri og Futura Grafisk

Læs mere

QUICK START Updated: 18. Febr. 2014

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

Læs mere

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016

Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Læs venligst Beboer information om projekt vandskade - sikring i 2015/2016 Vi er nødsaget til at få adgang til din lejlighed!! Hvis Kridahl (VVS firma) har bedt om adgang til din/jeres lejlighed og nøgler,

Læs mere

RentCalC V2.0. 2012 Soft-Solutions

RentCalC V2.0. 2012 Soft-Solutions Udlejnings software Vores udvikling er ikke stoppet!! by Soft-Solutions RentCalC, som er danmarks ubetinget bedste udlejnings software, kan hjælpe dig med på en hurtigt og simple måde, at holde styr på

Læs mere

Application form - au pair (please use block capial letters when filling in the form)

Application form - au pair (please use block capial letters when filling in the form) Application form - au pair (please use block capial letters when filling in the form) Au Pairs International Sixtusvej 15, DK-2300 Copenhagen S Tel: +45 3284 1002, Fax: +45 3284 3102 www.aupairsinternational.com,

Læs mere

Vejledning til at tjekke om du har sat manuel IP på din computer.

Vejledning til at tjekke om du har sat manuel IP på din computer. Indhold Vejledning til at, komme på nettet. (DANSK)... 2 Gælder alle systemer.... 2 Vejledning til at tjekke om du har sat manuel IP på din computer.... 2 Windows 7... 2 Windows Vista... 2 Windows XP...

Læs mere

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML Microsoft Development Center Copenhagen, July 2010 OIOXML / OIOUBL Microsoft Dynamics C5 Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML Indledning Indledning... 3 Anvendelse af værktøjet... 3

Læs mere

Backup Applikation. Microsoft Dynamics C5 Version 2008. Sikkerhedskopiering

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

Læs mere

TimeStamper Guide til fejlretning

TimeStamper Guide til fejlretning TimeStamper Guide til fejlretning for version 2.01 Copyright 2002-2013 www.timestamper.dk LICENSVEJLEDNING ver A09.doc ANSVARSFRASKRIVELSE: I ingen tilfælde skal udvikleren og/eller dets respektive leverandører

Læs mere

BILAG 8.1.B TIL VEDTÆGTER FOR EXHIBIT 8.1.B TO THE ARTICLES OF ASSOCIATION FOR

BILAG 8.1.B TIL VEDTÆGTER FOR EXHIBIT 8.1.B TO THE ARTICLES OF ASSOCIATION FOR BILAG 8.1.B TIL VEDTÆGTER FOR ZEALAND PHARMA A/S EXHIBIT 8.1.B TO THE ARTICLES OF ASSOCIATION FOR ZEALAND PHARMA A/S INDHOLDSFORTEGNELSE/TABLE OF CONTENTS 1 FORMÅL... 3 1 PURPOSE... 3 2 TILDELING AF WARRANTS...

Læs mere

Den røde tråd fra testdækning til releasemetrikker

Den røde tråd fra testdækning til releasemetrikker Den røde tråd fra testdækning til releasemetrikker The art of developing software cheaper, in good quality and at schedule Software-Pro Agenda Den røde tråd fra testdækning til releasemetrikker Mange har

Læs mere

Overfør fritvalgskonto til pension

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

Læs mere

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

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

Læs mere

HØJESTERETS KENDELSE afsagt mandag den 20. august 2012

HØJESTERETS KENDELSE afsagt mandag den 20. august 2012 Lukkede døre (Det forbydes ved offentlig gengivelse af kendelsen at gengive navn, stilling eller bopæl eller på anden måde offentliggøre pågældendes identitet) HØJESTERETS KENDELSE afsagt mandag den 20.

Læs mere

Forskning i socialpædagogik socialpædagogisk forskning?

Forskning i socialpædagogik socialpædagogisk forskning? Forskning i socialpædagogik socialpædagogisk forskning? eller knudramian.pbwiki.com www.regionmidtjylland.dkc Indhold Professionsforskning til problemløsning eller som slagvåben? Hvad er forskning? Hvad

Læs mere

Installation og brug af DMUs VPN klient Installation and use of DMU s VPN client

Installation og brug af DMUs VPN klient Installation and use of DMU s VPN client Installation og brug af DMUs VPN klient Installation and use of DMU s VPN client Bernhard Fabricius, IT-afdelingen Version 0.1, 2009-05-23 Tilmelding For at få adgang til VPN klienten skal der udfyldes

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Get Instant Access to ebook Udleveret PDF at Our Huge Library UDLEVERET PDF. ==> Download: UDLEVERET PDF

Get Instant Access to ebook Udleveret PDF at Our Huge Library UDLEVERET PDF. ==> Download: UDLEVERET PDF UDLEVERET PDF ==> Download: UDLEVERET PDF UDLEVERET PDF - Are you searching for Udleveret Books? Now, you will be happy that at this time Udleveret PDF is available at our online library. With our complete

Læs mere

Rigtig SQL Programmering

Rigtig SQL Programmering Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter

Læs mere

Projektledelse i praksis

Projektledelse i praksis Projektledelse i praksis - Hvordan skaber man (grundlaget) for gode beslutninger? Martin Malis Business Consulting, NNIT mtmi@nnit.com 20. maj, 2010 Agenda Project Governance Portfolio Management Project

Læs mere

Microsoft Dynamics C5. Nyheder Kreditorbetalinger

Microsoft Dynamics C5. Nyheder Kreditorbetalinger Microsoft Dynamics C5 Nyheder Kreditorbetalinger INDHOLDSFORTEGNELSE Indledning... 3 Uddybning af ændringer... 4 Forbedring vedr. betalings-id er... 4 Ændringer i betalingsmåder (kreditorbetalinger)...

Læs mere

Information Systems ICT. Welcome to. Autumn Meeting Oct 2013, Copenhagen(DK)

Information Systems ICT. Welcome to. Autumn Meeting Oct 2013, Copenhagen(DK) Information Systems ICT Welcome to Autumn Meeting Oct 2013, Copenhagen(DK) Agenda Autumn Meeting 2013 Thursday 24:th of October 10:00 Velkomst. Status fra formanden og gennemgang af program for høstmødet

Læs mere

What s Love Got to Do With It?

What s Love Got to Do With It? What s Love Got to Do With It? Gram Grid Present Continuous Vi sætter verberne i ing-form, når vi vil beskrive at noget er i gang. Der er fire hovedkategorier af ing-form: 1 Den almindelige form (common

Læs mere

Implementering af evidensbaseret viden lederskab som bærende faktor

Implementering af evidensbaseret viden lederskab som bærende faktor Implementering af evidensbaseret viden lederskab som bærende faktor Bianca Albers Familie og Evidens Center Fokus for oplægget Evidens Ledelse Implementering Outcome Evidensbaseret vs. evidensinformeret

Læs mere

PDFmaps på smartphones

PDFmaps på smartphones PDFmaps på smartphones Kort udbyder - en enkel og (gratis) mulighed for at stille orienteringskort til rådighed på iphone/ipad og Android Bruger - en enkel og (gratis) mulighed for at downloade og anvende

Læs mere

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets. Dagens program Har alle fået? Har nogen betalt for meget? Hav jeres koder klar Domæner change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog Hvad er widgets Hvad er

Læs mere

For nogle statuskoder vil der komme en klar tekst besked, mens der for andre vil komme en fire cifret kode, som angivet i afsnit 2

For nogle statuskoder vil der komme en klar tekst besked, mens der for andre vil komme en fire cifret kode, som angivet i afsnit 2 1 Statuskoder i forbindelse med en transaktion I forbindelse med en transaktion, vil Sagem Solo terminalen vise en statuskode/statusbesked i ekspedientterminalens display. Endvidere vil der blive udskrevet

Læs mere

Sunlite pakke 2004 Standard (EC) (SUN SL512EC)

Sunlite pakke 2004 Standard (EC) (SUN SL512EC) Sunlite pakke 2004 Standard (EC) (SUN SL512EC) - Gruppering af chasere igen bag efter. På den måde kan laves cirkelbevægelser og det kan 2,787.00 DKK Side 1 Sunlite pakke 2006 Standard (EC) LAN (SUN SL512EC

Læs mere

Snitfladedokumentation til fagsystemer v 1.1

Snitfladedokumentation til fagsystemer v 1.1 MEMO Produced by: Peter Ravnholt 1. INDLEDNING... 2 SIKKERHED... 2 2. ÆNDRINGSLOG... 3 VERSION 1.1... 3 3. EKSEMPELSCENARIE... 3 UDFYLD ET NYT SPØRGESKEMA... 3 4. SERVICE CONTRACTS... 5 GETQUESTIONNAIREDEFINITIONLIST...

Læs mere

Microsoft Dynamics C5. Nyheder i 2012 Hotfix 001 Version 4.4.00.001

Microsoft Dynamics C5. Nyheder i 2012 Hotfix 001 Version 4.4.00.001 Microsoft Dynamics C5 Nyheder i 2012 Hotfix 001 Version 4.4.00.001 INDHOLDSFORTEGNELSE Anvendelse af aktionslister... 3 Kopiering af aktionslister... 4 Aktionsliste oversigt... 4 XML Udbakke... 5 Microsoft

Læs mere

PDFmaps på smartphones

PDFmaps på smartphones PDFmaps på smartphones Kort udbyder - en enkel og (gratis) mulighed for at stille orienteringskort til rådighed på iphone/ipad og Android Bruger - en enkel og (gratis) mulighed for at downloade og anvende

Læs mere

ET SPØRGSMÅL OM ORDEN - Et system perspektiv - DET INDLYSENDE - Et cognitions perspektiv - ET SPØRGSMÅL OM UDVIKLING - Et forandrings perspektiv -

ET SPØRGSMÅL OM ORDEN - Et system perspektiv - DET INDLYSENDE - Et cognitions perspektiv - ET SPØRGSMÅL OM UDVIKLING - Et forandrings perspektiv - ET SPØRGSMÅL OM ORDEN - Et system perspektiv - DET INDLYSENDE - Et cognitions perspektiv - ET SPØRGSMÅL OM UDVIKLING - Et forandrings perspektiv - DET SOCIALE EKSPERIMENT - Et lærings perspektiv - ET SPØRGSMÅL

Læs mere

Søren Løbner (lobner) ddb Databaser 2007 10 10

Søren Løbner (lobner) ddb Databaser 2007 10 10 ddb Excercise Week 4 Fra relationships til relations Nu når vi har fået vores skemaer på plads, kan SQL udtrykkene til konstruktion af relationerne laves Det foregår ved at vi tager en 1 til 1 oversættelse

Læs mere

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007

RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer

Læs mere

Agenda. Henrik Mejnhardt Nielsen Nordic Product Manager, Microsoft Commercial Actebis Computer

Agenda. Henrik Mejnhardt Nielsen Nordic Product Manager, Microsoft Commercial Actebis Computer Agenda 1. Hvem er distributøren Actebis? 2. Licensing Reseller Handbook 3. Licensoverblik 4. Software Assurance 5. Licenssalg eksempel 6. eopen og MVLS (samt VLSC) 7. Salgsværktøj CLOSER 8. Hvis der bliver

Læs mere

Som mentalt og moralsk problem

Som mentalt og moralsk problem Rasmus Vincentz 'Klimaproblemerne - hvad rager det mig?' Rasmus Vincentz - November 2010 - Som mentalt og moralsk problem Som problem for vores videnskablige verdensbillede Som problem med økonomisk system

Læs mere

Morten Juul Nielsen Produktchef Microsoft Danmark

Morten Juul Nielsen Produktchef Microsoft Danmark Morten Juul Nielsen Produktchef Microsoft Danmark Er du, din organisation og dit datacenter klar til Skyen? Dynamisk Datacenter & Cloud Computing System Center Suiten med fokus på Service Manager Next

Læs mere

PICTURE formater. Klog på SAS 15. marts 2012

PICTURE formater. Klog på SAS 15. marts 2012 PICTURE formater Klog på SAS 15. marts 2012 Agenda Hvad er et format Hvor adskiller et PICTURE format sig Teknik Eksempel 1 cprnr Eksempel 2 cprnr med "udsøgning" af fejlrecords Eksempel 3 et format, der

Læs mere

Nyhedsmail, april 2014 (scroll down for English version)

Nyhedsmail, april 2014 (scroll down for English version) Nyhedsmail, april 2014 (scroll down for English version) Kære Omdeler Forår og påske står for døren, og helligdagene i forbindelse med påsken betyder ændringer i omdelingen. Derudover kan du blandt andet

Læs mere

Øvelser til kurser med Adrie Noy September 2008

Øvelser til kurser med Adrie Noy September 2008 Opvarmning Øvelser til kurser med Adrie Noy September 2008 I alle nedenstående opvarmningsøvelser arbejdes sammen 2 og 2 Begge spillere har en uden bold, 1. Spillerne står over for hinanden med front mod

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Masters Thesis - registration form Kandidatafhandling registreringsformular

Masters Thesis - registration form Kandidatafhandling registreringsformular Masters Thesis - registration form Kandidatafhandling registreringsformular Godkendelse af emne for hovedopgave af vejleder og undervisningskoordinator. Læs venligst retningslinjerne sidst i dette dokument

Læs mere

Database kursus Forår 2013

Database kursus Forår 2013 Database kursus Forår 2013 Jacob Aae Mikkelsen Database design og programmering/databaser fra Organisationsorienteret softwareudvikling 1 Praktisk info Lærebog Database Systems: The Complete Book Skema

Læs mere

JEG GL DER MIG I DENNE TID PDF

JEG GL DER MIG I DENNE TID PDF JEG GL DER MIG I DENNE TID PDF ==> Download: JEG GL DER MIG I DENNE TID PDF JEG GL DER MIG I DENNE TID PDF - Are you searching for Jeg Gl Der Mig I Denne Tid Books? Now, you will be happy that at this

Læs mere

Nyhedsbrev 15 Februar 2008

Nyhedsbrev 15 Februar 2008 Nyhedsbrev 15 Februar 2008 FTU Boghandel Halmstadgade 6, 8200 Århus N Tlf: 86 10 03 38 / Mail:ftu@ats.dk / Inet: www.ftu.dk Hvem er FTU Boghandel? FTU Boghandel er en specialboghandel indenfor teknik,

Læs mere

Mobile Hospitals. A world on wheels

Mobile Hospitals. A world on wheels Mobile Hospitals A world on wheels 01 HMK bilcon presentation history, products, facts 02 Mobile Blood Donation Units 3D film Examples Standard specifications Fully custom made solutions Film preparing

Læs mere

beskrivelser Snitker & Co. Lene Nielsen Snitker & Co. November 2008 www.snitker.com

beskrivelser Snitker & Co. Lene Nielsen Snitker & Co. November 2008 www.snitker.com Hvordan opfatter vi personas beskrivelser Lene Nielsen Snitker & Co. I have always found it difficult to visualize or understand the characters illustrated in the books of P. G. Woodhouse because all are

Læs mere

MENNESKET JESUS KRISTUS PDF

MENNESKET JESUS KRISTUS PDF MENNESKET JESUS KRISTUS PDF ==> Download: MENNESKET JESUS KRISTUS PDF MENNESKET JESUS KRISTUS PDF - Are you searching for Mennesket Jesus Kristus Books? Now, you will be happy that at this time Mennesket

Læs mere

Hosted Exchange. Setup guide for e-mail clients & mobile devices. Date: 2011-09-13. Version: 15. Author: SBJ/ANB. Target Level: Customer

Hosted Exchange. Setup guide for e-mail clients & mobile devices. Date: 2011-09-13. Version: 15. Author: SBJ/ANB. Target Level: Customer Hosted Exchange Setup guide for e-mail clients & mobile devices Date: 2011-09-13 Version: 15 Author: SBJ/ANB Target Level: Customer Target Audience: End User Language: en-us Page 1 of 35 LEGAL INFORMATION

Læs mere

Hvilke typer koder findes der?

Hvilke typer koder findes der? Introduktion Hvilke typer koder findes der? Responsmekanismer og benchmark ifht. sms. Øg din ROI på din medieinvestering Hvad er det der bygger bro efter din kunde har scannet kode Payment / Salg Promotion

Læs mere

Opsætning af MobilePBX med Kalenderdatabase

Opsætning af MobilePBX med Kalenderdatabase Opsætning af MobilePBX med Kalenderdatabase Dette dokument beskriver hvorledes der installeres Symprex Exchange Connector og SQL Server Express for at MobilePBX kan benytte kalenderadadgang via database

Læs mere

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås:

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås: NOTAT 6. juni 2007 J.nr.: 331-3 LEA Bilag A danzig-møde 15.6.2007 Opdatering af DAN-1 og danzig Profile Specification Forslag til opdatering af Z39.50 specifikationerne efter udgivelse af Praksisregler

Læs mere

Webshop integration for DanDomain

Webshop integration for DanDomain Microsoft Development Center Copenhagen, December 2009 Factsheet F Microsoft Dynamics C5 2010 Webshop integration for DanDomain Indholdsfortegnelse Indledning... 3 Eksport af varer til webshoppen... 4

Læs mere

Brugerdreven innovation

Brugerdreven innovation Det innovative potentiale Brugerdreven innovation Hvad er det, brugere kan se? Hvordan optager organisationer brugerviden? Om at skære ud i pap Cases: Fjernvarmeanlæg, rensningsanlæg, indeklima Jacob Buur

Læs mere

Juni/august 2006 Nr 36/37, Årgang 7 ISSN 1600-5147 Pris: kr. 300,00 ex moms www.oracleekspert.dk #36/37 ODTUG-KONFERENCEN 2006 12 ORACLE.

Juni/august 2006 Nr 36/37, Årgang 7 ISSN 1600-5147 Pris: kr. 300,00 ex moms www.oracleekspert.dk #36/37 ODTUG-KONFERENCEN 2006 12 ORACLE. Juni/august 2006 Nr 36/37, Årgang 7 ISSN 1600-5147 Pris: kr. 300,00 ex moms www.oracleekspert.dk L IVE 23 Kursus: Avanceret Systemanalyse 12.-14. september 2006 DesWeb SIG-møde: 13. september 2006 Database

Læs mere

Microsoft Development Center Copenhagen, December 2009. Factsheet. Microsoft Dynamics C5 2010. Web Services

Microsoft Development Center Copenhagen, December 2009. Factsheet. Microsoft Dynamics C5 2010. Web Services Microsoft Development Center Copenhagen, December 2009 Factsheet Microsoft Dynamics C5 2010 Web Services Indhold Indledning... 3 Integration til Krak... 4 Krak på debitor og kreditor... 4 Krak på løn...

Læs mere

LANDSCAPE SPRAWL. Marie Markman, billedkunstner, cand.hort.arch., ph.d.

LANDSCAPE SPRAWL. Marie Markman, billedkunstner, cand.hort.arch., ph.d. LANDSCAPE SPRAWL Marie Markman, billedkunstner, cand.hort.arch., ph.d. LANDSKABSSPREDNING Marie Markman, billedkunstner, cand.hort.arch., ph.d. I Center for Strategisk Byforskning har vi de sidste 10 år

Læs mere

The size of the project.

The size of the project. Apartment type B System integrator - COWI Prices from 3-6 million kr. per The size of the project. Suppl. package kr. 400-1,000,000 Why smart-house? The most user-friendly bus- Delivered by DUPLINE The

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

OPC ACCESS HEARTBEAT 1

OPC ACCESS HEARTBEAT 1 OPC Access Heartbeat Dette dokument gennemgår i et kort eksempel, hvordan OPC Access konfigureres til at anvende Heartbeat funktionen til at dokumentere kontinuerlig forbindelse mellem SQL Server og OPC

Læs mere

TGP 15 H. Betjeningsvejledning. Texas Power Line Pumper 2003 / 2

TGP 15 H. Betjeningsvejledning. Texas Power Line Pumper 2003 / 2 2003 / 2 Betjeningsvejledning Texas Power Line Pumper TGP 15 H Texas Andreas Petersen A/S Knullen 2 DK-5260 Odense S Tlf. 6395 5555 Fax 6395 5558 post@texas.dk - www.texas.dk ADVARSEL - Læs altid betjeningsvejledningen

Læs mere

Lykken er så lunefuld Om måling af lykke og tilfredshed med livet, med fokus på sprogets betydning

Lykken er så lunefuld Om måling af lykke og tilfredshed med livet, med fokus på sprogets betydning Lykken er så lunefuld Om måling af lykke og tilfredshed med livet, med fokus på sprogets betydning Jørgen Goul Andersen (email: goul@ps.au.dk) & Henrik Lolle (email: lolle@dps.aau.dk) Måling af lykke eksploderer!

Læs mere

Nyhedsmail, marts 2014 (scroll down for English version)

Nyhedsmail, marts 2014 (scroll down for English version) Nyhedsmail, marts 2014 (scroll down for English version) Kære Omdeler Forårssolen skinner i Nordjylland og dagene er mærkbart lysere til stor glæde for vores omdelere. Valg til arbejdsmiljøorganisationen,

Læs mere

Microsoft Dynamics C5. Privat hotfix vedr. Timer indberettet i felt 200

Microsoft Dynamics C5. Privat hotfix vedr. Timer indberettet i felt 200 Microsoft Dynamics C5 Privat hotfix vedr. Timer indberettet i felt 200 INDHOLDSFORTEGNELSE En forløbelig afklaring... 3 Tilpasning af lønopsætningen... 3 Rettelser til kommafil... 3 Backup af lønopsætningen...

Læs mere

Idekatalog. Så vidt jeg husker fremgik det ret tydeligt hvad der skulle være i ansøgningen. Der var bare virkelig mange informationer der skulle med.

Idekatalog. Så vidt jeg husker fremgik det ret tydeligt hvad der skulle være i ansøgningen. Der var bare virkelig mange informationer der skulle med. Ansøgning Yderligere bemærkninger til ansøgningen Det var fedt at rammerne var så åbne, som jeg så det var der kun to krav til projektet: Det skulle være open source og det skulle have det offentliges

Læs mere

Ilisimatusarfik HD Dimittender 2011

Ilisimatusarfik HD Dimittender 2011 HD dimittender 2011 Louise Langholz lol@ral.gl Forandringsledelse Fra forståelse til handling en planlagt organisationsforandring En undersøgelse af hvordan Royal Arctic Line A/S gennemfører etablering

Læs mere

Virk.dk. A one-stop-shop for businesses. Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency

Virk.dk. A one-stop-shop for businesses. Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency Virk.dk A one-stop-shop for businesses Peter Bay Kirkegaard, pbk@eogs.dk Special Advisor Danish Commerce and Companies Agency Agenda Background Status Future 16-10-2007 2 Virk.dk 16-10-2007 3 Vision Political

Læs mere

Sociale Medier - kom tættere på kunderne. Eva Fog Bruun Head of Brand Strategy & Market Research 3. april 2014

Sociale Medier - kom tættere på kunderne. Eva Fog Bruun Head of Brand Strategy & Market Research 3. april 2014 Sociale Medier - kom tættere på kunderne Eva Fog Bruun Head of Brand Strategy & Market Research 3. april 2014 I dag Hvorfor engagerer VELUX Gruppen sig i social media? VELUX Social media strategi Social

Læs mere

Vejledning til brugen af bybrandet

Vejledning til brugen af bybrandet Vejledning til brugen af bybrandet Indhold Hvorfor bruge bybrandet? s. 3-4 Inspiration/ big idea s. 5-10 Syv former for bybranding s. 11-18 Brug af logoet s. 19-21 Find desuden flere cases, designelementer

Læs mere

Master Data Management med AX 2012 R3

Master Data Management med AX 2012 R3 INDLÆG 17 : DYNAMICS AX Master Data Management med AX 2012 R3 Karsten Rasch-Adamsen & Thomas Bach Hotel Opus, den 6. November 2014 CGI Group Inc. Karsten Rasch-Adamsen Uddannelse Rolle Certificeringer

Læs mere

Samlevejledning til tremmeseng 70 x 140 Assembly instruction for cot 70 x 140

Samlevejledning til tremmeseng 70 x 140 Assembly instruction for cot 70 x 140 Samlevejledning til tremmeseng 70 x 140 Assembly instruction for cot 70 x 140 Læs vejledningen godt igennem før du begynder. Read the assembly instruction carefully before you start. OLIVER FURNITURE /

Læs mere

Vind Seminar Fredericia 4. april 2013 JOB2SEA

Vind Seminar Fredericia 4. april 2013 JOB2SEA Vind Seminar Fredericia 4. april 2013 JOB2SEA Rekrutteringsstrategi i et svært marked. Helle Drachmann Baggrund Job- & CV database Outplacement & transition management Koncern HR Selvstændig virksomhed

Læs mere

UFM-IT and its administrative systems

UFM-IT and its administrative systems UFM-IT and its administrative systems Vis hjælpelin placering af o 1. Højre klik u Gitter og hjæ 2. Sæt hak ve Vis tegnehjæ 3. Sæt hak ve og Fastgør o 4. Vælg OK ens titel, etc menulinjen, ed / Sidefod

Læs mere

Bestyrelsesmøde / Board meeting

Bestyrelsesmøde / Board meeting Bestyrelsesmøde / Board meeting Ordstyrer / Moderator Referent / Minute taker Bestyrelsesdeltagere / Board participants Fraværende / Absents Observatører / Observers Asger Ida Natasja, Jane, Asger, Sidsel,

Læs mere

Factsheet. Microsoft Dynamics C5 Version 2008. eindkomst

Factsheet. Microsoft Dynamics C5 Version 2008. eindkomst Factsheet Microsoft Dynamics C5 Version 2008 eindkomst Indholdsfortegnelse Indledning... 3 Opsætning inden ibrugtagning... 3 Dan fil til eindkomst... 4 2 FACTSHEET EINDKOMST FOR MICROSOFT DYNAMICS C5 VERSION

Læs mere

BILAG 8.1.F TIL VEDTÆGTER FOR EXHIBIT 8.1.F TO THE ARTICLES OF ASSOCIATION FOR

BILAG 8.1.F TIL VEDTÆGTER FOR EXHIBIT 8.1.F TO THE ARTICLES OF ASSOCIATION FOR BILAG 8.1.F TIL VEDTÆGTER FOR ZEALAND PHARMA A/S EXHIBIT 8.1.F TO THE ARTICLES OF ASSOCIATION FOR ZEALAND PHARMA A/S INDHOLDSFORTEGNELSE/TABLE OF CONTENTS 1 FORMÅL... 3 1 PURPOSE... 3 2 TILDELING AF WARRANTS...

Læs mere

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål

Agenda. Muligheder for anvendelse. Komponenter. Features. Restore muligheder. DR og TSM integration. Repository. Demo. Spørgsmål Agenda Muligheder for anvendelse Komponenter Features Restore muligheder DR og TSM integration Repository Demo Spørgsmål Muligheder for anvendelse Data Center dmsave/lokal TSM Remote Office Application

Læs mere

Automatic Code Orchestration from Descriptive Implementations

Automatic Code Orchestration from Descriptive Implementations ft her Automatic Code Orchestration from Descriptive Implementations older Professor Brian Vinter Niels Bohr Institute KU ft her Automatic Code Orchestration from Descriptive Implementations Prototypin

Læs mere

Nyhedsbrev løn. Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3. Ferie 2014

Nyhedsbrev løn. Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3. Ferie 2014 Microsoft Dynamics C5 2012 Service pack 1 Hotfix 5 & 2010 Service pack 2 Hotfix 3 Ferie 2014 Marts 2014 Contents Overførsel af ferieoplysninger pr. 01/05-2014 3 Overførsel af feriepenge på fratrådte funktionærer

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Overblik Program 17. nov

Overblik Program 17. nov Overblik Program 17. nov Oplæg, diskussion og sketchnoting af artikler Pencils before pixels, Drawing as... og Learning as reflective conversation... Intro til markers Øvelser: Formundersøgelser & idegenerering

Læs mere

Installation af Oracle 10g Release 2 database

Installation af Oracle 10g Release 2 database Installation af Oracle 10g Release 2 database Oracle 10g database indeholder databasesoftware, enterprise manager, SQL*Plus m.m., HTML DB (i dag kendt som Application Express) og tilhørende HTTP Server

Læs mere

Hosted Exchange. Setup guide for e-mail clients & mobile devices. Date: 2014-06-02. Version: 15. Author: SBJ/ANB. Target Level: Customer

Hosted Exchange. Setup guide for e-mail clients & mobile devices. Date: 2014-06-02. Version: 15. Author: SBJ/ANB. Target Level: Customer Hosted Exchange Setup guide for e-mail clients & mobile devices Date: 2014-06-02 Version: 15 Author: SBJ/ANB Target Level: Customer Target Audience: End User Language: en-us Page 1 of 42 LEGAL INFORMATION

Læs mere

Microsoft Dynamics C5 2012 Service pack 2. Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014

Microsoft Dynamics C5 2012 Service pack 2. Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014 Vejledning i forbindelse med ændring af Momsloven pr. 1.7.2014 Microsoft Dynamics C5 2012 Service pack 2 Juni 2014 Indholdsfortegnelse Introduktion 3 Opsætning i C5 3 Som sælger: 3 Som køber: 6 OIOUBL

Læs mere