Oracle for Hipsters – The DBA installs Oracle 18c

Ok, I’ll admit it. The DBA is a bit of a Dinosaur and genuinely thinks that anyone under the age of 103 isn’t old enough to tie their own shoelaces, never mind buy their own coffee or Avocados. However he has managed to get his hands on Oracle 18c so what you see below is a quick and dirty attempt to install it on a VM

Here’s how he did it:

Oracle VirtualBox  configured with 4Gb Ram, 50Gb virtual disk partitioned as 8Gb swap, 42Gb everything else running Oracle Linux 7.5. Only other config is to give it a virtual network adapter and an IP address so that if necessary it can talk to the rest of the DBA’s network and if allowed the outside world.

The rest is simply “out of the box”

In case you haven’t noticed there”s a bit of an oracle theme in this post and no – the dba isn’t getting a dime from oracle for doing this. You’ll see why later. Anyway on with the show

Step 1 – create an os group and user. Just as any half decent oracle techie has been doing for years so create a dba, oinstall group and a user to go with them.

So in no particular order

root@orrible2 ~]# groupadd -g 500 dba
[root@orrible2 ~]# groupadd -g 501 oinstall
root@orrible2 ~]# useradd -d /home/oracle -g dba -G dba,oinstall -m -p
 <password> -s /bin/bash -u 500 oracle
mkdir -p /u01/app/oracle/product/18.0/dbhome_1
chown -R oracle:dba /u01/app


Now as anyone vaguely familiar with a *nix operating system goes, you might be wondering why I’m pre-creating the directory for my oracle home or am bothering too much with the permissions and ownership of it – all will be revealed soon my little Sith apprentices

Step 2 – Grab the install zip and download it to a temporary folder.

I’m grabbing the installation zip from a server on my local network. You could just as easily download it from oracle’s website and probably should. If you don’t know how to do this bit please go back to looking at cat pictures

sftp> get
Feltching /home/dba/Downloads/ to


Step 3. Now for the fun bit, and why there’s a big difference from previous versions  that leads me to call this “Oracle for Hipsters” or “Oracle for Retards”. You have to unzip it into the folder that will eventually become your $ORACLE_HOME

Also note that previously you can do everything under pretty much any user account. I’ve been lazy and used root. From now on everything needs to be done under your shiny new oracle account

[oracle@orrible2 /]$ORACLE_HOME=/u01/app/oracle/product/18.0/dbhome_1
[oracle@orrible2 /]$ cd $ORACLE_HOME
[oracle@orrible2 dbhome_1]$ pwd
[oracle@orrible2 dbhome_1]$ unzip /tmp/
... Below is just a small sample of the output

inflating: jdk/jre/lib/amd64/
inflating: jdk/jre/lib/amd64/
inflating: jdk/jre/lib/amd64/
inflating: jdk/jre/lib/amd64/
inflating: jdk/jre/lib/amd64/
inflating: jdk/jre/lib/amd64/


Step 4. Oracle still haven’t quite figured out how X11 works so set up your X-Windows display

[oracle@orrible2 dbhome_1]$ export DISPLAY=:0

And from another window, in case you’ve used su or sudo

dba@orrible2 dbhome_1]$ xhost +
access control disabled, clients can connect from any host


Step 5. Fire up the oracle installer. Feels just like old times now doesn’t it?…….

[oracle@orrible2 dbhome_1]$cd $ORACLE_HOME
[oracle@orrible2 dbhome_1]$./runInstaller


Step 6. Yaaay A GUI!

Now in all fairness it isn’t clear from the screen shot but the first option is whether you want to create a database or just do a software only install. I’ll be dumb and ask for a database. Sorry but the host for my VMs has just moved and I was still getting to grips with how to take screen grabs

Step 7. Desktop or Server?

I’m really not sure what the difference is. I suppose I ought to be honest as I’m doing this on a shitty little VM running on a rather old desktop. Then again I’m bloody minded so I’ll pick the Server option. If you’re doing this for real, even on a development box you should choose Server anyway

Step 8 – Advanced or Typical?

Only a retarded millennial chooses a “Typical” install of anything. Don’t be that millennial

Step 9. Enterprise or Standard Edition?

Hey, I’m not paying for it so Enterprise Edition please

Step 10. Set your $ORACLE_BASE

This is where life gets really dumbed down. In case you don’t spot it, take special note of the message underneath the text box where you can override the setting for $ORACLE_BASE:

“This software directory is the Oracle Database Home Directory”
“The Directory is xxxx/yyyy/zzz” - ie where you just unzipped it

This is why I call out 18c as “Oracle for Retards” or “Oracle for Hipsters”. At no point do you get to change it. Where you’ve unzipped this automatically becomes your $ORACLE_HOME

Step 11. Set the location for the Oracle Inventory.

Unless you are a Microsoft point’n’click jockey with the IQ of a cauliflower this shouldn’t need explaining. Just accept the defaults and move on

Step 12. What type of database do you want? Data Whorehouse or General Purpose?

Veteran DBA’s will remember this option from older installers or even the dreaded Database Configuration Assistant, that was nothing of the kind. In the real world you would be building your own database anyway so out of habit I always go for General Disaster Purpose

Step 13. Give it a database name.

The next screen is pretty easy, it just asks what you want your new database to be called and whether or not it should be a container/pluggable database or the old fashioned kind. I haven’t tried it but for database names I’m guessing oracle still haven’t forgotten their old VMS roots and still want to limit you to 8 characters or less. Something that still pisses off .Net and Java developers, especially the halfwits that love CamelCase……

Step 14 – Configuration Options

Here you can specify default character sets, how much memory to waste etc. One nice feature is that the installer is actually pretty clever and sets your default memory usage at an acceptable level. Compared to older versions that insisted everything had to be done in USASCII with 500% of available memory it’s nice to see oracle finally get something right

Step 15 – ASM or Filesystem?

And if filesystem, what directory would you like your database created in? Please remember this is just a ratty little VM so I don’t care about storage. If you’re doing this for real you should already have installed Oracle ASM or an even better form of storage management. Just ask your local psycopath sysadmin

Step 16- Register with OEM

If you’re unlucky or foolhardy enough to have installed Oracle Grid Control, Oracle Enterprise Manager or whatever it’s called this week then the next screen will allow you to register your new database with the OEM Agent. If you are unlucky like that or really enjoy pain then good for you. Some of us have had to use this bloated piece of crapware and genuinely think it sucks ass

Step 17 Recovery options

Do you want to enable archive logs, set up a flash/fast recovery area? If you don’t you’re a jackass so go back to your avocado on toast or mochachocalattespresso. And believe it or not my spell checker allowed that as a real word. How the hell else do you spell “toast” though?

Ok, I’ll also confess – I lost the screenshot for this one so here’s a picture of some kittens instead

Step 18 – Schema Passwords

Take the pain and set a passwords for each key account or be lazy and just set one. You should really be good and already have a password scheme or security policy in place but since I don’t care I’ll go for one easy password everywhere

Step 19 – Operating system groups

Oracle have either grown up or given in. Almost everything is set to the “dba” group by default so unless you’re the kind of person who stores their own urine in jars why argue?


Step 20 – Oracle Complains

Yep, that’s right. After getting this far, having made you fill in all those install screens, forced you to look up what some of the options mean ( or look up long words if you’re a Microsoft user) the oracle installer finally spits the dummy and tells you you’re doing it all wrong!

Now to be fair, at no point have I gone about this install in the correct way. I haven’t looked at kernel parameters such as shared memory or semaphores. I’ve completely ignored user configuration such as pam or ulimit and have completely wiped my bum on required linux packages

What I should have done is checked the pre-req’s or trusted my gut and configured everything the way I would for antiques like 9i or 10g

There are a couple of reasons why I didn’t though

1) This is an experimental VM so if it doesn’t work I can just flash it back and try again

2) This is Oracle’s own operating system. You’d kind of hope they’d at least get the basics right

3) Most of what it complains about is easily fixable – default kernel parameter settings such as file-max, rmem-default and a handful of others, alternatively some of them are so petty as to be laughable – your primary group isn’t “oinstall”, /bin/ksh isn’t installed etc

Apparently missing ksh or not having a primary os group of “oinstall” are complete showstoppers whereas not having your kernel configured properly is just meh. Go figure

In the end I just selected the “Ignore All” option and carried on

Important Enhancement request here – can we change the “Ignore All” wording in the installer to just read “Oh FFS, Not Again”

Step 21 – Tells you what you already know

If you get this far the installer will give you a summary screen of everything you’ve asked it to do. Alternatively just like oracle installers of old it’ll inexplicably crash with a segmentation fault, sometimes you just have to roll the dice…..


Step 22 – Might actually do something

If you have sacrificed enough chickens, avocados or project managers ( perfectly safe as all three are classed as vegetables) you might be blessed with it actually installing something

Step 23 – How to piss of a sysadmin

A good sign that things are working is when the installer comes up with that old chestnut asking you to waste 10 minutes running a couple of utterly pointless scripts as the root user. One of them installs a few environment setup scripts in /us/local/bin whilst the other just changes group permissions on the oraInventory directory

Yeah ok, they do a few other things as well but if you don’t have root privilege they’re a really cool way to ruin a sysadmin’s lunch break

Step 24 – Enjoy Galactic Domination

If you get to here, you’ve successfully installed Oracle 18c and may have even built a database. Doesn’t necessarily mean it works though so sit back, breathe a big sigh of relief …. and start installing the patches