Oracle X5-2, from bare metal to VM Server. Without disks, without dvd drive.

Oracle offers a fine machine called the X5-2. Not to be confused with the ODA X5-2, which comes with sophisticated database software. The X5-2 is just bare metal.

The X5-2 is a 1HE 2 socket Intel machine with limited configuration options in terms of processor speed, number of cores and storage.

I will show you how to install Oracle VM Server software without even having a dvd drive for the installation disk, nor a hard (more...)

Fishbowl Hackathon 2016 Summary – Oracle WebCenter Innovations with Slack, Google Vision, and Email

This post comes from Fishbowl’s president, Tim Gruidl. One of Tim’s biggest passions is technology innovation, and not only does he encourage others to innovate, he participates and helps drive this where he can. Tim likes to say “we innovate to help customers dominate”. Tim summarizes Fishbowl’s Hackathon event, held last Friday and Saturday at Fishbowl Solutions, in the post below.

TimWhat an event! I want to start by thanking Andy Weaver and John Sim (Oracle (more...)

Delphix Replication

Someone just asked on the Delphix Forums whether they could test Delphix replication with the free version of Delphix called Delphix Express.

I’d never tried, so I sat down to try and was amazed at how easy it was.

I created twoDelphix Express installations.

On one engine, the source engine, (  I linked to an Oracle database on Solaris Sparc called “yesky”.

On that same engine I (more...)

Jonathan Lewis

I am finally getting around to finishing my four-part blog series on people who have had the most influence on my Oracle performance tuning work. The previous three people were Craig ShallahamerDon Burleson, and Cary Millsap. The last person is Jonathan Lewis. These four people, listed and blogged about in chronological order, had the most influence on my understanding of how to do Oracle database performance tuning. There are many other great (more...)

Subtle variations in optimizer stats

Subtle variances in the way you work with statistics can have a significant impact on how your optimizer plans work out…so you need to take care.

Let’s look at the following example

SQL> create table T (
  2    x varchar2(20) , y varchar2(100));

Table created.

SQL> insert into T
  2  select 'x' , rpad('z',100) from all_objects;

94117 rows created.

SQL> insert into T
  2  select 'X' , rpad('z',100) from all_objects;

94117 rows created.

SQL> exec  (more...)

java.lang nullpointerexception While Installing RAC Database Software

RSS content

I have an Oracle cluster having following 5 nodes :

  • Hub Nodes : host01, host02, host03
  • Leaf nodes: host04 and host05

I wanted to install RAC database software on the 3 hub nodes i.e. host01, host02 and host03.

I invoked the OUI as oracle user (Owner of Database Home)

[oracle@host01 database_12_1_0_2]$ ./runInstaller

and chose the option to install RAC database software only on the 3 hub nodes.

After (more...)

Quick tip on Function Based Indexes

For “normal” indexes, USER_IND_COLUMNS will contain the column name(s) for an index, but things (appear to) go astray when looking at function-based indexes.

SQL> create table blah ( x varchar2(30));

Table created.

SQL> create index blah_ix on blah ( upper(x));

Index created.

SQL> select column_name from user_ind_columns
  2  where index_name = 'BLAH_IX'
  3  /


Don’t panic. Simply take a look at USER_IND_EXPRESSIONS to find the function that you used.

SQL> select column_expression  (more...)

Partially Applied Functions in JavaScript

First of all, what are partially applied functions? There’s a little bit of theory here. The concept of partially applying functions stems from the functional way of programming. There it’s tightly linked with a concept called currying. Currying says that every function can be written as a function with only one parameter. By currying and un-currying you can achieve this goal. If this sounds very hard and complex, do not fear, in essence it’s quite (more...)

Blog Continuous Delivery and the Oracle database (II)

In the previous Blog I have described how to implement CD for an Oracle database by using migration scripts.

In this Blog I will describe how to create migration scripts (automagically).

DML scripts
This is the more simple case because you need them less often. There are various data compare tools which create scripts to migrate the differences between a source and target schema:
dbForge Data Compare for Oracle, v3.7 Express (free)

Collaborate 2016 Oaktable World Sessions

Oaktable World Las Vegas is happening at Collaborate 2016! Many thanks to Tim Gorman, Alex Gorbachev and Mark Farnham for organizing!
Free Oaktable World t-shirts available at Delphix booth 1613 on Tuesday and at the Oaktable World talks on Wednesday. Also available at the Delphix booth is free copies of Mike Swing’s “the little r12.2.5 upgrade essentials for managers and tema members”. Mike will be doing Q&A at the Delphix booth Tuesday 1:15-2:00 and book (more...)

Inflexible Security (MailChimp fail)

Maybe I shouldn’t have written about flexible security, because I immediately starting hitting inflexible security, locking me out.

Today’s fail is courtesy of, which I use for my newsletters. It’s OK that they decided they want a confirmation when I log on to my account from India, but it is not OK that they require a text message passcode with no other option.

I have my phone in flight mode, because I don’t (more...)

Silent Install GoldenGate 12.2

There are probably many blogs about installation; however, I tend to do things a little different.

$ cat /media/sf_working/oggcore_11gdb.rsp

I like to see installation progress.

$ ./runInstaller -silent -showProgress -waitforcompletion -responseFile /media/sf_working/oggcore_11gdb.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 28152 MB    Passed
Checking swap space: must be greater than  (more...)

Log file parallel write wait graph

I got a chance to use my onewait Python based graph to help with a performance problem. I’m looking at slow write time from the log writer on Thursday mornings. Here is the graph with the database name erased:


We are still trying to track down the source of the problem but there seems to be a backup on another system that runs at times that correspond to the spike in log file parallel write (more...)

Python DBA Graphs Github Repository

I decided to get rid of the Github repository that I had experimented with and to create a new one. The old one had a dump of all my SQL scripts but without any documentation. But, I have updated my Python graphing scripts a bit at a time and have had some recent value from these scripts in my Oracle database tuning work. So, I created a Github repository called PythonDBAGraphs. I think it will (more...)

Another SQL Profile to the rescue!

We have had problems with set of databases over the past few weeks. Our team does not support these databases, but my director asked me to help. These are Windows 64 bit Oracle databases running on Windows 2008. The incident reports said that the systems stop working and that the main symptom was that the oracle.exe process uses all the CPU. They were bouncing the database server when they saw this behavior (more...)

Force OEM to Discover HA Systems

You know there’s a cluster and that means that an HA system exists, but OEM won’t discover it.  Of course that means that your RAC databases can’t be discovered either and all of this is making you cranky.  Take a deep breath.  We can fix this.

The agent can only recognize an HA system when it knows of the clusterware home.  For some reason the agents weren’t aware of the CRS_HOME on some of our (more...)

A Designer’s Introduction to Oracle JET

I’m thrilled to be presenting at Collaborate 2016 with my colleague John Sim, on the recently open-sourced Oracle JET! We front-end developers had been seeking a better UI/UX solution from Oracle for quite some time, and they have delivered in a big way.


Oracle JavaScript Extension Toolkit (JET) is a powerful and intuitive framework that provides a modular toolkit for front-end developers. Rather than re-inventing the wheel, Oracle JET integrates tried and tested open-source frameworks (more...)

New APEX training in Vienna – APEX Debugging and Performance

Just a quick note: I’ll be holding a 1-day APEX training class on April 21st in Vienna, Austria.

In this training I’ll teach you how to debug your APEX applications, how to find problems and bugs and how to speed up your application.

Interested? Go here and sign up:

Resolve ‘Device or resource busy’ problems

Upgrading opatch utility consists of two steps

  1. Remove the old copy of opatch by deleting $OH/OPatch directory
  2. Unzip the replacement file into your Oracle home directory

But when you try to remove the contents of OPatch directory you get slammed with errors like this:

rm: cannot remove `jlib/.nfs0000000005213282002649ad’: Device or resource busy
rm: cannot remove `jlib/.nfs000000000523b2e4002649ae’: Device or resource busy

rm: cannot remove `ocm/lib/.nfs0000000005226a87002649b3′: Device or resource busy
rm: cannot remove (more...)

How to update a custom public theme in Oracle APEX

In the last post I showed how you can upload a custom theme to the instance repository so that all your developers can choose that theme within the create application wizard. And more importantly, subscribe that theme from the theme repository.

Now the next question is how to update that public theme so that all applications can inherit the changes.

My first attempt was to simply go to Instance Administration – Manage Instance – Public (more...)