Oracle Cross Platform Provisioning: Magic from the Mess

Linux is taking over the workloads from the shrinking market share of

  • IBM AIX pSeries
  • Solaris Sparc Servers
  • HP-UX Itanium
because Linux provides a reliable and less expensive platform. The costs reductions per users according to IDC for using Linux over UNIX can be  on the order of 1/5 the price per end user
Legacy RISC Systems Cost  $1,425/User versus Linux at $ 256/User 
- IDC 2012
The LINUX systems will represent the marjority of the (more...)

Finished reading 12c Concepts manual

I decided to read the entire Oracle 12c Concepts manual.  It’s kind of overkill to read the entire manual if you just want to learn the new 12c features but it has been a long time since I’ve read the entire Concepts manual on the current version of Oracle.  I’m not sure that I remember correctly, but I think the last version I read entirely was the 9i version.  I definitely read (more...)

SQL for date ranges, gaps and overlaps

There are lots of questions and posts on the Web about data with date ranges. It’s harder than it seems to design tables with start and end dates, to avoid overlaps or even to write SQL to find gaps or overlaps. I’m writing this post to get some basic ideas straight and to make myself […]

Delphix 4.0 released ! The Modernization Engine

Delphix is amazing technology. I’ve been at Delphix for almost 4 years. The first year I was at Delphix was the first year Delphix was released on the market. Even from that first release Delphix revolutionized how we managed and think about data. Data goes from an onerous massive burden to instead a  fast, easy,  powerful resource. As one customer put it data goes from being your enemy to being your friend (and a powerful (more...)

Still the same cluster limitations

I am slightly disappointed to report that the new extended data types cannot be used in the clustered tables. CLOB columns have never been allowed, and are still not allowed in 12c, but I expected the new data types to pass seamlessly. That is not the case:

SQL> create cluster testclu(intkey number(30,0));

Cluster created.

Elapsed: 00:00:00.03
SQL> create index testclu_ind on cluster testclu;

Index created.

Elapsed: 00:00:00.03

Now, let’s create a normal table (more...)

Sqlplus script to check for row chaining

Here is the sqlplus scripting I use to check whether row chaining is degrading a query’s performance:

VARIABLE monitored_sid number;


SELECT sid into :monitored_sid 
from v$session 
where audsid=USERENV('SESSIONID');


select b.value "table fetch continued rows"
where b.SID = :monitored_sid
WHERE NAME='table fetch continued row');

I create a test script with the problem query and put this code after it to (more...)

Defective Reasoning

Again and again, I’ve seen significant decisions made based on defective reasoning. One of the most common errors is the fallacy of the converse – the belief that if A leads to B, and B happened, then A must have happened.

Defective ReasoningThis fails to take account of all the other things that might have caused B. But many people don’t see this because these other explanations are beyond their cognitive horizon.

I’ll talk more about (more...)

User Experience Event in the Netherlands

Together with other leading experts on User Experience from Oracle like Vice President Jeremy Ashley, Managing Partner Lonneke Dikmans from Vennster and CTO Lucas Jellema from AMIS, I’ll be speaking at the OAUX Expo in the Netherlands on March 18th.

I’m speaking on two topics:

  • How to tailor an application to your user’s needs without coding
  • How to implement a good User Experience in Oracle ADF for the cases where you do need to write (more...)

The Long Tail of Application Usage

A long tail is a distribution of some data point where a few data point have a high value, but most of the data points have a much lower value. When sorting the data points by value, there will be a large “head” and a long “tail”.

Application usage displays the “long tail” characteristic: A few screens are used much more than others.

Long tail of app usage

If you are re-developing your application, for example moving from Oracle Forms (more...)

SYSBACKUP travails, part II

The SYSBACKUP connectivity problems described in the previous post are caused by unpublished bug 15828768.

There is a way to connect, using SYSBACKUP privilege:


RMAN> connect target ‘system@local as sysbackup’

target database Password:
connected to target database: ORA12C (DBID=214280212, not open)

Please, note the quotes around the connection string. Without the quotes, this will not work. It works with both single and double quotes:

RMAN> connect target “system@local as sysbackup”

target database Password:
connected (more...)

Quirks with the SYSBACKUP privilege in 12c

Oracle 12c has a great new privilege, tailor made for the paranoid oracle DBA guys like me. However, there are still some quirks: SYSBACKUP privilege doesn’t work over Oracle*Net. If the authentication method is SID based local authentication, all is well:
Connected to:
Oracle Database 12c Enterprise Edition Release – 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> shutdown immediate
Database closed.
Database dismounted.

Oracle Developer Day Perth

Well…it was a great day with over 100 people attending.

I had the standard fail of trying to show people 200 things that I think are important, in a time allowing only for 50 things, but better to be overfed than starving :-)

Links to the slides are below.  Thanks everyone for coming – hope you had a great day.

(Thanks Chris for setting it up, and for (more...)

ADF Mastery newsletter is out

The February issue of the ADF Mastery newsletter just went out. If you are not on the list, you can sign up here.

This month, I’m covering the following topics:

  • Which version should I use?
  • A learning plan for the ADF basics
  • Best practice for good user experience

The first topic is often a matter of some debate. I recommend using JDeveloper for now – this is the stable version that (more...)

APEX Evangelists Network Welcomes Paul Broughton

As I recently blogged, APEX Evangelists is undergoing a transformation (stay tuned for what that means for me).

We are very happy to announce that Paul Broughton (Twitter - @paulbroughton) has joined the AE Network!

For those of you who don’t know Paul, he started working for APEX Evangelists back in July 2009 (wow time flies!) and has been involved in many client facing projects (and very recently was presented with an award (more...)

WildFly 8 meets AeroGear UnifiedPush Server

Congrats to the WildFly team on releasing their 8.0.0.Final!

For integrating the AeroGear UnifiedPush Server with WildFly only a few steps are required!

First, download and start the server, like:


Now you just need to build the master branch of the mobile push server. For that you simply need to clone the repo:

git clone 

and build the source code:

cd aerogear-unifiedpush-server

The evolution of APEX Evangelists

Every year we at APEX Evangelists come together to discuss the past and the future of the company.
In the past 7 years a lot has changed; the APEX market changed, the community changed, we personally changed, …

We really like APEX, we are all passionate about it, we love to have technical discussions with each other and come together to share our thoughts, but we also like our independence and make our own trade-offs (more...)

The Day We Fight Back

If you are worried about internet surveillance by NSA and others, today is an international action day with demonstrations and events worldwide. See for more information.


Setting and retrieving CLOB values in Apex

Imagine you have a textarea in your app where you want your users to be able to type in large quantities of text, click a button to store this in the database and then later retrieve this large quantity of text and redisplay it in that textarea.

You can’t do this as you would with other page items (i.e. just submit the page and have the values stored in session state). Any value over (more...)

Passing more than 10 values with apex.server.process

You may be familiar with the apex.server.process function exposed by Apex’s Javascript API. It allows you to asynchronously interact with Apex Application Processes.

A simple example would be.


Apex Application Process

HTP.p(‘You passed “‘||APEX_APPLICATION.g_x01 ||’” as the value for x01. ‘);

HTP.p(‘You passed “‘||APEX_APPLICATION.g_x02 ||’” as the value for x02. ‘);

HTP.p(‘You passed “‘||APEX_APPLICATION.g_x03 ||’” as the value for x03. ‘);



apex.server.process  (more...)

APEX 5.0 Early Adopter has arrived

Suddenly a big thunder rolled through the APEX community -> Version 5.0 has arrived in an early adopter version, as published on Joel Kallmans Blog (as usual on a friday, late night over here in europe).

Over the past 10-15 month we saw numerous presentations of what we can expect in APEX 5, and many of us had our own ideas.

As soon as I got word through twitter I applied for a workspace (more...)