OracleCode One 2019 – My Sessions Pick

OracleCode One 2019 is few weeks ahead and like many, you have not yet made up your mind on which sessions to attend or why attend?

Here is a selection of sessions that I highly recommend (full disclosure, I am involved in these sessions).

AWK-Skripte zur Auswertung von CBO Traces

Die durch das Trace Event 10053 erzeugten Optimizer Traces sind eine großartige Hilfe, wenn es darum geht, die Entscheidungen des Optimizers nachzuvollziehen. Leider sind die Ausgaben aber so umfangreich und unübersichtlich, dass es unter Umständen ziemlich lange dauert, bis man die relevanten Details daraus exzerpiert hat. Zu Vereinfachung des Vorgehens hat Nenad Noveljic ein paar Skripte auf AWK-Basis veröffentlicht:

What version is my RAD stack?

A common follow up clarification on forums is regarding the version of the relevant tool.
Questions relating to Oracle APEX could be impacted by the APEX version, the database version, and perhaps the ORDS version - in addition to what browser is being used.

The information on the RAD stack can be resolved in one (concatenated) SQL query.

APEX was easy, there is a simple one row view, which ultimately translates to a function returning (more...)

How to set the date and time on Linux

Here a quick post for how to set the date and time on Oracle Linux via the date command. This is more for my own documentation but it might help others as well. To set the date you have to pass on a date in a given format. I find the +%D format option the … Continue reading "How to set the date and time on Linux"

Recursive Subquery

At my current assignment we are processing files coming from an online system to be inserted into our database (kind of a data warehouse). This is done using external tables and a scheduled job. The job just checks if there is a file available and will process this. The trouble is that the files might not make it to our database, for various reasons.

I want to be able to check if all the files (more...)

Prepared Statements und Bindewerte in Postgres

Franck Pachot erläutert in seinem Blog die unterschiedlichen Straegien bei der Verwendung von Bindevariablen bei Oracle und Postgres. Interessant sind aus meiner Sicht vor allem die Aussagen zu Postgres:
  • normalerweise werden Queries bei jeder Ausführung neu optimiert.
  • Ausnahme von dieser Regel sind Statements, die prepared wurden.
  • Für diese gilt, dass sie bei den ersten fünf Ausführungen jeweils neu kompiliert werden. 
  • Ab der sechsten Ausführung wird dann ein generischer Plan verwendet, der sich aber nicht (more...)

Oracle APEX Challenge Coin

Earlier this year, APEX technologist Adrian Png introduced an initiative involving an APEX Challenge Coin.

Reading up on the history behind the concept is rather interesting, with a strong military background. Something to create a sense of team bondage, to improve morale, and a way to determine who's round at the bar.
Though I couldn't help but think of two pop culture references - loosely in Pulp Fiction, and gruesomely in John Wick.

A (more...)

Kscope19 – What’s not in the brochure

Kscope19 was my second Kscope.
It's a long way, but the trip is worth it.

Sure, we can all see the session list.
Delegates all see at least 5 sessions we'd want to see on each timeslot.
Those unable to come weep at the delicacies they are unable to see first-hand.

But what about what isn't in the brochure?

People often comment about the benefits of conferences beyond the seminar room. Let me tell you (more...)

Conditionally Required Floating Item

An item using the Optional – Floating template looks like this:

An item using the Required – Floating template looks like this:

In addition, if the item is required we would most probably set the Value Required attribute to Yes. What if the item is sometimes required but not always? How do we create a Conditionally Required field?

Firstly, we would make sure there is a Validation on the field that checks that the value (more...)

Report Google Map Plugin v1.0 Released

Over the past couple of weeks I’ve been working on an overhaul of my Google Maps region for Oracle Application Express. This free, open-source plugin allows you to integrate fully-featured Google Maps into your application, with a wide range of built-in declarative features including dynamic actions, as well as more advanced API routines for running custom JavaScript with the plugin.

The plugin has been updated to Oracle (more...)

Informationen zur Hint-Verwendung in 19c

Eine schöne Ergänzung für dbms_xplan in 19c ist die Ergänzung des Formats HINT_REPORT - im verknüpften Artikel beschrieben von Gavin Soorma. Das Format liefert Informationen zu den im Statement angegebenen Hints und erklärt, warum ein Hint nicht berücksichtigt wurde. Diese Information musste man bislang über ein CBO Trace (Event 10053) ermitteln.

Lessons from Kscope19

The vague afterglow of Kscope continues. After the long trip home, I had a few days to give the brain a debrief, make some notes & ideas, before heading off for a family holiday.
Now after a Strange Things 3 binge, I wanted to finally bust out some posts I've drafted on Kscope.

I had the privilege of two sessions at Kscope19, and I also found myself sharing the APEX Lunch & Learn panel (more...)

How to manage GDPR compliance with Snowflake’s Time Travel and Disaster Recovery 

As organizations work to bring their data practices into compliance with GDPR, one question comes up repeatedly: How does Snowflake enable my organization to be GDPR compliant?

Thinking to setup a Data Lake for your org – let’s read this!

The fact is not new that data-driven outcomes have been one of the most electrifying revelations of the 20th century. Almost every organization considers data as the primary driver for their business and growth. Several strategies have evolved to manage the storage, analytics, and consumption of data. Not just for regulatory purposes, but data help… Read More Thinking to setup a Data Lake for your org – let’s read this!

Making Lists

Strings that contain multiple values violate first normal form, which mandates "one value per column per row".  People still ask how to make or massage lists of values. This post is about aggregating values into lists.

Change Item Icon Dynamically

The floating item type has an optional “Icon” property that allows you to render an icon next to the item, which can help users quickly identify what the item is for. This is especially helpful when the form has a lot of items.

The icon attribute can be static, e.g. fa-hashtag, or it can be chosen based on the value of another item, e.g. &P1_FA_ICON..

If you want the icon to change (more...)

My Kscope19

A little later than many post-Kscope19 blog posts (because the wife and I just had a nice relaxing vacation week right after I returned from Kscope ;-), but better late than never. A few thoughts, but for once not a lot of writing - most of this post is a video...

Kscope19 in Seattle was my 10th Kscope (all consecutive) and I had a blast as usual. Loads of great content and great fun, (more...)


In the previous post we saw that the Oracle Optimizer has a special operation – SORT GROUP BY ROLLUP – for performing several aggregations of the same population in a single scan, as long as the grouping keys are in a “rollup form”; for example:


If there is an index that its leading part is the same as the rollup grouping key, and that at least one of its columns is defined (more...)

Not all GROUPING SETS are created equal


I’ve just realized, once again, that the Oracle Optimizer is even smarter than I thought.
The comments (by Iudith Mentzel and Thomas Mautsch) to my previous post, GROUPING SETS and COLLECT don’t get along, made me understand that not all GROUPING SETS were created equal.

The examples in this post are from Oracle 18.3

Extended Aggregation Options

GROUPING SETS, ROLLUP and CUBE are great features that enable us to perform several aggregations (more...)

Wipe APEX mail queue

Refreshing any of our non-prod environments (e.g. dev, test, etc.) with a clone from production is a fairly regular process at my client. A recurring issue with this is emails: we’ve had occasion where users have received a second copy of an email immediately after the clone has completed. This was confusing because they thought the event that had triggered the email actually occurred twice.

As it turns out, the duplicate emails were (more...)