Export static workspace files in APEX5

In APEX 5 the functionality for the workspace- and application files is improved tremendously. The most important changes are:1. It is possible to upload zip files which will be extracted in the database.2. The files can be organized within directories. With this new functionality it is a lot easier to push your static files from development … Verder lezen…

Download Interactive Report in de achtergrond

Bij de klant waar ik momenteel werk wil men de data van meerdere Apex interactive reports (IR) downloaden. Een IR heeft hiervoor een standaard functionaliteit, die over het algemeen prima toereikend is. In dit geval betreft het echter rapporten met soms wel honderdduizenden regels. Mijn eerste reactie hierop was dat dit soort rapportages in een … Verder lezen…

SQL monitor and timestamp bind data

Recently I was investigating on performance issues with a java application. Due to object relational mapping this application generated a lot of varying sql statements which often had plan issues.
I wanted to replay some of these statements with variatons to find a generic solution to this.
The SQL monitor reports however had a lot of bind variables of the timestamp type. In the reports these were represented in a value like this: 7874051A0B1F01
At first I just guessed the values but at some time I really needed to know if they were querying a week or a year of data.

I decided to reverse engineer the format with a testscript which generated SQL monitor reports using a range of timestamps. From the reports I digested the format and made a SQL query to translate them:

select to_timestamp
 (  to_char (to_number (substr (:input, 1, 2), 'xx') - 100, 'fm00')
 || to_char (to_number (substr (:input, 3, 2), 'xx') - 100, 'fm00')
 || to_char (to_number (substr (:input, 5, 2), 'xx'), 'fm00')
 || to_char (to_number (substr (:input, 7, 2), 'xx'), 'fm00')
 || to_char (to_number (substr (:input, 9, 2), 'xx') - 1, 'fm00')
 || to_char (to_number (substr (:input, 11, 2), 'xx') - 1, 'fm00')
 || to_char (to_number (substr (:input, 13, 2), 'xx') - 1, 'fm00')
 || to_char (nvl (to_number (substr (:input, 15, 8), 'xxxxxxxx'), 0), 'fm000000000')
 , 'yyyymmddhh24missff'
 )
 from   dual

The above timestamp representation translates to 26-5-2016 10:30:00,000000000.
For timestamps with timezones or ones with a different precision the formula will probably be similar.

Verder lezen…SQL monitor and timestamp bind data

Apex 5 komt eraan

Het releasemoment van APEX 5 komt naderbij. Ik heb zojuist een mail ontvangen van het Oracle Apex support team waarin gewaarschuwd wordt om de applicaties op de early adopter 2 site veilig stellen omdat deze omgeving zal worden vervangen door de early adaptor 3 versie. Eerder is ook gesproken over een public beta versie die … Verder lezen…

Buffer sort madness

Last week I was called in on a performance issue regarding a query on a datawarehouse that took about 4 hours. When looking at the execution plan in the excellent sql monitor I noticed a big full table scan yielding a whopping 125 million rows. Before I could turn around to ask the application team … Verder lezen…

Progress database converteren naar Oracle

Inleiding Zoals zoveel programmeurs heb ik in verleden als vriendendienst een applicatie voor een bevriende ondernemer gemaakt. In de tijd dat ik dit project heb uitgevoerd werkte ik hoofdzakelijk in een Progress omgeving. Het is dus niet verwonderlijk dat de applicatie daar ook in gemaakt is. Dit is een Progress 6, character based applicatie die … Verder lezen…

My First APEX plug-in

In an attempt to reach a broader audience, this will be my first blog in English. I hope this will help more people to read and use my tips and tricks. For me it will be an extra challenge! For some time now (since version 4.0), APEX has offered the plug-in functionality and although I … Verder lezen…

Currency Converter APEX plug-in

Na een vraag op het oracle forum over het converteren van valuta, heb ik besloten om hier een plug-in voor te schrijven. De plug-in is niet echt heel spannend maar doet wel wat die moet doen. Op basis van de koers die opgehaald wordt bij rate-exchange.appspot.com wordt de berekening uitgevoerd. Dit is een gratis webservice die … Verder lezen…

Notification plug-in

Today I published a new version (1.1) of my notification plug-in. In this version I added the possibility using free form text or predefined select lists for a few parameters. Visit apex-plugin.com to get it.

Het gemak van xmltype

Heel af en toe krijgt een 3rd party applicatie waar wij hier beheer voor doen een fout item via een xml message binnen. Hiervoor biedt de applicatie een beheerscherm waar de xml aangepast kan worden en daarna opnieuw aangeboden kan worden. Dat voldeed prima tot we er op een dag ineens 90 foute berichten kregen. … Verder lezen…