Long-running INSERT

On one of the databases I’m looking after (, Solaris, non-RAC), several different INSERT statements (all into tablespaces with manually managed segments) suffer from occasional hiccups. The symptoms are always the same: in one of the sessions, the INSERT gets stuck doing lots of single-block I/O against one of the indexes on the inserted table, and if other sessions are running similar INSERTs, they hang on enq: TX – index contention. The (more...)

Golden Gate Activity Logging Tracing

A lot of customers of mine who are starting with Oracle Golden Gate have issues when it comes to troubleshooting Golden Gate. It is the most common question i get: “I have setup Golden Gate, it was working fine but now process X abandoned… now what do i do?”.  The OGG error log is a good starting point but is not always showing the real issue. There are a lot different way to obtain (more...)

web scale patterns in the bol.com back office – Mixed SQL – NoSQL

web scale patterns in the bol.com back office – Mixed SQL – NoSQL

In the previous weeks, we started a series of blog posts that show you how we use “web scale” patterns to achieve scalability and flexibility in our back office software. The previous patterns discussed were Event Sourcing and CQRS. This week we will dive into mixed SQL – NoSQL. Showing you how this doesn’t just solve a technical problem, they help (more...)

The Best Non-Important Feature of 12cR2: History Command

So I’ve been using Oracle 12cR2 for a couple of weeks now (getting ready to ilOUG meetup in a few weeks), and I decided to share my favorite non-important feature of the new version: the History command for SQLPlus.

As most of you already know, I’m a huge fan of SQLcl (aka SQL Developer Command Line Interface). I’ve written about it a little, and talked about it in conferences a lot. In the last conference (more...)

Quick Pick in Apex Report

I have an Interactive Report that includes some editable columns, and the users wanted to include some “quick picks” on these columns to make it easy to copy data from a previous period. The user can choose to type in a new value, or click the “quick pick” to quickly data-enter the suggested value.


Normally, a simple page item can have a quick pick by setting the Show Quick Picks attribute on the item. This (more...)

Oracle Database Cloud (DBaaS) Performance – Part 3 – Storage – 12.2 Update

Recently I repeated the I/O related tests on a instance for curiosity and was surprised by the fact that I consistently got significantly better results as on and

Now you're probably aware that the version 12.2 so far is "cloud-only", so I can't tell / test whether the version 12.2 is generically providing that increased performance or whether Oracle has optimized (more...)

PostgreSQL – An introduction

2017 – A year of learning !!

Today technology is changing at a very rapid speed and it’s very difficult to keep up to it but as said, it’s never too late to start something new. This year I plan to spend some time outside of Oracle and learn some new things.

I have started learning PostgreSQL and I want to take this platform to share my learning and to learn from others.  As this (more...)

Getting the most out of your Oracle database processor license in the cloud – if you dare…

Following up on the the Oracle doubled the costs for database licenses on MS Azure and partly on AWS post, I wondered with which setup on which cloud provider you would get the most bang out of an Oracle SE2 database processor license and what the recent change in Oracle licensing means especially for Azure users.

I’ve done an overly simple CPU benchmark test against Azure, AWS and Oracle cloud instances to get a rough (more...)

Performance comparison of different file formats and storage engines in the Hadoop ecosystem


This post reports performance tests for a few popular data formats and storage engines available in the Hadoop ecosystem: Apache Avro, Apache Parquet, Apache HBase and Apache Kudu. This exercise evaluates space efficiency, ingestion performance, analytic scans and random data lookup for a workload of interest at CERN Hadoop service.



Oracle Database and New CPU End Dates

With the upcoming on-premise release of Oracle Database, Oracle has updated the Critical Patch Update (CPU) security patch end dates for and  Currently (as of January 2017), only and are supported for CPUs.

The CPU end-dates, which correspond with the end of Extended Support, have been extended to October 2020 for 11.2.0. (more...)

Flipkart: Million-Dollar Hiring Mistakes

Flipkart: Million-Dollar Hiring Mistakes Translate Into Billion-Dollar Valuation Erosions

As the week drew to a close, a story that broke headlines in the world of Indian e-commerce was the departure of Flipkart’s Chief Product Officer, Punit Soni. Rumours had started swirling about Punit Soni’s impending exit since the beginning of the year (link), almost immediately after Mukesh Bansal had taken over from Binny Bansal as Flipkart’s CEO (link).

Punit Soni’s LinkedIn (more...)

Oracle doubled the costs for database licenses on MS Azure and partly on AWS

On January 23rd, 2017 Oracle published a new version of their “Licensing Oracle Software in the Cloud Computing Environment” document.

The current version is available here: http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf

Previously, a virtual database server with 8 virtual cores running Oracle Enterprise Edition in an authorized cloud environment needed 8* 0.5 =4 processor licenses.

Now, the same server on MS Azure (all instance types) or on AWS servers that do NOT have hyperthreading (namely the (more...)

Version Control for PL/SQL

Let's get this straight:

  • It is possible to put PL/SQL in proper version control. 
  • It is possible to have developers work on the same logical code unit (package, procedure, function etc...) at the same time without co-ordinating first. 
  • It is possible to merge these changes at a later time automatically. 
  • It is possible to eliminate all the errors resulting from manual preparation of deployment scripts. 
  • It is possible to build (more...)

Script: Inactive Parallel QC Holding Parallel Processes

Working on a data warehouse system can be quite challenging, as I mentioned in the post from yesterday. One of the things we need to take care of is the amount of parallel processes that are in used at all times. Yesterday I wrote about how to locate downgraded sessions. Today we will look at another aspect – who “steals” parallel processes and what can we do to solve it.

One of the biggest thieves (more...)

LOV with unicode symbols in Apex

I discovered the unistr sql function, which shows the unicode symbol of an hexadecimal input. eg> select unistr('\2713 ') tick from dual; As such I constructed a dynamic (sql) LOV in apex, converting the Y/N codes into a unicode symbol. See the tick symbol query above. Linking the LOV to a reporting column (text shown as LOV) changed the Y/N values of the column in a nice symbol. ✓   You

Temporal validity and open/closed intervals

A short while ago I created a SQL quiz for Oracle Dev Gym (PL/SQL Challenge) demonstrating the use of temporal validity and VERSIONS PERIOD FOR syntax to create a "change report" for changes in item prices. Use of temporal validity makes this easier, shorter and more readable code, but even though I thought I had it all covered, player Iudith Mentzel pointed out a tiny quirk I'd overlooked.

You see, the "change in price" wasn't (more...)

Oracle Database Cloud (DBaaS) Performance – Part 2 – Storage

In this second part of this installment I'll focus on the performance figures related to I/O encountered when the corresponding tests were performed on the platform.


When running with minimum sized buffer cache, direct and asynchronous I/O enabled, the following average read-only IOPS figures were measured over a period of several days (this is the test described in part three of the "performance consistency" series) .

First, running on a 4 OCPU single instance configuration (more...)

Oracle technologies used to analyze the Inaugural Addresses of the Presidents of the United States

The Oracle Database ships with a wonderful technology called Oracle Text.  Most people associate Oracle Text with the mere ability to index documents or data, perform text or phrase queries and get the results back.  But Oracle Text can do so much more.  One of the more interesting features of Oracle Text is the ability to analyze a document and generate a list of themes for the document along with a weight associated with that theme.

Back (more...)

APEX Plugin: Calendar Heatmap Region

I was looking at the GitHub "contribution chart", which shows number of commits per day as a heatmap calendar. I thought this type of chart would be cool to have as an APEX plugin, so I went ahead and implemented it.

Here is a video I recorded to walk through how the plugin was made:

Note: For an alternative implementation, see the "Block Calendar" in Oracle JET. As far as I can tell, there (more...)

Funny "ORA-01017: invalid username/password; logon denied" during DataGuard switchover operation from DG broker

Recently one of my customers encountered a problem when they tried to perform a switchover from DataGuard broker command line interface.

$ dgmgrl /
DGMGRL for Linux: Version - 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected as SYSDG.
DGMGRL> show configuration;

Configuration - db12c

  Protection Mode: MaxPerformance
  db12c  - Primary database
    sdb12c - Physical (more...)