nlOUG Visie voorjaarseditie mei 2021

Page 1

ViSIE VOORJAAR/ZOMER 2021 - JAARGANG 27 - NUMMER 1

THE INTERNET OF LIVING THINGS

APEX WORLD LIVE OP KNVB CAMPUS

ONTWIKKELINGEN IN EN ROND OCI


Where Business Meets IT

We Love Teamwork TECHNOLOGY GROWTH PARTNER

Managed Services Application Development Business Analytics Consulting Cloud

Tailored Software Solutions?

MEET THE DOC Tel. +31 (0)85 002 1831 E-mail: info@thedoc.nl Weert - Langbroek


INHOUD

VOORWOORD

Geachte lezer,

I

Verder heb ik me voorgenomen om geen aandacht meer te besteden aan COVID-19 omdat ik er, net als waarschijnlijk iedereen, onderhand helemaal klaar mee ben. Na een zo goed als verloren 2020 wil ik weer normaal doen: Events organiseren, conferenties bezoeken en mensen ontmoeten. Met betrekking tot het organiseren van events komt er heel langzaam wat licht aan het einde van de tunnel. Dit stelt ons in staat om APEX World 2021 op te tuigen als een echt ouderwets in-person event. We tillen dit over de zomer heen (eind september, zie elders in dit nummer) zodat de kans dat het ook echt door kan gaan zo groot mogelijk is. Ik kan niet wachten tot het zover is. Conferenties bezoeken mag nog heel even niet, maar ik weet zeker dat dit op korte termijn op een of andere manier weer mogelijk wordt. Tot die tijd moeten we het doen met virtuele meet-ups. Zo zijn er de afgelopen tijd al enkele online events gehouden, en staan er na de zomervakantie ook al weer de nodige interessante meet-ups op de agenda.

Voorzitter Nederlandse Oracle User Group - nlOUG

3

n april ben ik begonnen aan mijn tweede termijn als voorzitter van de nlOUG. Ik zou in dit voorwoord kunnen terugblikken op mijn eerste termijn, maar ik kijk toch echt liever vooruit. Inmiddels zijn mijn doelen voor deze tweede termijn helder: “Het afronden van de professionaliseringsslag die wij als organisatie hebben ingezet, en de verjonging en vernieuwing van ons ledenbestand verder doorvoeren.” Samen met de overige bestuursleden zal ik mij inzetten om deze doelen te verwezenlijken. Ik zal jullie op de hoogte houden van de voortgang.

Luc Bors

|

Zonder precies te weten hoe de rest van het jaar er uit gaat zien, herhaal ik wat ik in mijn vorige voorwoord al zei: “Ik ben ervan overtuigd dat ik jullie op korte termijn weer persoonlijk kan ontmoeten, op een van onze events, op de werkvloer, of gewoon zomaar ergens spontaan in de kroeg.”

The Internet of Living Things in de Oracle Cloud 4 Column Learco Brizzi

9

APEX World 2021

eind september live op KNVB Campus

10

Ontwikkelingen in en rond Oracle Cloud Infrastructure 12 Column Sandor Nieuwenhuijs

15

TOP 10 nieuwe APEX-features 16 APEX en Redaction 18

COLOFON COLOFON REDACTIE Hans Gerritse (hoofdredacteur) Learco Brizzi (Itium BV) Luc Bors (eProseed) Job Oprel, (Qualogy) REDACTIEADRES/ SECRETARIAAT / ADVERTENTIEEXPLOITATIE Nederlandse Oracle User Group Emmaplein 10 1075 AW Amsterdam T +31 30 6997065 E secretariaat@nloug.nl REALISATIE MAT ONTWERP, BNO, Den Haag E maya.timmer@gmail.com ORGANISATIE / NLOUG-SECRETARIAAT/ ADVERTENTIE-EXPLOITATIE BMO B.V., Amsterdam T +31 30 6997070 E info@bmowerkt.nl BESTUUR NLOUG Luc Bors (voorzitter) eProseed E l.bors@nloug.nl Theo Veltman (penningmeester) E t.veltman@nloug.nl Job Oprel (secretaris) Qualogy E j.oprel@nloug.nl Daan Bakboord E d.bakboord@nloug.nl.nlOUG VISIE is een uitgave van de Nederlandse Oracle User Group (nlOUG) en wordt verzonden aan al haar leden en overige abonnees. AANMELDEN voor een abonnement kan via www.nloug.nl. © 2021 nlOUG


4

|

IOLT

DOOR LUC BORS

THE INTERNET OF LIVING THINGS IN DE ORACLE CLOUD

ViSIE


IOLT

Soms komt er een vraag langs waarmee je alle kanten op kunt. Zo kreeg ik laatst deze: “Hoe kan ik IoT inzetten om mijn productieproces te verbeteren en de kwaliteit van mijn product te verhogen?”

|

5

De geproduceerde sensordata moet vervolgens worden geanalyseerd. De uiteindelijk gekozen opzet voor de Proof of Concept bestaat uit de volgende onderdelen: • Data Collectie: Raspberry Pi met Sensoren gekoppeld via een GrovePi Hat • Data Streams: Oracle OCI Streams • Data Analyse: Oracle Streaming Analytics

D

eze vraag was al vaker langsgekomen, maar nog niet in deze context. De vraag had namelijk betrekking op plantaardige productie, de agri-sector. Na hier een tijdje over te hebben nagedacht werd snel duidelijk dat er heel veel parallellen zijn te trekken tussen IoLT, (The Internet of Living Things), en The Internet of Things (IoT) zoals we dat allemaal kennen. Het gaat over het verzamelen van data, het gaat over data stromen, het gaat om analyse van data en het integreren van systemen die de data gebruiken. IoT kan op meerdere delen van het productieproces worden ingezet. Zo kan bijvoorbeeld tijdens de daadwerkelijke productie door het constant monitoren van de omgeving worden geprobeerd om de kwaliteit op lange termijn te voorspellen. Daarnaast kan in de supply chain de kwaliteit in de gaten worden gehouden. Een eventuele schommeling in temperatuur en luchtvochtigheid kan namelijk leiden tot een niet direct zichtbare vermindering van kwaliteit. Tenslotte kan het optimale oogstmoment objectief bepaald worden door het inzetten van IoT. In dit artikel wordt aan de hand van vier kernaspecten - data collectie, data stromen, data analyse en data integratie - beschreven hoe een Proof of Concept (PoC) is geïmplementeerd, met als basis de Oracle Cloud. DE EINDOPLOSSING

Het doel van de Proof of Concept was duidelijk: “Toon aan hoe IoT kan helpen om objectief het optimale oogstmoment te bepalen”. De voor de hand liggende wedervraag is ook vrij duidelijk: “Wat is je optimale oogstmoment, oftewel: hoe bepaal je dat.” De hoogte van gewassen is een van de criteria. Daarnaast spelen omgevingsfactoren ook een rol. Temperatuur, luchtvochtigheid en lichtsterkte hebben namelijk (grote) invloed op de groeisnelheid, en daarmee op het oogstmoment. Dat bepaalt de sensoren die nodig zijn.

De via de sensoren verzamelde data wordt naar een Oracle OCI Stream gestuurd. Deze stroom gaat direct als ‘ruwe data’ door naar Oracle Streaming Analytics. Daar wordt de data geanalyseerd, gefilterd en geaggregeerd. Indien er aanleiding voor is, kan de data worden gebruikt om gekoppelde systemen te informeren, maar dat scenario is in deze PoC niet uitgewerkt. Stap 1: Data Collectie

Voor de collectie van gegevens is zoals gezegd gebruik gemaakt van een Raspberry Pi met daarop een GrovePi Sensor hat. Voor de PoC zijn sensoren gebruikt die de 3 omgevingsfactoren kunnen monitoren: licht, temperatuur en luchtvochtigheid. Daarnaast moet de hoogte van de gewassen kunnen worden gemeten. Daarvoor zijn ultrasone afstand-sensoren gebruikt. Deze worden bijvoorbeeld ook gebruikt in de parkeersensoren in de auto. Voor het uitlezen van alle sensoren zijn simpele Python API’s beschikbaar. De code die is gebruikt voor het uitlezen is in onderstaand voorbeeld weergegeven.

ViSIE


6

|

IOLT

Stap 2: Data Stromen

De Data die wordt geproduceerd door de sensoren wordt naar OCI Streaming service gestuurd. De Oracle Cloud Infrastructure Streaming-service is een schaalbare oplossing voor het opnemen van continue gegevensstromen. OCI streaming kan real-time met grote hoeveelheden data werken. Streaming wordt in deze PoC gebruikt om gegevens uit te wisselen tussen de sensoren en Oracle Streaming Analytics. De OCI Streaming Service heeft een producer nodig, die de streams aanlevert, en een consumer. De consumer leest de streams en verwerkt ze. De consumer is uiteraard de Raspberry Pi. De gegevens die worden geproduceerd door de Pi worden in batch naar een OCI Stream gestuurd. Het aanmaken van de stream op OCI is heel eenvoudig. Gebruik de knop ‘create stream’ geef de stream een naam, vul de overige gegevens in, wijs de stream toe aan een streampool (of maak een nieuwe pool) en ‘that’s it’.

beschikbaar is vanuit Oracle Market Place. De installatie is eenvoudig als je al een OCI account hebt. Na installatie is de console beschikbaar op het publieke IP adres van de OCI instance: https://<public_ip>/osa

EN DAN KOMT ALLES SAMEN

Stap 3: Data Analyse

De data-analyse wordt uitgevoerd in Oracle Stream Analytics. Oracle Stream Analytics (OSA) is een in-memory-technologie voor real-time analyse van streaming (big) data. Ook kunnen mooie dashboards worden gemaakt om de verwerkte datastromen te visualiseren. Daar waar het vaak wordt toegepast voor bijvoorbeeld asset management en pro-actief onderhoud, kan het in de agri-context uitstekend worden gebruikt voor de verbeteren van de teeltomstandigheden door het volgen van gezonde omgevingsparameters en voor het proactief plannen van de oogst. Voor de PoC is gebruik gemaakt van een Oracle GoldenGate Stream Analytics Stack die ViSIE

Nu alle individuele componenten zijn besproken wordt het tijd om de eindjes aan elkaar te knopen. Hoe komt de sensordata in de OCI Stream terecht, en hoe wordt deze vervolgens naar Oracle Streaming Analytics gestuurd? Laten we beginnen bij het begin. De sensordata kan naar OCI Streams worden gestuurd door middel van de OCI Python SDK. De SDK is uitstekend gedocumenteerd: https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/en/latest/installation.html. Daar staat niet alleen hoe je de SDK kan gebruiken, maar ook hoe die geïnstalleerd en geconfigureerd moet worden. Na de installatie moet een configuratiefile worden gemaakt met de verbindingsdetails. Een voorbeeld vind je in onderstaande figuur:

Nu is alles klaar om de gegevens naar de Stream te sturen. Dat gebeurt niet per sensorwaarde, aangezien dat te veel berichten genereerd. Alle sensordata wordt gebundeld in één bericht, met als key de naam van de device waar deze data vandaan komt. Dit is in het volgende code-voorbeeld te zien.


IOLT

|

7

Deze berichten worden in batches van 10 naar OCI streams gestuurd en van daar uit ‘as is’ doorgestuurd naar Streaming Analytics, waar het eenvoudig is om de individuele gegevens uit de stream te lezen. Op OCI streams kan live worden mee gekeken naar de binnenkomende berichten. Op zich heeft dat geen toegevoegde waarde, maar het is een manier om te zien dat de berichten op OCI streams aan komen en dat de Python SDK en bijbehorende code juist werkt.

De laatste stap in de keten is het binnenhalen van de stream in Streaming Analytics en het loslaten van de filtering, de analyses en de aggregaties. Voordat dit werkt moet eerst een connectie worden gemaakt tussen OCI Streams en Streaming Analytics. Dit is vrij eenvoudig in Streaming Analytics: De connectie moet worden opgezet als Kafka-connectie en wijzen naar de Stream waar de data gelezen moet worden.

ViSIE


8

|

IOLT

Het lastigste is de configuratie van Kafka-connectie, maar met de documentatie bij de hand wijst zich dit vanzelf: https://docs.oracle.com/ en/middleware/fusion-middleware/osa/19.1/ using/managing-connections.html#GUID1A038F7C-9F23-4145-ABCF-056F83C8809C Nu de connectie gemaakt is rest alleen nog de het maken van de individuele Streaming Analytics componenten: de Stream, de Pipeline, de Visualisaties en het Dashboard. Een pipeline consumeert een stream en is eigenlijk de basis van de verdere processing. De pipeline zorgt voor het processen van de stream door bijvoorbeeld filtering en aggregatie maar kan ook gebruikt worden voor het toevoegen van data visualisatie. Voor deze PoC is een aantal visualisaties gemaakt en is gebruik gemaakt van geofencing om de grenzen van percelen te detecteren. Ook kan op basis van grenswaarden een signaal worden gestuurd naar externe systemen. Om dit te voor elkaar te krijgen moet een target worden geconfigureerd en vervolgens aan de Pipeline worden toegewezen. Als het externe systeem een REST API beschikbaar heeft dan kan een REST target worden gebruikt. Deze bevat dan de URL van de REST endpoint en uiteraard de json (of csv) payload. Uiteindelijk, als alles aan elkaar is geknoopt en de pipeline gereed is, inclusief de visualisaties, kan alles worden weergegeven op een real-time dashboard, zodat alles inzichtelijk wordt voor de business user, in dit geval ‘de boer’. TENSLOTTE

Voor elke individuele component van de beschreven oplossing kan een artikel van vijf pagina’s worden geschreven. Dit artikel geeft een slechts een beknopte beschrijving van de Proof of Concept. Met deze Poc is aangetoond dat IoT wel degelijk gebruikt kan worden in de agri-sector. De gebruikte Oracle Cloud producten zijn prima voor deze casus. Als de PoC uiteindelijk leidt tot een grootschalige implementatie dan is de oplossing robuust een schaalbaar genoeg. Voor de toekomst zijn uiteraard verbeteringen en uitbreidingen mogelijk. Zo kan met AI en ML bijvoorbeeld vooraf objectief worden bepaald wat het optimale oogstmoment is. Dat is voor nu nog niet aan de orde, maar is zeker iets dat op de achtergrond speelt. n ViSIE

Voor de toekomst zijn uiteraard verbeteringen en uitbreidingen mogelijk. Zo kan met AI en ML bijvoorbeeld vooraf objectief worden bepaald wat het optimale oogstmoment is.


COLUMN

|

9

APEX WORLD 2021

W

e zijn weer een aantal maanden verder sinds mijn vorige column en de pandemie houdt ons op dit moment helaas nog steeds in haar greep. Gelukkig lijkt er door het vaccineren en de andere maatregelen dan

toch eindelijk wat licht aan het eind van de tunnel te zijn, hoewel de recente ontwikkelingen in andere delen van de wereld toch anders doen denken. We hebben de ‘call for papers’ voor APEX World 2021 achter de rug en waren erg tevreden over het aantal ingestuurde presentaties. Ook qua onderwerpen was het erg divers. Wat ook opviel was dat er in deze tijd nog steeds veel internationale belangstelling is voor de conferentie. We hebben in februari de selectie gedaan en de

Learco Brizzi

sprekers ingelicht dat 2 en 3 juni de conferentie zou plaatsvinden. Toch gebeurde daarna weer het onvermijdelijke. Met alles rekening houdende zou de nieuwe datum in juni het ook niet kunnen worden, omdat we per se een fysiek event

Met de komst van versie 21.1 is weer een hoop nieuws in onze favoriete tool gestopt. Wat me erg mooi en handig lijkt is de nieuwe Map Region.

willen organiseren, dat is voor iedereen het prettigst en hoort nu eenmaal bij APEX World. De nieuwe (en hopelijk definitieve) data zijn 29 en 30 september. Ook de locatie in Zeist lijkt ons erg geschikt voor ons event. Uiteraard wachten we de verdere ontwikkelingen af en zijn we afhankelijk van de maateregelen die dan gelden. Komende tijd zijn er ook nog twee andere (virtuele) events die wellicht de moeite waard zijn: APEX Connect 2021 die begin mei is gehouden en ODTUG Kscope21 die in de periode van 22 juni tot 1 juli plaatsvindt. Gelukkig stelt Oracle de nieuwe versies van APEX niet uit. Met de komst van versie 21.1 is weer een hoop nieuws in onze favoriete tool gestopt. Wat me persoonlijk erg mooi en handig lijkt is de nieuwe Map Region, daarnaast zijn er verbeteringen in het Universal Theme, Lazy Loading voor Reports, verbeteringen voor Faceted Search, verbeteringen op Data Loading gebied en een nieuwe Date Picker. Al dit soort nieuwe features maakt het een steeds volwaardiger low code platform. Zie voor een volledig overzicht: https://apex.oracle.com/pls/apex/apex_pm/r/apex211/new-features en het artikel van Menno Hoogendijk elders in dit nummer. Ook op Cloud-gebied zet Oracle voor wat betreft APEX verdere stappen. De nieuwe APEX Cloud Service inclusief ORDS, compleet gemanaged door Oracle, is een zeer laagdrempelige en makkelijke manier om APEX professioneel te gebruiken. De kosten zijn vanaf ongeveer 320 euro per maand. Een nadeel vind ik het feit dat je niet direct de database met SQL*Net kan benaderen, zodat je niet met je eigen tools, zoals SQL Developer Web, Toad, etc. aan de gang kan. Je kan natuurlijk altijd overstappen naar de full blown Oracle Autonomous Transaction Processing Cloud Service, maar die is 3x duurder. Tenslotte heeft Oracle deze APEX Cloud Service toegevoegd aan de Always Free Services lijn. Voor meer informatie (en de beperkingen) zie: https://bit. ly/2SXVib7 Een andere interessante ontwikkeling is de Oracle Database Multilingual Engine (MLE), waarmee je in de database (dus serverside) naast PL/SQL ook andere talen kan gaan gebruiken, op dit moment JavaScript. De vele JavaScript libraries die beschikbaar zijn zou je dan in APEX kunnen gebruiken. Zie voor meer informatie: https://bit.ly/3eYZPmc. Toch nog een hoop informatie voor een column. Tot in Zeist! Learco Brizzi

ViSIE


10

|

APEX WORLD 2021

DOOR HANS GERRITSE

APEX WORLD 2021 EIND SEPTEMBER LIVE OP KNVB CAMPUS IN ZEIST De elfde editie van APEX World kon vorig jaar helaas niet doorgaan vanwege de coronacrisis. Ook de geplande herkansing eerder dit jaar moest om dezelfde reden worden uitgesteld. Maar eind september krijgt ’s-werelds grootste APEX-only evenement definitief een passend vervolg, dus als tweedaags live event met een uitgebreid en gevarieerd programma en een keur van gerenommeerde (inter)nationale sprekers. APEX World 2021 gaat door in een nieuwe opzet en op een nieuwe locatie, maar inhoudelijk minstens even sterk en onderscheidend als de voorgaande tien edities.

A

PEX World 2021 wordt op 28 en 29 september a.s. gehouden op de KNVB Campus in Zeist. Thema dit jaar is ‘Autonomous APEX World’. Naast de keynotes, verzorgd door Oracle sprekers, en een breed scala van parallelsessies tijdens beide dagen staan tijdens APEX World ook dit jaar weer Customer Cases, Student Tracks en een OpenMic-sessie op de agenda. Internationale sprekers tijdens APEX World 2021 zijn onder meer: Chris Saxon, Karen Cannell en Francis Mignault. Ook gerenommeerde Nederlandse en Belgische sprekers als Roel Hartman, Dimitri Gielis en Alex Nuijten hebben inmiddels hun medewerking toegezegd. Gedurende beide dagen presenteren de sponsoren zich met een stand op de KNVB Campus. Oracle-partners die een bijdrage willen leveren aan dit unieke evenement: er is nog ruimte voor enkele sponsoren. De eerste dag van APEX World wordt traditioneel afgesloten met een uitgebreid dinerbuffet met volop gelegenheid om te netwerken. Inschrijven voor APEX World 2021 is vanaf medio juni mogelijk via www.nloug.nl. Op het terrein van de KNVB Campus is gratis parkeergelegenheid. Overnachtingsmogelijkheden zijn er in het naastgelegen Hotel Woudschoten (tegen speciaal APEX World-tarief). Alternatieven zijn ViSIE

Hotel Woudschoten

Hotel Oud London (gelegen aan dezelfde weg op 1 km), Hotel Kasteel Kerckebosch en Hotel Figi in Zeist. Liefhebbers van kamperen kunnen terecht op Camping De Krakeling schuin tegenover Oud London. Meer informatie op de website van de nlOUG: www.nloug.nl. n


APEX WORLD 2021

|

11

APEX World wordt mede mogelijk gemaakt door onze sponsoren: Diamond Smart4Solutions Gold Silver

Qualogy, The Doc, Conspect ICT, iAdvise Transfer Solutions, United Codes

Bronze

FOEX GmbH, Oritech

ViSIE


12

|

CLOUD-ONTWIKKELINGEN

DOOR JOB OPREL

ONTWIKKELINGEN IN EN ROND ORACLE CLOUD INFRASTRUCTURE Velen van ons worden overspoeld met informatie van Oracle en Oracle partners over wat er allemaal nieuw is in de Oracle cloud. En da’s mooi, want dat betekent dat er groei en leven in zit. Maar heel veel informatie wordt niet gelezen, simpelweg omdat er te veel gebeurt. Hieronder een kleine selectie van een aantal opvallende en minder opvallende ontwikkelingen de afgelopen maanden die direct en soms ook indirect met de cloud te maken hebben.

ViSIE


CLOUD-ONTWIKKELINGEN

E

ind maart 2021 introduceerde Oracle een nieuwe dienst: Oracle Cloud Lift Services. Wellicht een heel subtiele verwijzing naar de klant Lyft, de concurrent van Uber, maar dat is misschien iets te ver gezocht. Het betreft een gratis hulp van Oracle bij migratie naar de cloud. Techzine heeft dit op deze manier aangekondigd. Veel ontwikkelingen in de cloud, maar soms minder goede berichten aan de on-premises-kant. Per 31 augustus 2020 kunnen alleen nog maar ‘term-licenses’ van 1 jaar afgesloten worden voor de key-products, zoals de database. En geen termijnen meer van 2 -5 jaar, waardoor de druk om een migratie binnen een jaar af te ronden groter is geworden. Het statement is te lezen in een blog van licensefortress. Beheer, en daarmee de beschikbaarheid, wordt steeds verder uitgebouwd. Een mooi voorbeeld is natuurlijk de vorig jaar geintroduceerde Autonomous DataGuard – met nu meer aandacht voor troubleshooting. Maar eind vorig jaar zag bijvoorbeeld het OCI Observability and Management Platform het licht (met de centralized logging services ), evenals Cloud Advisor en kunnen er Sms-berichten ontvangen worden, nog wel beperkt tot enkele services. De verwachting is dat dit laatste binnenkort wordt uitgebouwd.

|

13

- uitgekomen en er lijkt meer gewicht aan gegeven te worden. Veel nieuwe features gerelateerd aan de Cloud, die geleidelijk, in maandelijkse RU’s worden uitgebracht in 13.5. BI Publisher is geen onderdeel meer van OEM. Dit wordt een aparte installatie, onderdeel van Oracle Analytics Server (OAS). En niet te vergeten: OCI GoldenGate (21c) is gelanceerd, gebaseerd op een micro-services architectuur. Te integreren met CI/CD pipelines, on-premises Docker en Kubernetes. Voor developers – en daar doen we ze fors tekort mee, excuus – een nieuwe APEX service, en een nieuw vormgegeven developer pagina. Voor de infrastructuur liefhebbers: Private DNS (gebruik van de eigen DNS domain namen), Netwerk Visualizer (hoe zit het netwerk in elkaar, ideaal voor o.a. troubleshooten). het schedulen van het stoppen en starten van instances c.q. automatisch schalen, nieuwe E4 shapes, gebaseerd op de derde genaratie AMD EPYC processor. En – gelukkig – nog veel meer, maar dan zou deze rubriek een aantal pagina’s beslaan. Meer OCI-ontwikkelingen dus in het volgende nummer van nlOUG Visie. n

Tevens is ter verhoging van de beschikbaarheid de Cross-region Block Storage Volume Replication ontwikkeld – de naam zegt eigenlijk genoeg - maar deze kan natuurlijk ook gebruikt worden voor migraties tussen Regio’s. Een beetje tersluiks wordt er weer een poging gedaan om de iPhone app weer nieuw leven in te blazen. De app is te downloaden en heet simpelweg ‘Oracle Cloud Infrastructure’, maar wanneer gedownload dan staat er ‘OCI Mobile’ bij het icoontje. De versie-geschiedenis geeft in ieder geval aan dat Oracle er nu weer aandacht voor heeft. Maar wordt Oracle Enterprise Manager (OEM) niet vergeten dan? Inmiddels is versie 13.5 – de terminal release van 13 ViSIE


Leuk maakt alles beter!


COLUMN

|

15

SOFTWARE ASSET MANAGEMENT (SAM) IN EEN CLOUDWERELD

R

uim een jaar geleden schreef ik mijn column voor de nlOUG, een dag na de televisietoespraak van premier Rutte waarin de eerste fase van de lockdown werd aangekondigd. Niemand had kunnen weten hoe lang deze zou duren. Gelukkig

heeft de IT-industrie bewezen dat onze infrastructuur het massaal thuiswerken aankon en moesten de meesten – zij het schoorvoetend - toegeven dat clouddiensten, zoals Zoom, in veel gevallen een acceptabel alternatief voor menselijke interactie kunnen zijn.

Sandor Nieuwenhuijs

Maar hoe staat het nu met de brede acceptatie van clouddiensten voor de kernapplicaties van organisaties? Zonder dit wetenschappelijk of statistisch te onderbouwen, zie ik drie fasen waarin een organisatie zich op dit gebied kan bevinden: 1) nog niet in de cloud, 2) in transitie naar de cloud of 3) helemaal in de cloud. Volgens mijn persoonlijke

De hamvraag is: wordt dit eenvoudiger of complexer met de opkomst van cloud.

inschatting bevindt zich meer dan 80% van de organisaties in fases 1 of 2, waarbij ook een zeer groot deel meerdere, verschillende cloudleveranciers in meer of mindere mate gebruiken. Kortom, we kunnen wel spreken van grotendeels een mengelmoes van on-premise, gecombineerd met meerdere cloudoplossingen - echt hybride dus. Met de opkomst van cloudconcepten werd veel gespeculeerd over het verdwijnen van software licenties, immers in een puur ‘pay-as-you-go’ model zijn de kosten voor het software-gebruiksrecht en de ondersteuning een integraal onderdeel van de abonnementskosten. Met als grote voordelen dat deze kosten met de benodigde capaciteit mee groeien en afnemen, plus, zeker niet onbelangrijk, een gegarandeerde compliance. Hoe prijzenswaardig deze voordelen ook zijn, deze gelden voornamelijk in de voornoemde heilige graal, fase 3 (helemaal in de cloud). Een fase waarin slechts een klein deel van de organisaties zich bevindt. Dus: softwarelicenties blijven nog even bij ons en daarmee ook de noodzaak van SAM (Software Asset Management). Software Asset Management is een heel brede en veelomvattende taak, als onderdeel van het bredere werkgebied IT Asset Management (ITAM). De hamvraag is: wordt dit eenvoudiger of complexer met de opkomst van cloud, zolang we nog voor het overgrote deel uit moeten gaan van een hybride omgeving middenin een transitie? Mijn stellige overtuiging is dat het complexer wordt en daardoor tegelijkertijd belangrijker. Immers, groeiende complexiteit maakt het moeilijker om het juiste overzicht te behouden en het risico op en impact van fouten of omissies wordt groter. En het feit dat de organisaties op dit gebied in een transitie zijn, maakt het niet eenvoudiger. Waar zit dan die specifieke complexiteit? Natuurlijk ontstaan er meer omgevingen waar software kan draaien. Maar denk ook eens aan nieuwe manieren van het meten van gebruik (OCPU’s, vCPU’s en dergelijke), kort cyclische veranderingen (een nieuwe omgeving draait en kan weer verdwijnen in minuten in plaats van weken of maanden), potentiële wildgroei door selfservice-mogelijkheden maar ook de subtiele verschillen tussen de

Sandor Nieuwenhuis

verschillende cloudomgevingen.

is licentie-adviseur

Samenvattend duurt het nog even voordat we met z’n allen volledig in de cloud zitten,

binnen het SIA (Software

en in de tussentijd wordt het werk van de Software Asset Manager alleen maar belangri-

Investment Advisory)-

jker. Gelukkig zijn er inmiddels diverse hulpmiddelen op de markt die hierbij kunnen hel-

team van Oracle

pen, maar ik roep organisaties wel op om zelf het besef en de verantwoordelijk hiervoor

wereldwijd.

in eigen handen te houden!

ViSIE


16

|

APEX-FEATURES

DOOR MENNO HOOGENDIJK

TOP 10 NIEUWE APEX-FEATURES Oracle APEX is hard gegroeid, zowel in features, nieuwe teamleden als wereldwijde interesse. In de afgelopen twaalf maanden is er veel bijgekomen en zijn verbeteringen aangebracht aan bestaande componenten. Menno Hoogendijk, lid van het Oracle APEX Development Team heeft daarom voor nlOUG Visie een persoonlijke top 10 van nieuwe APEX features samengesteld.

8. N IEUWE CODE EDITOR IN APPLICATION

10. UNIVERSAL THEME 21.1

Stel je voert een upgrade naar 21.1 uit en je ververst het Universal Theme. De kans is dan groot dat jouw applicatie er precies hetzelfde uitziet. Toch is er achter de schermen enorm veel veranderd. We hebben afscheid genomen van Internet Explorer 11,waardoor we moderne HTML en CSS-features kunnen gebruiken. Het Universal Theme gebruikt nu vele CSS-variabelen, waarmee je heel eenvoudig de look & feel van de applicatie kunt veranderen. En dan hoef je niet eens een CSS-goeroe te zijn! Om APEX beter aan te laten sluiten bij de nieuwe Redwood huisstijl van Oracle kan binnen het Universal Theme gekozen voor de Redwood stijl. Deze stijl zorgt voor een aantal extra opties zodra de Theme Roller wordt geopend. 9. MARKDOWN ONDERSTEUNING

Markdown is een lichtgewicht opmaaktaal op basis van tekst die gemakkelijk omgezet kan worden naar HTML. Binnen APEX kun je het op twee manieren gebruiken. Ten eerste kan je in de vernieuwde Rich Text Editor kiezen of de opmaak intern wordt opgeslagen als HTML of Markdown. Markdown heeft als voordeel dat de kans op Cross-Site Scripting (XSS)-aanvallen kleiner wordt. Ten tweede kan in report regions een kolom die Markdown bevat worden weergeven als HTML.

BUILDER

Menno Hoogendijk

Hier word ik nog steeds dagelijks vrolijk van. De gebruiksvriendelijkheid van een moderne tekst-editor, VS Studio Code, in de browser. Je kunt onder meer eenvoudig tekst laten inspringen, schakelen tussen grote en kleine letters, suggesties weergeven, code valideren en het thema wisselen. Er zijn veel meer opties beschikbaar via de werkbalk en het opdrachtpalet, die je kunt openen via de F1 toets. (zie afbeelding 1) 7. EXPORT NAAR EXCEL

In veel applicaties wordt een Classic Report, Interactive Report of Interactive Grid voornamelijk als CSV gedownload. Mijn suggestie is om standaard voor Excel te kiezen. Excel heeft veel voordelen, zoals het behoud van data typen, control breaks, highlights en totalen. Daarnaast krijg je automatische kolombreedte en filtering. 6. VERBETERDE DATA LOADING

Je kunt nu zowel als ontwikkelaar als eindgebruiker data uploaden naar een tabel. Maak een keuze tussen Excel, CSV, XML of JSON. Wanneer je een Data Loading proces in je applicatie wil gebruiken moet je eerst een Data Loading Definition aanmaken. Daarbij geef je een voorbeeld van het bestand op en in welke tabel dit opgeslagen moet worden. Je kunt kiezen voor het toevoegen, samenvoegen of vervangen van de data in de tabel. Vervolgens vraagt APEX of je de


APEX-FEATURES

bijbehorende pagina ook wilt maken. De wizard wordt gestart en gebruikers kunnen nu zonder ook maar één regel code hun data laden.

|

17

in combinatie met een kalender, de nieuwe map region en de cards region. 3. MAP REGION

5. AUTOMATIONS

Automations kun je het beste zien als een grafische schil rond Scheduled Jobs. Het is bedoeld om taken uit te voeren op geplande tijden. Denk aan een maandelijks overzicht van alle nieuwe medewerkers, verzonden per e-mail. Automations is op een aantal manieren te gebruiken: • Als standaard Scheduled Job • Je geeft een query op waardoor een actie zal voor elke gevonden rij uitgevoerd wordt • Je roept de Automation handmatig aan vanuit PL/SQL Voor een volgende release willen we Automations uitbreiden door ze declaratief aan te roepen vanuit pagina’s. Eventueel met input parameters waardoor ze herbruikbaar worden. Tenslotte zou de ene Automation de ander moeten kunnen starten.

APEX heeft nu eindelijk een map region waarbij je data op een geografische kaart kunt tonen. Je kunt één of meerdere databronnen gebruiken als datalagen. Zo kun je bijvoorbeeld medewerkers en kantoren tonen, elk met een eigen icoontjes voor de points. Overigens kun je naast points ook kiezen voor lines, polygons of een heat map. De geografische gegevens kunnen zowel bestaan uit een SDO_GEOMETRY-kolom als latitude- en longitude-kolommen. Het mooie is dat er geen licentie nodig is om deze map region te gebruiken. Binnenkort verschijnt er een voorbeeld-applicatie die je kunt downloaden om alle features te ontdekken. (zie afbeelding 2) 2. JAVASCRIPT IN DE DATABASE

Dit opent vele nieuwe deuren: JavaScript als programmeertaal in de Oracle Database. Het JavaScript ecosysteem is gigantisch groot en voor

4. FACETED SEARCH FEATURES

Faceted Search is toegevoegd in APEX 19.2 en bestaat dus al wat langer. Het is dezelfde manier van zoeken die je in vele webwinkels kunt gebruiken. Dit jaar zijn er enkele belangrijke toevoegingen. Zo kun je de filters conditioneel maken. Een goed voorbeeld is dat je alleen op een kledingmaat kunt zoeken wanneer de categorie Mode is. Daarnaast kun je minder belangrijke filters standaard verbergen. En ook nieuw is dat Faceted Search nu ook gebruikt kan worden

EEN GOED VOORBEELD IS DAT JE ALLEEN OP EEN KLEDINGMAAT KUNT ZOEKEN WANNEER DE CATEGORIE MODE IS ViSIE


18

|

APEX-FEATURES

HET MOOIE IS DAT ER GEEN LICENTIE NODIG IS OM DEZE MAP REGION TE GEBRUIKEN. elke taak die misschien wat lastig is met PL/SQL bestaat vast wel een JavaScript module. Denk aan het maken van QR-codes, het parsen van allerlei bestandsformaten en nog veel meer. APEX is er klaar voor! In je applicatie kn je op veel plaatsen kiezen voor het uitvoeren van server-side code. Naast PL/SQL kun je nu voor JavaScript kiezen. Dit alles wordt mogelijk gemaakt door de Multilingual Engine (MLE) in de 21c database. 1. CARDS REGION

Mijn persoonlijke absolute topper van het afgelopen jaar: de Cards Region. Data uit een tabel hoeft niet altijd in een tabelstructuur getoond te worden. Cards zijn een prachtig alternatief. Je kunt hiermee veel informatie in kleine ruimtes geordend weergeven. Elk record is een unieke card. In een handomdraai kun je de mooiste ontwerpen maken. Elke card kan onder andere een titel, icoon, afbeelding en omschrijving hebben. Je kunt acties toevoegen aan een card waar gebruikers op kunnen klikken. Zoals met ontzettend veel componenten in APEX, erg simpel om toe te voegen aan een pagina. Ik hoop dat iedereen net zo geniet van deze features als ik. Inmiddels zijn we volop aan de slag met de volgende release. Hou daarom altijd onze roadmap in de gaten. Happy APEXing! n


APEX EN REDACTION

DOOR ALEX NUIJTEN

|

19

APEX EN REDACTION DEEL 1

Gevoelige informatie wil je niet altijd tonen. Denk bijvoorbeeld aan creditcardgegevens, bankrekeningnummers of een geboortedatum. Nu kan je er natuurlijk voor kiezen om deze gegevens gewoon helemaal niet te tonen, maar dat is niet altijd even praktisch. Soms wil je wel een deel van de data laten zien, zodat je nog enige informatie kan zien. ‘Klopt het dat uw creditcardnummer eindigt op 5246?’

H

et geheel of gedeeltelijk verbergen van gegevens wordt in goed Engels Redaction genoemd (is er ook een goede Nederlandse term voor?). Sitenote: Sta niet zomaar een kopie van je paspoort of rijbewijs af. Is het toch nodig om een kopie te delen, maak dan gebruik van de app KopieID. Met deze app van de Overheid kan je gemakkelijk je BSN afdekken en extra informatie erbij zetten waarvoor de kopie gebruikt gaat worden. Je kunt je voorstellen dat het afdekken van data in de front-end applicatie niet optimaal is, want waarschijnlijk is het niet alleen die ene front-end applicatie die deze data gebruikt. Het is goed mogelijk dat de data aan verscheidene applicaties wordt aangeboden, of wellicht dat er een REST Service is die deze data verspreidt. Een betere oplossing is om de Redaction zo dicht mogelijk bij de data te laten plaatsvinden. Het DBMS_REDACT package maakt het mogelijk dit te doen.

In grote lijnen werkt het als volgt: het data object (tabel of view) wordt beschermd door een policy-functie. Deze policy wordt altijd toegepast wanneer je het data object gebruikt. Dit komt overeen met hoe Virtual Private Database werkt. Ook hier maak je gebruik van een policy-functie die aan een data-object wordt gekoppeld en die altijd wordt toegepast. Het toepassen van deze policy-functie gebeurt volledig transparant voor de gebruiker. Laten we maar aan de hand van een voorbeeld gaan kijken hoe het werkt. Het voorbeeld is een aangepaste vorm van de EMP tabel; ik heb er een creditcard-column aan toegevoegd. Het doel is om deze creditcard-gegevens (deels) te verbergen. Met DBMS_REDACT.ADD_POLICY voeg ik een policy aan de EMP tabel toe. ViSIE


20

|

APEX EN REDACTION

begin dbms_redact.add_policy (object_schema

=> ‘ALEX’

,object_name

=> ‘EMP’

,policy_name

=> ‘Hide Creditcard’

,expression

=> ‘1=1’

,column_name

=> ‘CREDIT_CARD’

,function_type

=> dbms_redact.regexp

,regexp_pattern => dbms_redact.re_pattern_any_digit ,regexp_replace_string => ‘X’ ); end;

In bovenstaande code wordt de relatie tussen het data object (EMP), op welke kolom de Redaction moet worden toegepast (CREDIT_CARD), wat de conditie is om de Redaction toe te passen (1=1) en hoe de Redaction er dan uit moet zien (function_type, regexp_pattern en regexp_replace_string) gedefinieerd. Met bovenstaande policy wordt elk nummer in de CREDIT_CARD kolom vervangen door een ‘X’. Het zal dan ook geen verbazing wekken dat als je de volgende query uitvoert, de CREDIT_CARD kolom alleen maar ‘X’laat zien voor elk nummer dat er normaliter staat. ENAME

HIREDATE

CREDIT_CARD

---------- --------- ---------------SMITH

17-DEC-80 XXXXXXXXXXXXXXXX

ALLEN

20-FEB-81 XXXXXXXXXXXXXXXX

WARD

22-FEB-81 XXXXXXXXXXXXXXXX

JONES

02-APR-81 XXXXXXXXXXXXXXXX

MARTIN

28-SEP-81 XXXXXXXXXXXXXXXX

BLAKE

01-MAY-81 XXXXXXXXXXXXXXXX

CLARK

09-JUN-81 XXXXXXXXXXXXXXX

SCOTT

19-APR-87 XXXXXXXXXXXXXX

Het resultaat van de query wordt ‘redacted’, en dat is een essentieel punt. Pas bij het retourneren van de data wordt de redaction toegepast. Nu je dit weet: wat kun je dan zeggen over de credit card gegevens uit de volgende query?

ViSIE


APEX EN REDACTION

|

21

select ename ,hiredate ,credit_card from emp where substr (credit_card, 1, 1) = 4; ENAME

HIREDATE

CREDIT_CARD

---------- --------- ---------------SMITH

17-DEC-80 XXXXXXXXXXXXXXXX

ALLEN

20-FEB-81 XXXXXXXXXXXXXXXX

WARD

22-FEB-81 XXXXXXXXXXXXXXXX

Ook al kun je het creditcardnummer niet lezen, het eerste cijfer moet een vier zijn. Dat volgt uit de WHERE clause in de query. Dit is een belangrijk gegeven om te onthouden, ongeacht met welke technologie je de front-end applicatie gaat maken.

REDACTION IN EEN APEX-APPLICATIE Hoe kun je Redaction toepassen in een APEX applicatie? De functionaliteit die we gaan toepassen is: ‘Alleen medewerkers van Accounting mogen creditcard-gegevens zien en/of wijzigen’. Laten we beginnen met het lezen van de Credit Card gegevens, hoe om te gaan met het wijzigen van data later wel. Er is een aantal stappen die we moeten uitvoeren om deze regel toe te passen. De eerste is om er achter te komen op welke afdeling de medewerker werkt die is ingelogd. In de APEX$SESSION context staat de APP_USER, de gebruiker van de APEX applicatie, dus met een eenvoudige query kunnen we de afdeling achterhalen: select e.deptno ,d.dname into l_deptno ,l_deptname from emp e join dept d on d.deptno = e.deptno where e.ename = sys_context (‘apex$session’, ‘app_user’);

Deze gegevens halen we uit Post-Authentication op en plaatsen het resultaat in Application Items middels het APEX_UTIL package. apex_util.set_session_state (p_name

=> ‘AI_DEPTNO’

,p_value => l_deptno );

Aangezien de afdeling waarop iemand werkt niet vaak wijzigt is het voldoende om deze eenmalig op te halen. Helaas kunnen we niet de session state van ITEMS uitlezen met de APEX$SESSION context, dus daar hebben we een eigen context voor nodig. Met het volgende statement kun je deze aanmaken. create or replace context demo_redact_ctx using auth_pkg;

De context heeft de naam ‘demo_redact_ctx’en middels de package ‘auth_pkg’ kan je hier waarden in plaatsen. Om waarden in een context te manipuleren heb je altijd een stored procedure nodig en dan heeft een Package natuurlijk de voorkeur. De procedures die in het ‘auth_pkg’package staan om waarden in de context te plaatsen (en weer op te schonen) zien er als volgt uit:

ViSIE


22

|

APEX EN REDACTION

procedure set_deptno (p_deptno in dept.deptno%type) is begin sys.dbms_session.set_context (namespace => ‘demo_redact_ctx’ ,attribute => ‘deptno’ ,value

=> p_deptno

); end set_deptno; procedure clear_deptno is begin sys.dbms_session.clear_context (namespace => ‘demo_redact_ctx’ ,attribute => ‘deptno’ ); end clear_deptno;

Om vanuit de APEX-applicatie het afdelingsnummer te communiceren naar de database geef je in de applicatie onder Shared Components > Security Attributes > Database Session bij ‘Initialization PL/ SQL Code’ een aanroep naar het database package die waarden in de context plaatst. auth_pkg.set_deptno (p_deptno => to_number (:AI_DEPTNO);

Bij ‘Cleanup PL/SQL Code’zet je: auth_pkg.clear_deptno;

Nu is de setup aan de APEX-kant compleet: een gebruiker logt in; na de authenticatie en autorisatie volgt het bepalen van de afdeling waarop de gebruiker werkt - dit wordt in een Application Item gezet voor later gebruik. Bij elke database connectie wordt de inhoud van het Application Item in de DEMO_REDACT_CTX context gezet. Met de waarden die in de context staan kun je conditioneel de Redaction gaan toepassen. Dit doe je met de volgende code: begin sys.dbms_redact.add_policy (object_schema

=> ‘demo’

,object_name

=> ‘CUSTOMERS’

,policy_name

=> ‘Hide Creditcard’

,expression

=> ‘sys_context(‘’demo_redact_ctx’‘, ‘’deptno’’) != 10’

,column_name

=> ‘CREDIT_CARD’

,function_type

=> dbms_redact.regexp

,regexp_pattern

=> dbms_redact.re_pattern_cc_l6_t4

,regexp_replace_string

=> dbms_redact.re_redact_cc_middle_digits

,regexp_position

=> dbms_redact.re_beginning

,regexp_occurrence

=> dbms_redact.re_first

); end;

De expression is waar het in de bovenstaande code om draait; de Redaction wordt toegepast voor iedereen waar er in de DEMO_REDACT_CTX context bij de Key ‘deptno’niet de waarde 10 staat. Afdeling 10 is de Accounting. In dit voorbeeld staat ook een andere manier van Redacten; in plaats van alle cijfers door een ‘X’te

ViSIE


APEX EN REDACTION

|

23

vervangen, wordt het middelste deel van het Credit Card nummer afgeschermd. Door gebruik te maken van de ingebouwde constanten uit het DBMS_REDACT package hoef je niet alles zelf te verzinnen. Als je alle stappen goed hebt toegepast dan ziet het rapport op de EMP tabel voor Miller (die op afdeling 10 - Accounting werkt) er anders uit dan voor Jones (die op 20 - Research werkt). Zie de schermafbeeldingen voor het resultaat.

KIJK UIT VOOR HET FILTER! Alles koek en ei, zou je zeggen… maar dat is niet het geval. Zoals eerder beschreven wordt de Redaction pas toegepast op het resultaat van de query en dat geldt natuurlijk ook voor APEX. Wat gebeurt er als je een filter toepast op de Credit Card kolom? Het toepassen van een Filter in het rapport voegt een WHERE clause toe op de query waarop het rapport is gemaakt. Deze zal dus worden toegepast voordat de Redaction plaats vindt. Met een beetje volharding kun je de Credit Card gegevens achterhalen. Zo kun je nog steeds niet het Credit Card nummer in de betreffende kolom lezen, maar je kunt het wel in de Filter zien en dat kan natuurlijk nooit de bedoeling zijn. In de schermafbeelding kun je zien dat de Credit Card kolom nog steeds Redacted is, maar dat het filter (aan de bovenzijde van het rapport) het Credit Card nummer laat zien. Hoe kun je dit voorkomen? Heel eenvoudig: Zet de mogelijkheid om te filteren op deze kolom uit. Nu is het lezen van de Credit Card wel Redacted, en is het ook niet stiekem via het Filter te achterhalen, maar hoe ga je nu om met Insert, Update en Delete? In Deel 2 van dit artikel gaan we hier verder op in. n

ViSIE


MEET THE ORACLE MASTERS THE ONLINE SERIES 24

|

RUBRIEK

Qualogy deelt kennis Qualogy organiseert deze lente een nieuwe reeks Meet The Oracle Masters. Met elke woensdag een live webinar van Oracle-experts. De presentaties zijn via Zoom te volgen en starten om 16.00 uur. De kennissessies zijn gratis en bieden een unieke kans om te leren van thought leaders uit de verschillende kennisgebieden. Programma * 12 mei * 19 mei * 26 mei 9 juni 16 juni

Menno Hoogendijk Jeff Smith Jeff Smith Jim Czuprynski Job Oprel

My top 10 new features of APEX Working with JSON in the Database Building REST APIs for Oracle Database JSON, a splash of SODA, and a SQL chaser: real-world use cases for Autonomous JSON Database (AJD) Critical success factors for migration of your Oracle environment to the cloud

*Bekijk de opnames van de webinars op www.qualogy.com/opnames Meer informatie? Bekijk het programma, lees de abstracts en schrijf u gratis in voor de presentaties via www.qualogy.com/oracle-masters

W W W.Q UA LO GY.CO M / O R AC L E - M AST E R S