Using LetsEncrypt on Amazon Linux

sslapexFor a number of years now I’ve been using LetsEncrypt to provide free SSL certificates for the Apex applications I provide. These certificates last for 90 days and are renewed automatically by a simple script on my server.

By the way – if you’re not already using https for your public-facing Apex applications, you should, okay – even if your site doesn’t have data entry.

Each LetsEncrypt certificate can cover multiple subdomains. They don’t (more...)

#SQLDevModeler Tip: From Domain to Database… A Comment Conundrum

Great tip on creating a custom transformation script in SQL Developer Data Modeler (SDDM) from the awesome David Schleis: Recently on the Data Modeler Forum, I came across this question: Is it possible to mirror domain comments, from Domain Administration into attribute “Comments in RDBMS”?  Would like to mirror these to the ddl so they […]

DevOps Handbook Review

DevOps: Is it a mindset or process? That’s a big question for managers because while you can’t manage a mindset, you can manage a process. DevOps is actually a framework of processes.

Some actually say DevOps is actually a lot like making a patchwork quilt. You need to design the patches before you figure out how to stitch them together. I believe this is true, and base that on my experience as a release engineer (more...)

Install Cassandra on Fedora

It was quite interesting to discover that DataStax no longer provides the DataStax Community version of Apache Cassandra or the DataStax Distribution of Apache Cassandra. Needless to say, I was quite disappointed because it means folks will get less opportunity to learn how to use Cassandra because it makes it more difficult for beginning developers.

I spent a good hour sorting through what was available and then figuring out the real requirements.

After installing and (more...)

Redo-Struktur bei Row-Migration und Row-Chaining

Eine interessante Beobachtung von Kamil Stawiarski: wenn ein Update Row-Migration oder Row-Chaining hervorruft, dann entspricht die Struktur der zugehörigen redo-Informationen jener eines Delete mit folgendem Insert. Wenn man darüber nachdenkt, ist das völlig einleuchtend, denn der Datensatz muss aus dem einen Block gelöscht und in den anderen Block eingefügt werden. Aber dass man das so genau in den Redo-Einträgen nachvollziehen kann, war mir neu. Eine Konsequenz dieses Phänomens ist dann auch, dass Row-Migration oder (more...)

Upgrade APEX 4 to 5.1.2

This blog post shows you how to upgrade APEX Version 4.0 on a default Oracle Database 11g XE instance to APEX 5.1.2. It divided into two parts. The first part confirms your starting point and the second installs and configures APEX 5.1.2. As a rule, you only should need to unlock the anonymous schema because these should be correctly set already.

Confirm Current Installation

  1. Verify the database version by connecting (more...)

Sans Kscope

A few years ago I was lucky enough to attend Kscope15, and while I wasn't there this year, I have bizarre feeling of involvement.

The Buzz

I knew it was coming because the Twitter engine told me. I could have ignored Twitter for a week, or I could try garner some interesting information.

I could also live vicariously through all those Oracle fanatics sharing their Kscope experience on Twitter. I joke, but actually a lot (more...)

Science Friday: Collect rocks, plant flag

Every year that goes by firms my realisation that putting people on the moon was an absolutely stunning achievement.

Almost 50 years ago a massive team of engineers helped put 3 highly skilled men in orbit around that giant rock in our sky, that is stunningly distant, yes infinitesimally close, then land, then take off again.

While still doing the math by hand.

I think the best perspective of the distance in a scale overhead.


“#PL/SQL: Therefore, whoever binds forever: automate your tests” – I’m a speaker at #DOAG2017


Today my presentation is confirmed: “Therefore, whoever binds forever: automate your tests”. Maybe the German pun will be the better understood: “PL/SQL: Drum test-automatisiere, wer sich sich ewig bindet!”

I will speak over my experiences with following

  • several PL/SQL testing tools like at least
  • I will give you a demo of this tools and compare their capabilities for
    • architecture
    • branching
    • continuous integration
    • code coverage

If you (more...)

Optimistic ORA_ROWSCN 2: the SCN

In my previous post, I covered lost updates. Before saying how ORA_ROWSCN can help avoid them, I need to talk about the SCN. It's hard to be simple and correct about such a fundamental element of the Oracle database, but I'll try.

New Version of SQL Developer Data Modeler is available!

Get the new version of Oracle SQL Developer Data Modeler version 17.2!

Optimistic ORA_ROWSCN 1: Lost Updates

I've gotten lots of feedback about my proposal to use ORA_ROWSCN for optimistic locking. I'm going to start over in more detail and try to leave less scope for misinterpretation. Thanks to all for your comments, especially Jonathan Lewis who saved me from some technical doubts. "Optimistic locking" is a type of solution to the problem of "lost updates". So what do we mean by "lost update", anyway?

Unpivot mit Oracle

Vor einigen Wochen hat Jonathan Lewis einen Artikel zum Verhalten von UNPIVOT in Oracle veröffentlicht. Darin zeigt er mit Hilfe eines CBO-Traces, dass die UNPIVOT-Operation intern in eine Kombination mehrerer über UNION ALL verknüpfter Queries umgewandelt wird. Interessant ist dabei, dass die Zahl der Blockzugriffe (Buffers-Angabe in den rowsource-Statistiken) nicht höher ist als bei einem einzelnen Full Table Scan. Jonathan Lewis vermutet, dass der zugehörige code path dafür sorgt, dass die Blöcke im Cache Batch-weise (more...)

SQL Logic Overkill, again …

It’s interesting to watch people try to solve problems. For example, in a lab exercise that I wrote the simple fix is to replace an external file value with a scalar subquery in an INSERT statement. There’s even a hint about how to fix the external file value in the CSV file.

The approach here was interesting and worked. However, it’s wrong on two levels:

INSERT INTO transaction
(SELECT   transaction_s1.nextval
 ,        tr.transaction_account
 ,         (more...)

Load Testing Automation on Oracle Developer Cloud Service using Artillery

This blog covers the Load testing automation of a REST service using a load test framework called Artillery, on Oracle Developer Cloud Service. The Nodejs based REST application will be deployed on Oracle Application Container Cloud Servic




Note: For details on how to develop and deploy Nodejs based REST service application on Application Container Cloud using Developer Cloud service, please refer the blog link here.


Tech Stack Used

Eclipse: IDE (more...)

Analyse der Block-Struktur mit Postgres

Frits Hoogland, dessen Artikel zu Oracle zu den fundiertesten technischen Beiträgen gehören, die mein Blog-Reader mir liefert, hat zuletzt zwei Artikel veröffentlicht, in denen er sich mit der Analyse von Blocks in Postgres-Datenbanken beschäftigt. Da seine Analyse weit über das hinausgeht, was ich in der Vergangenheit in dieser Richtung herausgefunden hatte, erzähle ich hier mal wieder einen Teil der wichtigeren Inhalte nach:

Validate Performance Improvement Using Query Folding Feature in Power BI

I’ve been using Power BI for a couple months now, not as a developer, but as a system architecture. I may not deal with dashboard and report development on a daily basis, however, I, as an end user, use Power BI extensively to monitor Azure and Power BI usage including audit and billing. I would like to learn more about this tool to its nuts and bolts. The intention of this blog series is to (more...)

CSV parsing and tokenizing strings

Most of you will be familiar with the “Comma Separated Values” data format. It is used in spreadsheets and other places to store ordered lists of character data. The delimiter is typically a comma and if a comma is in a list item the item as a whole needs to be quoted, typically with double quotes.



is actually just three items


Also, if we wish to include a double-quote in (more...)

Optimistic Locking with one Timestamp?

A reader called chris asked me a good question about optimistic locking: why not use a “user-defined” scn (e.g. timestamp) as an extra column to achieve the same goal as ORA_ROWSCN? Well, chris, you'd have to use one per row, not one per transaction.

My NoPlsql versus SmartDB deep-dive presentation materials

For those who are interested here are my two slidedecks used in yesterday's deep-dive session at ODTUG, here they are in ppsx format which includes all the animations. Part 1: Comparison between NoPlsql and SmartDB approach Part 2: SmartDB, how to do it? Enjoy. Toon