VirtualBox 6.0.10

VirtualBox 6.0.10 has been released.

The downloads and changelogs are in the usual places.

I’ve installed it on my Windows 10 laptop at work. I’ve install it on my Windows 10, macOS Mojave and Oracle Linux 7 hosts tonight and update here.

I’ve be working through my Vagrant builds over the coming days, to check everything works OK. I’ll report back here if something comes out of the woodwork.



VirtualBox 6. (more...)

Dbvisit 9.0.02 : Automatic Failover

I recently wrote about the release of Dbvisit 9, where I included a simple installation article and Vagrant build to get it up and running.

Yesterday I got an email about version 9.0.02, or 9.0.2 depending on how you want to write it. The interesting thing about this release is the introduction of an observer, which enables automatic failover. If you want to try it, there is a free trial (more...)

GoLang: Inserting records into Oracle Database using goracle

In this blog post I’ll give some examples of how to process data for inserting into a table in an Oracle Database. I’ve had some previous blog posts on how to setup and connecting to an Oracle Database, and another on retrieving data from an Oracle Database and the importance of setting the Array Fetch Size.

When manipulating data the statements can be grouped (generally) into creating new data and updating existing data.

When (more...)

Video : CORR : Problem Solving using Analytic Functions

In today’s video we take a look at the CORR aggregate and analytic function.

This video is based on the information found here.

The star of this video is Vikki Lira, who used to be part of the team keeping the ACE program moving, but is now a Client Engagement Marketing Manager at Businessolver.



Video : CORR : Problem Solving (more...)


Over the last few days I’ve been tweeting little extracts from Practical Oracle 8i, and one of the tweets contained the following quote:

This lead to the (more...)

Swapping (paging) for DBAs

Classic symptoms of memory pressure (free physical memory running low + swapping) are often more difficult to interpret than they seem, especially on modern enterprise grade servers. In this article, I attempt to bring some clarity to the issue. It is based on Linux, although many observations can be generalized to other Unix-like operating systems.

Basics definitions

Let’s define some basic terms and concepts:

Page is simply a unit of memory allocation, pretty much like (more...)

HIGH_VALUE (and other LONG columns) revisited

Just a quick post to ensure people don’t get caught out by a recent “trick” I saw on an AskTOM question for extracting the HIGH_VALUE out of it’s LONG storage in the dictionary to a more appropriate datatype. A reviewer (I’m sure in good faith) posted the following mechanism to extract the HIGH_VALUE

SQL> create table t1 ( x timestamp )
  2  partition by range ( x )
  3  ( partition p1 values less than  (more...)

VMware free self paced e-learning course

Same dog, different leash – functions in SQL

Let’s start with this somewhat odd looking result. I have an inline function that returns a random number between 0 and 20, and I call that for each row in ALL_OBJECTS and then I extract just those rows for which the generated random number is 10. Seems simple enough….but why do I get results for which the value of the second column is most certainly not 10?

SQL> with
  2    function
  3      getrand(pval in  (more...)

MERGE and ORA-8006

I’m sure there will be a slew of post-Kscope wrap up posts coming out into the blogosphere, so in lieu of that, and the the fact that I’m just stuck in an airport waiting for a flight, I’ll offer something slightly more technical. I did a post a while back about a curious error “unable to get a stable set of rows” when using MERGE. Here is another variant which can occur when (more...)

Test Automation Days 2019

Vorige week woensdag en donderdag (19 en 20 juni) werden de Test Automation Days gehouden. De eerste dag bestond uit twee workshops die elk drie uur duurden. Op tweede dag van de Test Automation Days werden vooral presentaties gehouden. Ik zal van drie van deze presentaties een samenvatting geven.

Keynote sessie: Balancing your test automation with exploratory testing – Mirjana Kolarov (Levi9 IT Services)

Kernboodschap is: geautomatiseerd testen is niet de vervanging van alle andere (more...)

Embedding Transformation Data Pipeline into ML Model using Oracle Data Mining

I’ve written several blog posts about how to use the DBMS_DATA_MINING.TRANSFORM function to create various data transformations and how to apply these to your data. All of these steps can be simple enough to following and re-run in a lab environment. But the real value with data science and machine learning comes when you deploy the models into production and have the ML models scoring data as it is being produced, and your applications (more...)

Oracle’s Q4 Results and a hidden gem

Oracle posted some storming Q4 results last week, beating both Safra Catz’s own guidance and analyst expectations. Total Quarterly Revenues were $11.1 billion, up 1% in USD and up 4% in constant currency compared to Q4 last year.

Oracle CEO, Safra Catz said “Our high-margin Fusion and NetSuite cloud applications businesses are growing rapidly, while we downsize our low-margin legacy hardware business. The net result of this shift .. to cloud applications was a Q4 (more...)

I lost a database, for the 1st time since 1992.

Well, I lost a pluggable database, not the real instance.  What I did is the following:


So far, so good. However, the pluggable database was around 800 GB and was getting unplugged  at the whopping speed of 12 GB per hour. Seeing that this will take forever, I pressed Ctrl-C and killed the “unplug” process. The result was a disaster: database was recorded as unplugged and couldn’t (more...)

Batch Query Reduced from 12 hours to 45 Minutes

I was asked to look at a batch SQL query that ran for 12 hours on June 4th. I messed around with some other ideas and then went back to my best method for tuning long running batch queries. I ripped it apart. My code ran in 45 minutes.

This only works if you have the code and can change it. I work with a lot of PL/SQL code in Unix shell scripts running SQL*Plus. (more...)

Another On Call Week, Another SQL Profile (or two)

I was on call again last week and Sunday night I used a SQL Profile to fix a performance problem. We rolled out some updates Saturday night and the modified query ran fine in some cases, but others ran for hours. When I got on there were 60 sessions running the bad plan and the load on the system was very high. It took me a while to identify the good plan, but then I (more...)

SMON_SCN_TIME and ORA-8161? Digging deeper

In the recent versions of the Oracle database, we’ve had the ability to convert between a System Change Number (SCN) and the approximate time to which that SCN pertains. These functions are unsurprisingly called SCN_TO_TIMESTAMP and TIMESTAMP_TO_SCN. The only potential misnomer here is that even though the functions are called “timestamp” and return a datatype of timestamp, on most platforms you are going to notice that the granularity doesn’t run down into fractions of seconds

Slides and My Impressions from May 17th AZORA Meetup

We have the slides from the two talks at our May 17th AZORA Meetup.

Here are Stephen Andert’s slides: Networking is NOT just cables and fiber!

Here are Doug Hood’s slides in three parts:

  1. Using SQL and PLSQL for Mid-Tier Database Caching
  2. Oracle TimesTen Scaleout – World’s Fastest OLTP DB
  3. Oracle In-Memory Data Processing

I wanted to share my impressions of the two talks and the meeting as well as share the slides. Of course, (more...)

Transforming Outliers in Oracle Data Mining

In previous posts I’ve shown how to use the DBMS_DATA_MINING.TRANSFORM function to transform data is various ways including, normalization and missing data. In this post I’ll build upon these to show how to outliers can be handled.

The following example will show you how you can transform data to identify outliers and transform them. In the example, Winsorsizing transformation is performed where the outlier values are replaced by the nearest value that is not (more...)

Smoke Escaping from a Black Box – how to tackle major production issues on a system that is not very transparent

This story is based on true events. It happened fairly recently.

imageI was called into an organization that was experiencing performance and stability issues that affected mission critical processes. Every now and again, and increasingly frequently, their service bus stopped working. It appeared as if only a restart could get things going again. There was no insight into the trigger nor the underlying problem that caused this loss of service.

Unfortunately – although it did (more...)