Little sleeps

A peripheral question in a recent comment (made in response to me asking whether a loop had been written with a sleep time of 1/100th or 1/1000th of a second) asked “How do you sleep for 1/1000th of a second in pure PL/SQL?”

The answer starts with “How pure is pure ?” Here’s a “pure” PL/SQL solution that “cheats” by calling one of the routines in Oracle’s built-in Java library:

create or replace procedure  (more...)

Get Azure Networking Hierarchy Components With Powershell

I needed to see what VNETs, their subnets and the NIC/IPs attached to those subnets which is all available in Azure Portal but I wanted a nice hierarchical listing so here is a Powershell script for that…

$vnets = Get-AzVirtualNetwork
foreach ($vnet in $vnets)
"VNET: " + $vnet.Name
"Subnet Count: " + $vnet.Subnets.count
foreach ($subnet in $vnet.Subnets)
"..Subnet: " + $subnet.Name
if ($Subnet.IpConfigurations.count -eq 0)

Downsizing the Data Set – Resampling and Binning of Time Series and other Data Sets

Data Sets are often too small. We do not have all data that we need in order to interpret, explain, visualize or use for training a meaningful model. However, quite often our data sets are too large. Or, more specifically, they have higher resolution than is necessary or even than is desirable. We may have a timeseries with values for every other second, although meaningful changes do not happen at lower frequencies than 30 seconds (more...)

Postgres & Sequences

Many developers already know about the change from int to serial in Postgres. Serial is simpler because it automatically makes the column not null and links it to a sequence. The sequence is created with the following naming convention:


The Postgres serial type always has a start with value of 1. Though, you can alter it immediately after creating the table.

You can create a serial surrogate key column like this:


Using Elastic Stack, Filebeat (for log aggregation)

In my last article I described how I used ElasticSearch, Fluentd and Kibana (EFK). Besides log aggregation (getting log information available at a centralized location), I also described how I created some visualizations within a dashboard.

In a new series of articles, I will dive into using Filebeat and Logstash (from the Elastic Stack) to do the same.

In this article I will talk about the installation and use of Filebeat (without (more...)

Better Data Modeling: Agile Data Engineering

Now available - Agile Data Engineering in paperback form!

OpenWorld and Code One 2019 : ACE Director Briefing (including APEX 19.2 EA)

The ACE Director Briefing is under NDA, so I can’t talk about it. Most of the stuff mentioned will be known to the general public by the end of OpenWorld, so I’m not going to say anything here, as I don’t need the grief of saying something I shouldn’t. 🙂

The announcements are nice, and I think some people will be pleasantly surprised, but if I’m honest, the main thing for me is meeting everyone, including (more...)

The Process Group Pattern

This article describes the Process Group Pattern, which can be used to correlate process or integration instances that all support the same business process. It is also a pattern that support the Microprocess Architecture.

For a somewhat more complex process, and especially when applying the MicroprocessArchitecture, you may have more than one process application and probably several integration applications that make up the implementation of (more...)

mysqli Strict Standards

Six years ago I wrote a common lookup post to illustrate the effectiveness of things used throughout your applications. Now, I’m updating my student image with a more complete solution to show how to avoid update anomalies.

In the prior post, I used a while loop in PHP, like the following:

do {
} while($stmt->next_result());

Using PHP Version 7.3.8 and MySQL 8.0.16, that now raises the following error message:

Strict Standards:  (more...)

MySQL Update in mysqli

Somebody didn’t like the MySQLi Update Query example on the website because it use the procedure mysqli_query style. Here’s a simple example of using the object-oriented method version. More or less, instead of query it uses the more intuitive execute() method.

The update_member function contains the logic and below it is a call to the test the function. It relies on a file that contains the hostname, user name, password, and (more...)

OpenWorld and Code One 2019 : The Journey Begins

The day began at 03:00, or more accurately it began the previous morning, as I didn’t sleep overnight. Normal nervous can’t sleep stuff.

I got a taxi to the airport, which was easy at that time. The first flight from Birmingham to Amsterdam was a little late to get going, but we played catch-up in the air. I got to Amsterdam, and the next boarding gate was close, so no drama there. At the boarding (more...)

Unexpected Behavior

"Expect everything, I always say, and the unexpected never happens."
― Norton Juster, The Phantom Tollbooth

DBMS_LOGMNR is a great tool for finding information about what’s going on in an Oracle database. If it’s written to the redo logs DBMS_LOGMNR can find it. But sometimes it can find too much information, especially when assumptions are made regarding table ownership. Application code is often tested with ‘pristine’ database configurations, where ‘one table, one owner’ is (more...)

Duplicate OMF DB Using Backupset To New Host And Directories

Database is created using OMF.



BACKUP LOCATTION on shared storage:

I has to explicitly set control_files since I was not able to determine how it can be done automatically.

set control_files='/u01/oradata/EMU/controlfile/o1_mf_gqsq2mlg_.ctl','/u01/fast_recovery_area/EMU/controlfile/o1_mf_gqsq2mpz_.ctl'

If don’t set_controlfiles then duplicate will restore to original locations.

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/EMU/controlfile/o1_mf_gqsq2mlg_.ctl
output file  (more...)

Prepare Jupyter Notebook Workshop Environment through Docker container image and Bootstrap Notebook

Earlier this week, I presented a workshop on Data Analytics. I wanted to provide each of the participants with a fully prepared environment, right on everyone’s own laptop (and optionally in a cloud environment such as Katacoda). The environment consisted of Python 3.7, Jupyter Labs (for Notebooks), many additional Python libraries (Pandas, Plotly, Chart Studio, Matrix Profile, SAX, Fuzzy Search and many more) and a number of my own GitHub repositories containing the workshop (more...)

Brian Sieberth 2019-09-13 13:18:00

Wanted to make a quick post that Oracle Database 19c is now certified with EBS 12.2:

There are some caveats that go with this.  For example utl_file_dir has been desuported with 19c, so there is a process to move to use database directories instead.  You will also have to move to a CDB (container database) architecture with a single PDB (pluggable database).  There are also some related certifications (more...)

Oracle Sign up: more problems

I thought, i was successful, but:

I received a mail with the following content:

"We have re-authorized a new, specific amount on the credit/debit card used during the sign up process."


"To verify the account you have created, please confirm the specific amount re-authorized."

My problem: there is not any "re-authorized amount" on my banking account. I do not know, what is "re-authorized"?
Is this: this amount is charged on my (more...)

HVR | Real-Time CDC ::Oracle Autonomous DW::


HVR | Real-Time CDC ::Oracle Autonomous DW::

High quality Business Intelligence is key in decision making for any successful organisation and for an increasing number of businesses this means being able to access real-time data.  At Rittman Mead we are seeing a big upturn in interest in technologies that will help our customers to integrate real-time data into their BI systems.  In a world where streaming is revolutionising the way we consume data, log-based Change Data Capture (CDC) comes into the (more...)


Bobby Durrett recently published a note about estimating the volume of non-logged blocks written by an instance with the aim of getting some idea of the extra redo that would be generated if a database were switched to “force logging”.

Since my most recent blog notes have included various extracts and summaries from the symbolic dumps of redo logs it occurred to me that another strategy for generating the same information would be to dump (more...)

Dead Connection Detection (DCD) and the Oracle database

Dead Connection Detection is a useful feature of the Oracle database: it allows for the cleanup of “dead” sessions so they don’t linger around consuming memory and other system resources. The idea is simple: if the database detects that a client process is no longer connected to its server process, it cleans up. This can happen in many ways, in most cases this kind of problem is triggered by an end user.

A dead connection (more...)

UKOUG 2019

At the UKOUG TechFest 2019 event in Brighton this year I’ll be chairing the CBO Panel session on Monday 2nd December at noon. The panellists will be Maria Colgan, Nigel Bayliss, Christian Antognini and Richard Foote.

It will be possible to propose questions on the day – written or spoken, but this if you have a question that you’d like to give the panellists a little warning about then you can: