Compiling views: when the FORCE fails you

Darth-Vader-selfieThe order in which your deployment scripts create views is important. This is a fact that I was reminded of when I had to fix a minor issue in the deployment of version #2 of my application recently.

Normally, you can just generate a create or replace force view script for all your views and just run it in each environment, then recompile your schema after they’re finished – and everything’s fine. However, if views depend (more...)

#Javaland 2017 wrap up

Yes – I did it again and attend Javaland conference in Phantasialand Brühl.

It was not easy this year to concentrate on the sessions because of the hottest march of the last 100 years. But the quality of the sessions beats the weather. Maybe again my invest in reading the abstracts and filter the sessions before the conference has payed off.

Day 1 Conference

Jens Schauderdocumentation & slides with AsciiDoc, Git, Gradle and Reveal.js


Python cx_Oracle 5.3 for Oracle Database Released

| Mar 9, 2017
Today we are pleased to announce the release of cx_Oracle 5.3, the extremely popular Python interface for Oracle Database. Binary and source bundles can be installed from PyPi, as normal. cx_Oracle 5.3 works with Python version 2.7, and with versions 3.4 and higher. You can use cx_Oracle with Oracle 11.2, 12.1 and... [Read More]

#DEVCAMP17 wrap up


Yesterday I attend the annual barcamp DEVCAMP of the DOAG development community. There are mostly developers with SQL, PL/SQL, Forms & Reports, ADF, JET background and some Java, Javascript and APEX developers too. And not to forget: 1 dba and some managers. Here are my summary.

I arrived on evening before just in time for the life cooking event and later at the bar to meet lot of the people I already know and some new too.

The morning begins with (more...)

#Oracle cutting in inspiration and new business?

Over the many years Oracle has been leading the database world, I guess they are now taking something of a wrong turn.
Let me briefly fill you in on my thoughts.

Basically I see two “minor” shifts that are significantly indicative of this:

  1. Oracle Standard Edition 2
  2. Oracle ACE Program

Okay, so you might think I am crazy, but let me try to explain.

Oracle Standard Edition 2

Sometime last year, the long expected, (more...)

Inserting data in SQL*Plus correctly

When inserting data into the database, it is occasionally forgotten (especially by English-speakers) that we need to take steps to ensure we are inserting data correctly and without unexpected character translation.

For example, in SQL*Plus we need to ensure we set the NLS_LANG environment variable to the correct setting for our database before we initiate SQL*Plus.

Here’s a quick example showing what can go wrong:

[oracle@ORA122 ~]$ echo $NLS_LANG

[oracle@ORA122 ~]$ sqlplus neil/neil
SQL*Plus: Release  (more...)

Friday Philosophy – When Tech Fails to Deliver, is it Always a Problem?

I nipped out to the local supermarket this lunch time to get stuff. I use one of those self-use barcode scanners to log all the goods I put in my basket (apart from the bottle of whisky I was stealing). I then go to the payment machine, scan the “finish shopping” barcode and try to pay. I can’t pay.


I can’t pay as I bought some paracetamol (note to US readers, you know it as (more...)

Virtual Development Server: Provide Docker images in docker registry for Oracle via Jenkins

This is a follow up to earlier Virtual Development Server: Provide Docker images in docker registry for Oracle XE Database and others.

We now try to automated build of all needed images as soon as Oracle GitHub Sources changed or we need to build our Vagrant VirtualBox again from scratch.

After we have already installed Jenkins we now install first some needed plugins.

We select explicit plugins at Jenkins Configuration: Pipeline and Pipeline Stage View Git SSH Slaves and wait for the install process Later we add Blue Ocean Beta via "Manage Jenkins" -> "Manage Plugins" . After all is installed we restart Jenkins.

After this we create our Jenkins pipeline via “New Item”.

We give it a name and select pipeline. As we do not own the git repository and cannot create a hook there, we create a simple scm poll schedule. Then we add our pipeline script.

Here is the script (more...)

Virtual Development Server: Install Jenkins for Continuos Integration / Delivery / Deployment


For automation of all of my processes I need Jenkins in my development server.

First I had installed Jenkins as Docker container via Vagrant Docker provider. But with this architecture it was very complicated to create docker images and run Docker containers on the Docker host, in this case my Vagrant Virtualbox.

So for simplification I have decided to install Jenkins with the provisioning of the Vagrant Virtualbox via a shell provider in my Vagrantfile:


#DOAG2016, definitely a crazy week.

#DOAG2016, the largest Oracle Community gathering in Europe. Taking place in Nuremberg, at the Nuremberg Convention Center NCC, one of the more impressive places to hold such a conference, towering 4 stories high, with a big central atrium!!
It is a huge effort to get all of this together!

In this blog-post I want to highlight some of the crazy things I experienced this week… And… I did try to follow my own schedule (more...)

Fix “BEA-000394: Deadlock detected” for Weblogic with ADF Applications

If you try the newest version (or maybe earlier versions too) you see, that your managed server does not restart, when

  • you have deployed your ADF application(s)
  • you try to restart the managed server with ADF
  • you use intentionally or not shared libraries in your weblogic-application.xml (see example below)
<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-application xmlns:xsi=""
                      xsi:schemaLocation=" (more...)

#DOAG2016 wrap up


Another DOAG is over and here are my summary.

Day 1

Unfortunately the early train from duesseldorf arrives not before 9:30, so I missed the first morning slot. But on the other hand I this was the slot where I had to decide between 8 presentations, which I’m interested in.

The first soft skill presentation was about creative techniques beyond brain storming. The mentioned 3 techniques was all unknown for me, maybe I give it (more...)

Building Classrooms in the Cloud

Jumpbox Lab Server

Let’s face it: education without interaction is about as effective as shouting origami instructions at a lumberjack who is cutting down trees. Sure, your informative lessons will come in handy when the product of their work finally becomes paper, but it will be long forgotten and ultimately worthless by then. The only way a student is going to learn is if they can put (more...)

OTN Appreciation Day: PL/SQL

We are posting these blog posts today as part of the OTN Appreciation Day, a celebration for the Oracle Technology Network as suggested by Tim Hall, inspired by Debra Lilley.

The mission was not too hard: write about your favorite bit of Oracle Technology.

As a developer and a core-tech DBA and APEX enthusiast… the choice was easy! PL/SQL (apart from how it is pronounced or even written ;-)!

Why? Easy!

Not just because (more...)

Virtual Development Server: Provide Docker images in docker registry for Oracle XE Database and others

For later creation of containers as needed in the deployment process we have first to build docker images whenever we do not find suitable one in docker hub.

For most of my development I need a oracle database. On the internet you can find a lot of Dockerfile’s for this, but no ready image. This is because for running a database you have to accept a license and this happens when you download the installation (more...)

Virtual Development Server: Add swapfile to VirtualBox as requirement for installing Oracle or build Oracle docker images

As I want later build Oracle docker images, some of this need a swapfile.

Per default my used Vagrantbox, does not have one, so later steps will fail.

As in the last blog I use a Vagrant shell provider.

  # add swapfile to the box
  config.vm.provision :shell, :path => ""

This calls the script in the created VirtualBox machine.
Make sure, that you create your swapfile on a supported (more...)

Virtual Development Server: Add enough ram and disk space to VirtualBox for further server components

As I want later build docker images and run docker containers I have to provide enough disk space for this.

Per default the Vagrantboxes have vmdk disks, these have a static size and are to small for my purposes.

Therefore I convert the disk, which comes with the box, via Vagrant VirtualBox provider from vmdk to vdi, so that it allocate only the used disk space in the host system.
Additional I add a second (more...)

Feature Lifecycle Analysis with PivotalTracker

Can you trust your agile planning process to deliver the best result over time?

In an ideal world with a well-balanced and high-performing team, theory says it should all be dandy. But what happens when the real world sticks it's nose in and you need to deal with varying degrees of disfunction?

Feature Lifecycle Analysis is a technique I've been experimenting with for a few years. The idea is to visualise how well we are (more...)

On "random" CI failures

I closed a bug yesterday that's been kicking around for almost a year as a sometimes fails on CI but no-one can figure out why frustration.

Sooner or later you'll hear someone suspect it must be a problem with CI. Which is ironically funny in a shoot-the-messenger kind of way!

Thankfully our "CI issue" turned into a for-real bug. In short, the code involved many classes with near 100% test coverage. It had been read (more...)

Node.js tutorial part 1; setting up your environment

In a previous post I explained what Node.js is and how it works. Now, I’ll help you install it and create your first Node.js powered webpage.

I make the assumption you have some basic HTML and Javascript knowledge.

Node.js is installed as part of the npm installation. npm is a very powerful Javascript package manager that will save you tons of work when used properly. We at Whitehorses do not suffer from the “not invented here” (more...)