Oracle Linux 8 (OL8) : Vagrant and Docker builds for 19c Database

A couple of days ago I mentioned the certification of Oracle database 19c on Oracle Linux 8 (OL8) with UEK6.

I’ve had a bunch of OL8 articles and builds for a while, but up until now they’ve included warnings to say they weren’t certified. Over the last couple of evenings I’ve made some changes, so I thought I would summarise then here.

Database 19c on OL8 Article

My article on installing 19c on OL8 (from July last year) now includes the new preinstall package. It also mentions that the installation will work without patches, but it will not be supported unless you include the 19.7 patches, and are using UEK6.

Oracle Database 19c Installation On Oracle Linux 8 (OL8)

Vagrant Build

I’ve had a vagrant build of 19c on OL8 since last year. This has been amended to use the new preinstall package, and to optionally include the 19.7 patches if you’ve downloaded them. By default the patch script is commented out, so folks without a support contract can still use the build. This isn’t meant to be a “supported build”, so I’m not personally bothered about the patches for it, but it seemed a little wrong to not include them, even if it is lip-service.

The base box is ‘bento/oracle-8’, which hasn’t been updated to 8.2 and UEK6 yet. Once again, this doesn’t phase me. The ‘bento/oracle-8’ image tracks the latest release (8.0, 8.1, 8.2 etc.), so at some point it will updated to the latest spin and UEK6.

My go-to Vagrant build has typically been the “ol7_19” build. I’m now going to switch to the “ol7_19” build.

I’ve also added 19c Data Guard build on OL8.

Container (Docker/Podman) Build

Similar to the Vagrant build, I’ve updated by Docker build. It also uses the new preinstall package and includes and optional patch script. I’ve also switched back from the “oraclelinux:8” image to the “oraclelinux:8-slim” base image, which means I had to make some changes, like using “microdnf” instead of “dnf”. Similar to the vagrant build, I’ve left the patch script commented out by default, because I only use this build for playing and demos.

My go-to container combination was “ol7_19” plus “ol7_ords”. I’m now going to switch to “ol8_19” plus “ol8_ords” for running APEX 20.1 using containers.

What’s Next?

I’ve got a few things in the pipeline.

  • RAC on OL8 Vagrant Build. I’m unsure at the moment if I will include the patching for this, as it makes it more complicated. I might just stick with the base release. It’s definitely not production, so I’m not sure how much I care about making the build slower and more complicated.
  • I’ve got some Podman stuff I want to talk about that relates to both Vagrant and Docker, but that is better served in a separate post.



PS. I don’t feel I should need to say this, but experience tells me I should. This stuff on GitHub is just a playground for me. There is no error checking. It’s purposely kept simple so people can read it easily. It’s not production ready. I don’t support it. It’s not scripture. If you find value in it, that’s great. If you don’t, don’t use it. 🙂

PPS. I used the pirate costume as I thought it looked funny. There was no deeper meaning behind this. It was nearly a Pharaoh.

APEX 20.1 : Vagrant and Docker Builds (and Some Comments)

About 2 days ago we saw the announcement of the release of APEX 20.1.

I normally set myself quite an aggressive timetable to get new APEX releases to production. So much of what we do lags behind the curve, to the point where I just want to see it burn, so when I get the opportunity to force the issue, like I do with APEX, I do.

In my typical fashion I move all my builds to the latest release and kind-of forget any prior release ever existed. As result, you will see all my Vagrant and Docker builds have been updated to use APEX 20.1, along with updates of OpenJDK and Tomcat.

The basic installation is the same as always (here), so there is no drama there.

Next week I’ll start upgrading a few of our development environments, and check everything looks OK. Assuming I hit no problems, it will be full steam ahead. Fingers crossed.

The new features are always a big draw for most people, but I tend to start by looking at the deprecated features and desupported features.

  • When I saw APEX_UTIL.STRING_TO_TABLE and APEX_UTIL.TABLE_TO_STRING had been deprecated I was about to lose my shit, then I saw they have just been relocated to the APEX_STRING package. Composure regained. 🙂
  • The desupport of some of the productivity apps is a good thing. Some of them were not so good and having a long list of Meh, is not as good as a smaller list that offer something better. Just my opinion.

As far as the new features in the announcement, here are my initial (and uneducated) thoughts.

  • Redwood. I feel a little “Meh” about this. I don’t love it. I don’t hate it. I guess it makes sense to bring it in line with the current Oracle thang! 🙂 I would have had a little more contrast on the icons. They look quite washed out, but I am not renowned for my design aesthetic. 🙂
  • Faceted Search Enhancements. Love this! When I saw Mike Hichwa demonstrate the first iteration of this I had a When Harry Met Sally – Restaurant Scene moment in my head. All additional functionality is welcome. I think Faceted Search is a great and some might say killer feature.
  • Friendly URLs. My first reaction was, “Oh thank God!”. This was quickly followed by, “Oh my God!”. The thought of what some people will name their page aliases fills me with dread, but it is a welcome addition.
  • Native PDF Printing. Nice.
  • Mega Menus. Love it. The traditional side-bar menu is fine for little apps, but it’s a bit dated, takes up a lot of room and is nowhere near as flexible as this looks. I think I would have made it the default choice, but I can see why sticking with the old style is probably the safer option. 🙂

There are a bunch of other things in the release notes that sound interesting, including remote application deployments using REST Enabled SQL, but I’ll leave you to discover those for yourself.

It’s early days, but this looks like a really nice release… Again…



APEX 19.2 : Vagrant and Docker Builds

I’m sure anyone who cares knows that APEX 19.2 was officially released on Friday. I did an upgrade of one of our development instances straight away and it worked fine. it’s subsequently gone to a bunch of other development instances. I’ll be pushing to get this out to production as quickly as possible.

Over the weekend I worked through a bunch of my GitHub stuff.

Vagrant : I’ve updated all my Vagrant builds to use APEX 19.2 and the latest versions of Tomcat 9 and OpenJDK 11. I was using newer versions of OpenJDK, but it seemed a bit silly, so I reverted back to the long term support release. I tried updating the base box to ‘bento/oracle-7.7’, but it kept giving me timeouts, so I’ve reverted back to ‘bento/oracle-7.6’ for the moment.

Docker : Same as above, I’ve updated all my Docker builds to use APEX 19.2 and the latest versions of Tomcat 9 and OpenJDK 11. I noticed oraclelinux:8-slim was behaving a little strangely. I thought it was a PATH issue, but I need to spend some time to understand what is happening. It seems you can’t run basic commands like dnf during the build phase. It’s probably something stupid I’m doing, but for now I’ve switched from oraclelinux:8-slim to oraclelinux:8. Just making that switch made everything work as expected.

My Docker builds within the company have gone through a similar process, so as I’m rolling out APEX 19.2 to the databases, I’m also switching the ORDS containers over to the new images. You gotta love containers!

I guess I’ll be working through all this again when the next version of ORDS and SQLcl drop. 🙂



Vagrant Build of AWX on Oracle Linux 7 Using Docker-Compose Method

I may need to do a bunch of scripting related to our load balancers, and I have the choice of using the API from the servers directly, Ansible Core or the web services exposed by AWX. I wanted to play around with AWX anyway, so that seemed like a good excuse…

First step was to install AWX. It’s pretty easy, but I must admit to spending a few minutes in a state of confusion until I rebooted my brain and started again. Turning things off and on always works. I’m an Oracle Linux person and “I do Docker”, so the obvious choice was to install it using the Docker-Compose method on Oracle Linux 7 (OL7).

The post includes the basic Docker setup, but if you need something a little more, check out the installation article and video.

If you don’t care about the build and just need AWX up quickly, you can use this Vagrant build that does everything for you, including Docker and AWX on Oracle Linux. 🙂



Video : Vagrant : Oracle Database Build (19c on OL8)

Today’s video is an example of using Vagrant to perform an Oracle database build.

In this example I was using Oracle 19c on Oracle Linux 8. It also installs APEX 19.1, ORDS 19.2, SQLcl 19.2, with ORDS running on Tomcat 9 and OpenJDK 12.

If you’re new to Vagrant, there is an introduction video here. There’s also an article if you prefer to read that.

If you want to play around with some of my other Vagrant builds, you can find them here.

If you want to read about some of the individual pieces that make up this build, you can find them here.

The star of today’s video is Noel Portugal. It’s been far too long since I’ve seen you dude!



Enterprise Manager Cloud Control 13.3 Vagrant Build

A little short of a year ago I knocked up a Vagrant build to prepare an environment for practising Cloud Control 13.3 installations and upgrades. This just automated the creation of the environment and installation of the database, ready for me to start playing around with the Cloud Control bit. At the time I released these articles.

I didn’t mention anything about the Vagrant build as it didn’t do much more than build the database, so it didn’t seem worth mentioning. It was just a convenience for me.

More recently someone pointed it out on Twitter and I made a note to myself to “finish it off” and make it do a full silent build, then kind-of forgot again.

A few days ago I had a self-induced problem with our Cloud Control server, and I realised I didn’t have the best plan of action for a complete rebuild scenario. I had backups, so I didn’t need to do a rebuild, but that doesn’t stop me wanting to be able to do it, so I did the following things…

I scripted a silent build of the work environment we use. I put together a general article to show how to do a silent build of a simple installation too. If you’re interested you can see it here.

I wrote some EMCLI scripts to do most of the tasks I needed for a complete rebuild. We already use EMCLI for some of the stuff, like jobs, but I filled in the gaps where I had been a bit lazy. Those are all checked into a company Git repo, and they are quite specific to what we need, but there are some basic EMCLI examples available here, if you are interested in getting into EMCLI.

Finally, I made my Vagrant build a fully automated Cloud Control 13.3 build on Oracle database 18c. According to the certification matrix, Oracle 19c is not yet certified for the repository database (but someone on Oracle-L said this certification is imminent (See Update)). If you are interested in playing around with Vagrant, you can find it here. I’ve managed to get away with 6G of memory, but that makes it chronically slow. The more memory you can throw at it the better. 🙂

I didn’t really expect to be revisiting this stuff a year down the line, but it was born out of necessity, or at least necessity for my peace of mind. 🙂



Update: The OMS is now supported on Oracle database 19c.

My Vagrant Habit

I’ve posted a lot about automation and Vagrant over the last year. It’s got to the point where I find it quite difficult/annoying to create a VM manually anymore. I hadn’t really noticed this until a couple of days ago…

I wanted to try some stuff out with Fedora 30, which is currently in beta. I had a look and couldn’t find any Vagrant boxes for Fedora 30, so I downloaded the ISO image and started to do a manual creation of a VM. It wasn’t very long before I got really annoyed, because it felt so clumsy, and there were so many silly little things I had to do that Vagrant either does for me, or are really simple to configure with Vagrant. After a few minutes I threw my toys out of the pram and started to read up on creating a Vagrant base box. In all this time I had never created one for myself. Turns out it’s really simple.

Once I had that in my Vagrant box list, I could quickly bang out a number of tests. Happy days…

So what did this teach me? It seems I’ve become totally and utterly intolerant of doing anything manually! 🙂



Java and Tomcat Updates : Vagrant and Docker

Yesterday was another update frenzy.

I already mentioned the update to VirtualBox 6.0.6 in yesterday’s post.

At the same time we got the quarterly updates to Java and I noticed a new version of Tomcat, so I downloaded OpenJDK 12.0.1 and Tomcat 9.0.19 and added them to my Vagrant and Docker builds.

If you are interested in this stuff, you can check it out here.

Remember, this is just my playground stuff. If you find it useful, that’s great. If not, there are plenty of other people messing about with this stuff. 🙂



ORDS, SQLcl and SQL Developer 19.1 Released, and some Vagrant and Docker Stuff

Yesterday Kris Rice put out some tweets to say ORDS, SQLcl and SQL Developer version 19.1 had been released.

As usual I downloaded SQL Developer and put it on my desktop, and I started the process of updating my Vagrant and Docker builds. If you are interested in that stuff, you can find those updates here.

You won’t be surprised that these updates are pretty simple. Just replacing the environment variables with the new version numbers. Such are the joys of automation. 🙂

Happy upgrading!



APEX 19.1, Vagrant and Docker

Last night Joel Kallman announced the release of APEX 19.1.

It wasn’t exactly a surprise as the APEX 19.1 Early Adopter site was shutdown and there was a maintenance window on, which is running APEX 19.1.

I downloaded the 19.1 software and plugged though my Vagrant and Docker stuff bringing it up to date. If you are into that stuff you can find it on my GitHub.

I guess this means I can start the process of upgrading everything at work on Monday. 🙂