Adding flexibility to your PostgreSQL clusters – Using EDB Failover Manager

Using PostgreSQL in enterprise environments gets more and more popular. And why not? This extremely stable and performant database can compete with ease with almost all enterprise database installations out there today.

Competing technically? Sure!
Competing from a business perspective? Absolutely!!

Making sure your database systems stay up during planned maintenance? Absolutely yes, no discussion about that!
Ensuring your systems stay up during a catastrophic failure of your master? Yes! We need to ensure 99.99999 availability.

Introducing EDB Failover Manager (or short: EFM).

A tool that will do precisely this.

  • A graceful switch-over from a master database to a slave database (and back) with just one single command. This way you have the chance to do maintenance on the (previously master) node.
  • Failover from a master node to a slave node (which will be promoted to new master).
    It is based on PostgreSQL streaming replication, which allows you to create multiple slave clusters to your master cluster.

The tool ensures access to the cluster of database clusters using a Virtual IP Address. It gives you a wealth of ‘hooks’, where you can call scripts to help you reconfigure you surrounding landscape to a switch of masters. Think of re-configuring your load-balancing tools, like Pgpool-II to make sure read and write queries get assigned to the correct cluster nodes.

Well, that sounds good, right!

So, what do you need to do?

  1. Make sure your PostgreSQL streaming replication is running.
  2. Allocate at least 3 nodes (master/slave/slave or master/slave/witness). You will need three nodes to have a quorum to prevent a split brain scenario.
  3. Install EFM on those 3 nodes and configure it.
  4. Start, run and play!

Configuration of EFM is done through in the /etc/efm-2.1 directory.
Tip is to create 1 copy of this file and distribute this over you EFM cluster nodes. There are respectively one (master/slave/slave configuration) or two (master/slave/witness configuration) parameters that are node-specific.

  • bind.address: specific to each node, <node IP-address>:9001 (9001 is cluster communication port, same for all cluster members)
  • is.witness: put this parameter to true if the node hold no database.

All other parameters are well documented in the file.

Enter the <IP-address>:9001 of the membership coordinator (basically the first node of the EFM-cluster you start), in the efm.nodes-file of all the cluster members.

With this, we are basically good to go!!

systemctl start efm-2.1 and your cluster is running!

The efm-command allows you to manage your cluster. Syntax for the command is: efm <command> <cluster-name> <option>.

  • efm cluster-status efm gives you a nice overview of what is happening. Precede this with the linux watch command and you can monitor this nicely.
  • efm allow-node efm pg-11 allows node pg-11 to join the EFM cluster
  • efm promote efm -switchover makes the first slave in the standby priority list the new master and converts the precious master to slave
  • efm set-priority efm pg-10 1 makes node pg-10 the first node in the standby priority list
-bash-4.2$ watch efm cluster-status efm#

Every 2.0s: efm cluster-status efm Sun Aug 27 10:02:49 2017

Cluster Status: efm

Agent Type Address Agent DB Info
 Master pg-10 UP UP
 Standby pg-11 UP UP
 Standby pg-12 UP UP

Allowed node host list:
 pg-10 pg-11 pg-12

Membership coordinator: pg-10

Standby priority host list:
 pg-11 pg-12

Promote Status:

DB Type Address XLog Loc Info
 Master pg-10 0/AB0000D0
 Standby pg-11 0/AB0000D0
 Standby pg-12 0/AB0000D0

Standby database(s) in sync with master. It is safe to promote.

For troubleshooting and checking purposes, there are very informative logs in /var/log/efm-2.1

EFM truely is a very nice tool to add resilience and flexibility to your PostgreSQL database cluster configuration..

EnterpriseDB Summerschool 2017

I have been meaning to write a lot of posts, meanwhile. With the new challenges, and all, it just hasn’t happened.


although I don’t tend to do much advertising here, I really do need to share this (unique) opportunity,

I (and my other colleagues across EMEA) really want to meet you and share some of the knowledge on EDB Postgres with you. Especially targeted at Oracle DBA’s!
It will cost you one day and there is even a certificate (which you need to earn during the day) to show “I have walked the walk”.

It starts real soon, there are just very few places available, it’s free (!!) and it is – just down right plain cool – technoloy without hassle…
Bring your laptop, we provide a VM with a lot of tech pre-installed, a little bit like RAC-Attack or #RepAttack!

Visit this link: and sign up!

Looking forward to seeing you personally in either Frankfurt, Munich or Hamburg.

Birth of a user group conference…

Or, how post-conference blues hit.


You don’t actually get to witness these kinds of things to often. Yes, there was the birth of POUG conference, the passionate work of Kamil Stawiarski and the people he gathered around him. He did an awesome job and pulled it off.
Why then is this so special? Well, first of all because it is my native conference. People that have contributed for many years, working closely together with new members to create something new. I think it is kinda special.
Richard Olrichs, Ise Douwes, Luc Bors and Bart van de Laar formed the team that pulled it of! Kudos to them.

Work started already end of 2016… on the notion that this conference was being organized, there was a small Twitter bombardment to recruit as many of the interesting international speakers to come and join us. This helped create a fabulous agenda, covering 81 (!!) sessions and 3 keynotes over 2 days in the spectacular setting of “De Rijtuigenloods” in Amersfoort.

Importance for NL

We have (finally) done it! The Netherlands have experienced their very first Full Stack Oracle Conference ever! I have said this many times before, and I will say this probably many times again, this is so very important for the spread of knowledge, the exchange of experiences and cross-pollination between countries!
We have never done this before… We have APEX World, which is, of course, super important! And we have SIGs, which are very important for people working within a specialization. All good, all very important! But our business is way to specialized already. If you never take the time to look over your boundaries to what your colleague is doing (for which you don’t have time on a day-to-day basis) you’ll get isolated and miss out on possible great idea’s, changes and inspiration. For this alone, events like these are so important. For a country / region (as we span Benelux) that is so active in IT, it is a nuisance to have to go to either the UK or to Germany to experience a conference like this.

It is _that_ important…

One personal thing… nl.OUG (this is the brand new name for OGh, which also symbolizes a new start to me) focus on talks on (end-) user experience, in effect, partners with end-users coming to share project briefs… Good in itself, but not what I would applaud as main focus. These conferences – to me – are about learning and the best learning comes from professionals sharing either best practices or telling about technical implementations of technique. These stories are obviously always very welcome, but are no main focus…

My personal experiences

— International scene

As an active member of the Oracle community, I tend to know a number of people, spread out over this globe. One of the joys of a general conference is the fact that many of these people also participate. This leads to many happy encounters. With Oren Nakdimon from Israel, to Sandra Flores from Mexico, with Tim Hall, aka. Oracle Base, Maria Colgan & Brendan Tierney and therefor with Chris Saxon, more than 2rds of the Ask TOM-team!! And even many more famous speakers from home and abroad. It was a very special feeling to meet all these beautiful people on my home turf!

— Followed sessions

I didn’t get to follow many sessions, partly because of the many people I met and wanted to catch up with and partly because of, well, other responsibilities…
And perhaps a bit because of the fact that the ratio between serial sessions and parallel sessions was a bit off.
I did get to see:
The keynote by Maria Colgan highlighting the many things you can do with an Oracle database
Investigating the performance of a statement via the SQL Monitor report by Toon Koppelaars, which is always insightful!
Moving Oracle data in real-time – The 3 fundamental principles of Oracle replication by Jakub Sjeba from Dbvisit, which proved to be an excellent basis for my own session, later that day
Blockchain on the Oracle Cloud, the next big thing by Robert van Mölken, who helped me understand the technical side of the Blockchain technology.
It’s a wrap by Lucas Jellema, who did a great job at really zooming out and looking at the bigger picture.

— My sessions

I had the lucky opportunity to present even 2 sessions in Amersfoort.
Migrating your Oracle database with almost zero downtime
Comparing PostgreSQL to Oracle

Both sessions were well attended and interactive. I enjoyed it very much and, judging from the reactions and interactions, I guess the attendees too. Thank you for attending!!
Obviously I am happy to see the uptake of PostgreSQL and EDB Postgres in the Benelux. As said with “horses for courses”, Oracle has it’s playing-field, but so does PostgreSQL, and probably bigger than it is today 🙂

And now, the future…

This was 2017, this was the kick-off, the very first one.
With the buzz and with the post-conference blues…

It now is time to look to 2018, start preparing. Gathering lessons learned, inventorise feedback and make plans.
Whatever the outcome, there can only be 1 plan! “nl.OUGTech18″ or “Tech Experience 2018” we need to make sure the messages reaches further and wider.
With over 250 attendees for a first event, we aim for over 500 for the next event. There are more than enough potential participants in our region to pull this of.
The basic structure is there, the first succes is there, let’s do this!!

See you all next year!!
(or hopefully sooner)

Hey JAVA-developer, why don’t you love your database

Why this post?

Partly, this blogpost is a result of a promise to Lukas Eder. Basically my vision adheres quite nicely to the “Thick Database” driven by Bryn Llewellyn and Toon Koppelaars who, understandibly, drive this from an Oracle perspective.
It –more than of course- also nicely fits EnterpriseDB or even vanilla PostgreSQL database landscapes.

There is apparently still so much confusion in the world on the how, why and what of good application development and architecture that I decided to chip in my bit. I think I have a bit of an idea on how this aught to work and I also think it is not a half bad idea, plus a couple of people whom I highly regard, seem to agree with it. So here goes…


Traditionally there is no big love between application developers and their persistence-store. I don’t really know why because I never found the opportunity to do a real inquiry, but I think I have a reasonable understanding.

Basically there is constantly the enormous pressure of delivering new features and functionality. So much even that the basic development work, the more “boring” and “time consuming” things -why pay now, if you can also pay later- get postponed. Things like peer-reviews, (integration) testing, technical design… Basically, more people means more features.
If even these things get too little attention, why would something like an overpriced library-box get more attention? Not to mention these DBA’s you need to pass to even get close(r) to this library-box…

Here are my four reasons why I think
it should deserve a chance!

1. Easier

Plain and simple. It is easier. If you take a structured query language like PL/(pg)SQL, it is basically easy. Founded on the programming language ADA, it is easy to understand and one can quite easily build a number of routines, procedures, packages, functions to let the database chop and glue data and just deliver the results for your application to consume.
It saves you the time of having to (re)write some of this more complex stuff in your application or perhaps even over a several applications.

2. Quicker

As said under the first point: build once, use many times. By creating mechanisms in the database, you get the opportunity to think about the separating data manipulation mechanisms from data representation mechanisms and where you want to put which specific function. Of course, this decision process takes a little extra time in the beginning, but will repay many times over as your projects grows and gains meaningful complexity (is there something like “meaningful complexity”, well, yes…).

Quicker also is in operational response times. Querying a stored procedure will bring agility to your application in a sense that this stored procedure will be much quicker in getting you the answer than if you do this in a distributed (middle-ware) environment. These stored procedures can be accessed through REST-endpoints, giving flexibility and the possibile desired disconnect between the database and the application layer.

3. Cheaper

Powerful, because you are and you remain close to the data. No data transportation overhead, no latency. These kinds of slimming down, mean less requirements to infrastructure and distributed capacities (either hardware or (virtual) “cloud infrastructure”. This slimming down frees up budget which can then be spend on the more meaningful bits and pieces of your application.

4. More consistent

Finally, I think this approach brings more consistency. As you do things near the data it lives on, near the processing power you depend on, you also get single access paths to specific bits of your data, to specific constructs that drive the value of the application you are building. Through this, it does not matter from where you call this service, REST-endpoint, stored procedure, or whatever you call it, you always get the same answer, driving a consistent decision process based on that application.

And if ever something changes, there is also just one place for you to ensure these new requirements are added. Voila, consistency throughout your application landscape, as all that depends on this data-set gets this uniquely updated information.

The magic of working together

There is a lot of misunderstanding between DBA’s and Developers. I have been in both roles at some point and I have seen this happen first hand. One of the things, though, in that force field, I have learned, is the power, the joy and, through this, the magic of working together.
In the end, we all have the same goal, which is furthering our business by being the best at what we do. This means, for a developer, meeting feature request, short development cycles, quick delivery and as much as possible, get it right in one go. For a DBA this means making sure the database stays consistent, performant and available. And, in extension of that, for operations it means that the final product must be easily and quickly deployable to enter into an uneventful and dependable life-cycle.

Bringing together these seemingly conflicting disciplines is fun! By investing a little time in exploring the other disciplines, you will find common drivers, in a sense that everyone want the same thing. By getting over nearly religious initial differences, you will find magic in the combination. You will reach your goals earlier with the bonus that your co-workers will also reach their goals earlier and have a better end result than you dreamt possible.

True JAVA-Champion

Coming from another world, I do not know the requirements for becoming a JAVA-Champion. I imagine it to be not too much different from other recognition programs out there… But…
If you create more features and functions and you are able to run your application with greater concurrency on (way) less platform-power. Thus increasing the RIO on your application, this makes you a true Champion of JAVA and your business!! If you are able to combine this with some magic in your cooperation’s…
Believe me, it is more fun in the end too!

Containerization, do we need container-carriers?

In maritime logistics containers and container carriers are not really new.

Sitting in the plane, the following thoughts occurred to me…

In fact, containers in IT are a concept which is 1-on-1 derived from these physical containers.
We have seen and read many good and informative blog-posts and presentations about this. Obviously there is a lot of confusion about this as well. In my opinion you should be careful to mix and match too intensively. I think containerization and micro services, for instance have a lot less in common that some would lead you to believe.
This though is not what I wanted to discuss.

I would want to argue that one can containerize a stack too deep (or too high, depending on your viewpoint).

A container, typically, is an isolatable element which can be stacked upon another isolatable element. For instance, a Webserver is stacked upon an instance of bash, stacked upon it’s dependencies, creating an container stack which is capable of serving http-requests at port 80 of the up-address inherited from the IP-stack underneath the bash-instance.

Well, logical. Repeatable, but in a sense also complex, complexity by the sheer number of layers that compromise the stack.

Wouldn’t it be an idea to extend this train of thought and also introduce container carriers?

Just like in the analogy with container carriers in maritime logistics, these would be larger founding blocks on which various containers can be stacked.

  1. How would this differ from a setup with a regular VM? You would still have the lightweight, easily transportable qualities of containers.
  2. How would this differ from just stacking containers to create this? It would enable further development of seamless integration of the founding layers of what this container carrier is made up of, improving stability and specialization.

It eliminates the feeling of wheel-reinvention that for me, somehow still remains lingering around software containers. With the ever growing adoption of container technology, as the foundation for cloud-infrastructure, it can for a quick cost-saver.

My thought-train put to paper. Hope it helps someone, somewhere, somewhat…

Riga Dev Days 2017, new experiences in many ways.

Riga Dev Days 2017


It has been a while since my last blog-post.
One of the reasons is my shift from closed to open source software, databases more specifically. More on that in a later blog-post.

The reason for already mentioning this is this strange hybrid (what a popular word, these days) situation that I am in at the moment.
Thanks to the super enthusiastic, flexible and tenacious organization-team of the Riga Dev Days, I was able to participate.
Happily boarded the Air Baltic flight, I went on my way to Riga!!

Being new at the broader conference scene, I enjoyed being at a mixed source developer conference. Besides the usual suspects – some of which are my best friends – I got to meet many interesting new people.
One of the key phrases of the day is: “the more you learn, the more you realize you know nothing – John Snow…” and it’s true! You never stand to think about it, but the wealth of subjects is just tremendous and the combined knowledge at events like these is down right “Yuge, it’s awesome, tremendous!”

Day one

With a day like this, time flies. Between session (and during sessions) there are discussions, a bit of work and catching up to do.
Still I managed to catch a few sessions, like the one from Michael Hüttermann who made a clear and well rounded case regarding CI/CD in a DevOps world. A nice insight into the effort that goes into what’s behind the proverbial “push of a button”.
Another example was that by Marcos Placona about the many (and very basic) things that you have to keep in mind wen building apps. There is no silver bullet and the best you can achieve is to discourage the hacker so much, they move on. Much like securing your house, do to speak.

The day ended in the medieval basements of Riga, where we had some really good medieval food. Life is good…, well…, it has it’s moments!

Day two

The keynote address by Edson Yanaga, which kicked off day two of the Riga Dev Days, was quite interesting.
Shortening development and deployment cycles and shrinking feature release sets actually helps improving software and deployment quality by creating faster and more accurate feedback loops. By looking at these concept in this way, buzzez like DevOps and Agile actually get some hands and feet. One of the lessons, though, is that doing things this way do not eliminate work or automagically solve various issues for you! It will help in getting predictability and continuity into your software development processes.
A nice eye-opening remark finally, was… “no, I don’t pay you to make something work on your computer, I pay you to make something work on my computer(s)!!”

Another talk I was able to attend was around Blockchains. Something I knew nothing of and was actually quite interested in. Nick Zeeb took us through a very lively and very animated tour of what actually a Blockchain is and what the awesome potential of this technology can be. I was impressed.

With this, the second day draw to and end and therewith also my turn “in the pit”. As this event is held in a movie-theater, every room had a sloped tribune, which was often packed with enthusiastic participants. I had the opportunity to share my thoughts on the comparison between PostgreSQL and Oracle.
The session was very well attended with a lot of questions regarding the possibilities of using these other technologies in scales that were not really considered before. You can find a recording of the actual presentation here as soon as it comes available.

Riga Dev Days was a good conference. I would recommend everyone to either attend or submit an abstract for their event in 2018!!

#Oracle cutting in inspiration and new business?

Over the many years Oracle has been leading the database world, I guess they are now taking something of a wrong turn.
Let me briefly fill you in on my thoughts.

Basically I see two “minor” shifts that are significantly indicative of this:

  1. Oracle Standard Edition 2
  2. Oracle ACE Program

Okay, so you might think I am crazy, but let me try to explain.

Oracle Standard Edition 2

Sometime last year, the long expected, anticipated…, dreaded perhaps even, change to the Oracle database licensing strategy was there.

Oracle Standard Edition (SE) and Oracle Standard Edition One (SE1) licenses were addressed.
There was A LOT of debate on this, I mean, A LOT. Discussions which ran all the way back to HQ, and were driven by passionate people inside and outside of Oracle, inside and outside of the Oracle community… To no avail.

It had been very clear for quite a long time that the SE / SE1 strategy was nothing short of unsustainable inside the Oracle licensing realm. Even though, Oracle SE and SE1 enabled many projects and customers to adopt the phenomenal Oracle technology for their projects. It has some limitations, but with smart thinking and smart planning, a lot of projects could be run with Oracle SE(1). “I am such a good DBA, I can even do it with Oracle Standard Edition!”
Alas, we now have Oracle Standard Edition 2 (SE2) with a new and upgraded price of US 17k (!!) making this solution rather out of the question for many of the projects meant in the above. Please note that SE1 already was a significant investment for some of the projects I have learned to know over the years in regions as the Baltics and Africa.
Yes, of course, I know you can do all of this “In the cloud”. But with the limitation that there are hardly any CSPs (Cloud Service Providers 😉 that enable you to make use of the “cheaper” Oracle license. If you want to leverage your local cloud vendor (mind my word-choice here) it’s BYOL (Bring Your Own License) and, voila, you’re done in for anyway.

Hence, the first significant “shift” in Oracle’s span of attention for new business, creativity and growth…

Oracle ACE Program

More recently there was also a change in the Oracle ACE Program. Which has also led to much debate. But… that bit of the change I am not referring too, I am referring to the bit that does not affect me directly…

Oracle has a small number of very highly appreciated and “industry leading” community advocates called “Oracle ACE Directors”. These people not only have a deep knowledge of everything that is happening in this corner “of the industry”, but are also very passionate about sharing this knowledge. Sharing with Oracle Users, sharing with stakeholders within the Oracle organization, basically, with everyone with a hunger for knowledge around the technology.

For this, these Directors had a few privileges. When the invested their time and their energy in traveling this globe to share, Oracle would support them in some of their travel expenses. This always had the air of “wow, they are paid”. Believe me, it was bare minimal support, just a flying ticket and a hotel-bed to a previously approved conference, when they actually were accepted to do a talk. Nothing shiny, nothing business-classy…

Until now. With the changes to the system, also these modest privileges for the Directors have seized to be.

There was my second significant “shift” in Oracle’s span of attention for new business, creativity and growth…

It has me worried… I should not worry, as it does not affect my day-to-day business… yet.

Albeit we have this cool tech, with PL/SQL, with APEX, with all the features, options and what not, to create solutions that could really better the word (I also firmly believe this).

Oracle is just closing this door, and my toes were still in the doorway, so that hurts.

This was my rant, hope it helps.

Password validation takes a while, how cool is that!!

You log in to your favorite web app and it takes a little while to get your login validated, or your password consumed, depending on your take on things,
You log in to your favorite APEX application, and after every 3rd shot, it takes a bit longer to retry

You are sure what you are doing and you are surely not drunk, but just mistyped the ****-password.

It is annoying, but is it?

I was at DOAG2016 and one of the closing keynotes was by the amazing Thobias Schrödel. He had an amazing show – as you need to call it – on IT Security and he also did some life hacking examples. Amazing to see how quickly an account can be hacked!

One of the examples shown there was how to quickly “break” a password by just letting a password hacking tool run randomly (brute-force attack).
And, of course, there are many ways to make your secure your environment with a lot of different opinions, for example;

  • Change your password regularly
  • Make it 16 characters, using at least two capitals letter, 4 numbers, two extended characters, at least 4 lower case characters, and so on
  • Salt it
  • Single Sign-on
  • Pepper it
  • Hash it
  • and so on and so forth

And I am relatively convinced some of these countermeasures actually add to security in a real-world scenario. You know, the kind of place where users en up having to create an elaborate booklet of those traditional yellow post-its with password, just to be able to do their daily job.

What is the point?

Well, actually, in the battle against complexity, just waiting a couple of seconds before your get your next try to enter your password already adds a whole bunch of security.
Your brute-force tool can generate and enter a gazillion different password in matter of minutes, but if each next attempt makes it had to wait 3 seconds, or even 2 for that matter, will slow it down in a way that it makes no sense at all anymore to even try.

It’ just a thought, hope it helps.

#DOAG2016, definitely a crazy week.

#DOAG2016, the largest Oracle Community gathering in Europe. Taking place in Nuremberg, at the Nuremberg Convention Center NCC, one of the more impressive places to hold such a conference, towering 4 stories high, with a big central atrium!!
It is a huge effort to get all of this together!

In this blog-post I want to highlight some of the crazy things I experienced this week… And… I did try to follow my own schedule, but I wasn’t overly successful.

Young talent

One of the things that was somehow quite clear this week, is that we have a lot of young talent out there, eager to learn and share experiences. It is not just the #NextGen “movement” of DOAG, of which Carolin Hagemann made me aware, but just young people on the conference itself.

Discussing “Young PL/SQL” at the unconference session made us all aware that our part of the IT trade is no very sexy and popular with the youngsters. This all despite what was mentioned above. In universities we train SQL, but we don’t train to create real-life business applications, leveraging the power of the one language that keeps SQL close to the data it feasts on, PL/SQL. But, more on that below (Thick Database Paradigm).
To promote PL/SQL, basically two ground requirements were defined:

  1. Create a free ‘PDB as a Service’ for schools;
  2. Inspire teachers to talk about data centric computing

By finding somebody to be regionally or globally owner of this quest, it should be possible to get young professionals as familiar using PL/SQL for creating performant and business-ready applications as they were familiar using Microsoft Excel to do their accounting “back in the days”

ACE program

“There is a disturbance in the force!”

For everybody not acquainted with the Oracle ACE Program by the Oracle Technology Network… You should be!! Please read up, as it is an incredible cool initiative.

The disturbance, you ask?
Well, to retain your “status”, Oracle expects you to do “stuff” and this “stuff” is then evaluated on a yearly basis. Basically the initiative, the disturbance, is to get some transparency in “the stuff”. And, as always, everybody wants change, but few actually are good at “change”. There are rimples and things that change, but in the end; everything will be fine, unless, obviously, when it will not be fine.


I was honored to (co)host to talks at #DOAG2016:

Bad Boys of Replication – Changing everything…
With Oracle ACED and good friend Björn Rost, about an intense migration project we did some time ago. We were even offered to host our talk in Tokio, the biggest hall at DOAG!

Saving lives at sea at an industrial scale using Oracle Cloud Technology
An insightful (at least I like to think so) talk with my colleague Oliver Limberg. The talk is about the rapid development of a global portal for the maritime logistics branch.

I had a blast, and I hope you did too!

Community spirit

Oracle User Group conferences are about sharing and are about fun. Mr. Martin Widlake wrote a good post about that.

Apart from all the “more formal” things that happened, there were quite a few extracurricular activities, mostly involving an Irish Pub or a restaurant.

This all may sound quite funny and exciting, and, yes, it is alto talk with your co-workers: “Oh, hey, you are going to have fun and party all week!” Of course it is not a drag and a bore, but it has very profound function!
Whenever you run into trouble, these are the exact same people that are not only able, but probably also inclined to help you out, as you would help them out, as friends do among each other. In the end, they, you, your boss and your clients benefit. This is not to be underestimated too much.

The extra, special bit, that DOAG offers are the so called “unconference sessions”.
Not scheduled, no slides, nothing official, just getting together and discussing subjects of interest. Our “Young PL/SQL” was one of these “unconference session”, which turned out to be a great (and valuable) success!

Meeting people

Just to name a few, heroes of long and of yet to come for #DOAG2016:

Dietmar Neugebauer
Frank Dernoncourt
Joel Kallman
Johannes Ahrends
Kamil Stawiarski
Laurent Leturgez
Maja Veselica
Marcel Hofstetter
Piet de Visser
Sabine Heimsath
Stefan Kinnen
Stew Ashton
Uwe Hesse
Zoran Pavlovic
And alle the ones I forget to mention here!!

Thick Database Paradigm

Noting new in IT…

Well, no.

The Thick Database Paradigm (opposed to the “No PL/SQL Paradigm”) is nothing new. We have actually all been doing this since the eighties. Program your business rules, your constraints, everything that makes sure that your data is all that you want it to be, close to that data.
There are so many reasons that speak in favor of this approach that it is nearly overwhelming and deserves at least a book in itself. But, let me make a small attempt to highlighting a few here:

  • spare yourself network bandwidth, by not sending data all over your network to be processed
  • safeguard your data inside the (Oracle) database, so it can be protected by all that has been invented to do so
  • Transact data where it lives and combine and aggregate it there, you will be amazed by the efficiency
  • Remind yourself why you used to think “business logic in middle teer” was a good idea

If you leave possibile religious believes aside, there is no other conclusion possible then that the reinvention of “Thick Database” is the (re)discovery of 2016, right from the time when IT still made sense.

Yes, there are cases where an “Enterprise Service Bus” makes sense, but, as with every technology withing IT, it has a very specific area where it actually adds value or even makes sense. At best, a lot less than all the places where it is used currently!
Not to get carried away in this joyful blog-post, I will leave this topic at this.

The end

I hope to see you at the next Oracle User Group conference, somewhere… Please watch for the asterisk at his page for the conferences that I will attend.

tnsnames.ora, keeping your connections under control

There are a lot of ancient things that prove to be still valuable today.
Recently I came across something, which I thought I could or should share here.
Your tnsnames.ora file, centrally managed in a distributed environment.

This solution applies whether you are working with the Oracle Instant Client or with the full blown setup of the client software.

Imagine you have an environment with a reasonably big bunch of PC’s. Wether you are running Linux or Windows, or if you are running some Terminal Server Forrest, where deploying, packaging and launching applications cost an arm and a leg. To keep consistency across the environment, shortcuts are not an option.
I have seen the most exotic solutions, distributing a tnsnames.ora file. Pushing versions of tnsnames.ora out to workstations, have login-procedures check and copy files… Basically every trick in the book will, at one time, get you in the situation where you have a client, connecting to a database, containing something other than the end user expects… With the appropriate consequences…
It is my firm believe that the best way still is not to distribute the file.

The coolest thing (therefore) would be to have something (obviously extremely simple), containing all your database connection aliases.
Of course you can than add each and any every facility to maintain and update this file. Be it version control or automatic deployment. Basically this one copy of your file is the source of all truth, which of course adds some importance to the file itself.

(Re)introducing the tnsnames-parameter ifile=

With this parameter you can define an instance or form of tnsnames.ora file, and store it anywhere you can reach from the endpoint, where your Oracle client is installed.

the most simple version of using ifile = here would be:
ifile = <mount_point>/path/central-file.ora

you can multiplex your tnsnames.ora:
ifile = <mount_point_1>/path/central1.oraifile = <mount_point_2>/path/central2.ora

You can nest tnsnames.ora as needed:
ifile = <mount_point>/path/general-file.ora
In general-file.ora:
ifile = <group-specific_mount_point>/path/specific.ora

These options give you a very good set of opportunities to organize your redirection-setup the way you need it.
To me, having this centralized tnsnames-setup, brings advantages in connection troubleshooting as there are no occurances of file-discrepancies.
ifile = works and you get connected… or it doesn’t, no chance of missing that last update.

Hope this helps…