Agile Amped Video – Live from Southern Fried Agile

A few weeks back I had the pleasure of attending and speaking at the Southern Fried Agile event in Charlotte, North Carolina. It was quite an event with over 700 people in attendance. This is a primarily local event drawing people mostly from the Charlotte area. To say agile is big in that town is […]

Delta-Bestimmung mit Oracle

Dani Schnider hat vor einigen Wochen einen schönen Artikel veröffentlicht, in dem er verschiedene Möglichkeiten zur Bestimmung von Datenänderungen zwischen Quellsystem und Data Warehouse erläutert. Grundsätzlich kann in solchen Fällen ein Full (oder Left) Outer Join verwendet werden, der die Daten aus Quelle und Ziel miteinander abgleicht, und dabei gibt es drei relevante Fälle:
  • ein Datensatz existiert nur in der Quelle und nicht im Ziel: demnach wurde er neu erzeugt und muss im Ziel ergänzt (more...)

Signing up for scary stuff

So I subscribe to the idea that the only way to improve is to dive in on the deep end. Sink or swim.

With that in mind I sent in an abstract to RMOUG and actually got it accepted. Now, this is a conference I used to attend every year when I lived in Denver. I know the quality they have in most presentations nad I know that lots of people with “important” names in the (more...)

A handful of articles

A little while ago a member of the Danish Oracle User Group DOUG asked if anyone had a bit of experience with use of R together with Oracle Database. I remembered an article I wrote for OTech Magazine on forecasting with R and Oracle and thought it would be a good primer for him. OTech Magazine is no longer active, sadly, but I thought I could send him a link anyway to my article. That (more...)

APEX 5.1 Chart Column Mapping

If you've played with the D3 chart plugins you can find in the Sample Charts Packaged Application, you may have noticed the ability to nominate a column from your query as the series name.

APEX 5.1 Column Mapping

APEX 5.1 provides this built into the framework. Combined with some rather granular attribute control at series and axis levels, I think it will be harder to find tweaks that haven't been made declarative.

And (more...)

Cost Based Optimizer-Grundlagen

Randolf Geist, dessen englischsprachige Artikel ich hier gerne exzerpiere, hat für die Zeitschrift "Informatik Aktuell" einen Beitrag Cost Based Optimizer: Grundlagen – mit Update für Oracle 12c geschrieben. Dem aufmerksamen Leser ist jetzt vielleicht schon aufgefallen, dass Zeitschrift und Artikel offenbar deutschsprachig sind. Das einziges, was ich dazu ergänzen möchte, ist, dass ich den Artikel für eine der besten einführenden Zusammenfassungen zum Thema halte, die ich bisher gelesen habe - und mir fällt nichts Vergleichbares (more...)

Build Options on Report Columns

Let's say you're experimenting with a report (IR or classic) column and you would only like it to appear in you development environment.

What options do you have for hiding that column in other environments?

  1. Don't migrate the change - use your source control processes to only move it when it's ready. This isn't always practical, nor the intent, particularly since you can programatically set the status.

  2. Add server condition on database name - we (more...)

Report Link: Save before Navigation

Typically an Apex report with an “Edit” link will simply do an immediate navigation to the target page, passing the ID of the record to edit. When the user clicks this link, the page is not submitted and the user is instead redirected.

If it’s a report on a page which includes some editable items (e.g. a page for editing a “header” record), if the user doesn’t Save their changes before clicking the report link (more...)

Basic Python Object

One of my students wanted a quick example of a Python object with getters and setters. So, I wrote a little example that I’ll share.

You define this file in a physical directory that is in your $PYTHONPATH, like this:

class Coordinate:
  def __init__ (self, x, y):
    self.x = x

Connecting PL/SQL Developer

In SQL Developer you have a lot of options when connecting to the database. You can use the TNS entries defined but you can also give the hostname, port and SID or Servicename for instance. PL/SQL Developer doesn’t supply these options, but you can still use them…

In the logonscreen you can choose the database by choosing you TNS entry. But did you know you can put in the complete text of a tnsnames.ora (more...)

APEX Survey Results: Instrumentation Thoughts

This question in my 2015 survey is related to question 7 regarding instrumentation.

Q8: Do you have any thoughts you'd like to share on instrumentation?

I left this open for people to add a free-text response. Here are some worth highlighting, though it was hard to choose since so many people had something to add.

a) How would it help me?

Have a read of this post to get an idea of how the debug (more...)

Angemessene Indexgröße

Für All Things Oracle hat Jonathan Lewis vor einigen Wochen einen Artikel geschrieben, in dem er erläutert, wie man die angemessene Größe eines B*Tree Index bestimmen kann. Darin geht er davon aus, dass ein stabiler B*Tree Index in der Regel etwa 70% des verfügbaren Speichers in den Leaf-Blocks auslastet, während etwa 30% freier Speicher in den Leaf-Blocks verfügbar bleibt. Unter dieser Voraussetzung ist es möglich eine grobe Abschätzung zu geben, wie groß ein Index in (more...)

Developer Service Project and Git Repository understanding from an IDE Perspective

This blog will give an understanding of the Developer Service project and repository structure on Git in Oracle Developer cloud service. We will go through a simulated scenario of a project and see how to structure it and map it to the projects in IDE’s like Jdeveloper, Netbeans and Eclipse.


Below is the screenshot of the published licensing of Oracle Developer Cloud Service:


As per the Developer Cloud Service licensing, we are entitled for (more...)

I’m speaking at #DOAG2016 and #ukoug_tech16

This year I get to speak about advanced SQL twice at two different conferences. My first presentation is about row pattern matching with MATCH_RECOGNIZE and my second deals with ranges - including but not limited to Temporal Validity ranges.

Enhancement Request for SQL Developer for users of Logger

Juergen Schuster, who has been enthusiastically trying OraOpenSource Logger, raised an idea for the debug/instrumentation library requesting the addition of a standard synonym “l” for the package. The motive behind this request was to allow our PL/SQL code to remain easy to read, in spite of all the calls to logger sprinkled throughout that are needed for effective debugging and instrumentation.

In the judgement of some (myself included) the addition of the synonym to (more...)

Create a Python Module

Sometime formal programming documentation is less than clear. At least, it’s less than clear until you’ve written your first solution. The Modules section of the Python language is one of those that takes a few moments to digest.

Chapters 22 and 23 in Learning Python gives some additional details but not a clear step-by-step approach to implementing Python modules. This post is designed to present the steps to write, import, and call a Python module. (more...)

Python for loops

It’s always interesting to explain a new programming language to students. Python does presents some challenges to that learning process. I think for loop can be a bit of a challenge until you understand them. Many students are most familiar with the traditional for loop like Java:

for (i = 0; i < 5; i++) { ... }

Python supports three types of for loops – a range for loop, a (more...)

Install cx_Oracle for Python

This shows you how to install the cx_Oracle library for Python 2.7 on Fedora Linux. If Fedora has it on the server you can download it with the following yum command:

yum install -y cx_Oracle-5.2.1-11g-py27-1.x86_64.rpm

Currently, you’ll get the following failure because it’s not available in the Fedora repository:

Loaded plugins: langpacks, refresh-packagekit
mysql-connectors-community                                      | 2.5 kB  00:00:00     
mysql-tools-community                                           | 2.5 kB  00:00:00     
mysql56-community                                               | 2.5  (more...)

And the Winner of Digital Partner of the Year for UKOUG is ….

…AuraPlayer ! (well for Silver anyways)

Last night, we had the pleasure of attending the ninth annual UKOUG Partner of the Year awards ceremony at the Café de Paris in London where we were honored with the Award for Digital Transformation Partner of the Year- Silver!


Amid the fun at the ceremony, Gwen Edwards (AuraPlayer’s VP of Business Development) had the chance to meet and snap a selfie with incoming Executive Director of UKOUG, James Jeynes! (more...)

Drill to Detail Podcast: Data Modeling, Data Vault, and Snowflake!

Check out Episode 5 of Drill to Details where Mark Rittman asks me about data modeling, data vault, and Snwoflake DB!