Why no GUI installations anymore?

I had the following comment on a RAC article yesterday.

“this way of training is not good. please train as previous method.”

I believe the person in question didn’t like that I no longer do those massive articles showing how to install RAC using the GUI. Instead I do automatic silent builds using Vagrant and shell scripts. My recent RAC articles just describe the Vagrant builds. I’ve written about this before, but I think it’s worth repeating.

GUI is dead to me!

For a long time I was only running the GUI installations to get screen shots for articles. All the installations I did at work were scripted. This started to feel wrong, as it felt like I was promoting something I don’t do, and don’t believe in. As a result, I stopped putting the GUI stuff in most of my articles also. Instead including the silent installation and configuration commands, and typically giving a link to my Vagrant builds.

GUI takes a long time!

I run lots of builds. Every weekend I am running Vagrant and Docker builds almost constantly on OL7, Windows 10 and macOS hosts. RAC builds of various versions. Data Guard builds of various versions. Single instance builds of various versions. Docker builds of Oracle and non-Oracle stuff. If I had to do those builds manually using the GUI I would be lucky to complete a couple a day.

Doing archaic style builds and gathering screen shots of them takes a long time, and that’s wasted time.

What about people learning the tech?

If you are trying to learn something new, you should start straight away using the silent builds. Try to ignore the GUI stuff even exists. Why?

  • Doing something like a RAC build using the GUI is really hard. There are loads of things to click on, and it’s really easy to make mistakes along the way. Typos and picking the wrong options etc. It’s far easier if the only thing you are having to change is the parameters in a property file.
  • If you do make a mistake in a manual build and have to start again, it’s soul destroying. Throwing away a days work and having to start again makes you want to cry, especially if you don’t get much time to do this anyway. I have people contacting me, spending weeks trying to fix things that are beyond repair. When they finally bite the bullet and start again their mystery problem goes away. In contrast, restarting an automatic build is no big deal. Throw it away, start a new build and go and grab some food. No drama.
  • The scripted builds make the individual steps incredibly clear. You can look at the individual scripts in order and see what is happening, and just run the builds and prove they actually work, rather than having to trust things haven’t changed since the article was written.
  • No professional DBA should be using a GUI for anything, if there is a possibility to script that action. If you have DBAs or consultants working that still use GUIs, you should be questioning if they are really the people you want with hands on your systems. Their work will be inaccurate, and they are wasting your money by wasting your time. In some cases taking days to complete what can be done in minutes. If that is the way we expect people to work, why teach them a different way of working as a beginner? It feels wrong to me. You are getting them into bad habits from day one.
  • You are going to have to learn the scripted way to build things at some point, so why not start there. I think we’ve been fooled into thinking the GUI is easier, but it’s really not. It is a burden, not a help for most things.

If you want to still use the GUI, that is your choice. Just don’t expect me to enable your bad choices, and please don’t try and get a job working with me. You are not welcome. Sorry, but not sorry.

What about people who are not focusing on DBA work?

Then the GUI is an even bigger disaster. If you are a developer who just needs a database to work with, use an automatic build to give you what you need and start doing the stuff you care about. Why would you waste time learning to install a database? Fire up an autonomous database for free. Use a vagrant build or a docker image to give you what you need.

I really don’t see a reasonable defence for using a GUI for basic, repeatable administrative tasks anymore.


This is how I feel about it. If other people feel differently and want to still keep producing those GUI build articles, that’s their choice, but I would urge them to consider the message they are sending to beginners. In this day and age, the last thing we need is a bunch of people making DBAs look like dinosaurs, and wasting time on stupid stuff when they could be spending that time preparing for the future!



Update: Based on my reply to a comment here and on Twitter.

  • Companies demand self-service calls to do everything. They don’t want to ask a DBA to do anything. The DBA must help provide these self-service features, which will require scripting.
  • Developers need Continuous Integration and Continuous Deployment (CI/CD). That is all scripted, including creation of short lived databases for some Test/QA systems.
  • Companies demand infrastructure as code. All config and builds in source control (like Git). You can’t put button presses in Git.
  • Companies are not paying you to waste time. If we did a race, with me doing a Vagrant build of RAC and you doing it manually, I would finish several hours before you. That’s wasted time and money. I’m not sure how your company thinks about this time usage.
  • I guess it’s harder to invest the time if you only ever do something once, but the counter argument is you should be confident to replace everything if something breaks. I am never confident without a script.

If you are using a GUI to do something that can be scripted, you are failing. You may not have realised it yet though. I’m sorry if that sounds harsh, but it’s what I believe.