8 years and counting…

I just noticed today is the 8 year anniversary of working for my current company.

I wrote a blog post about the interview before I got the job (here).

About 3 months after I started the job I wrote an update post, and clearly wasn’t too happy with the way things were going (here).

There was a rather unenthusiastic post about my four year anniversary (here).

Now here I am after eight years and I’m still having the same arguments about my role on an almost daily basis. It’s like a bad relationship I can’t break free from. Some sort of He Hit Me (And It Felt Like A Kiss) kind-of thing.

Let’s see what this next year brings…

Cheers

Tim…

PS. At least now I’m working from home, which is better.

PPS. Thanks to the people who contacted me out of concern. This is not a cry for help. πŸ™‚ You really don’t need to worry about me. Every job has pros and cons. This job has lots of cons, but there are some pros too. At the moment the pros still outweigh the cons (just about). If that changes, I’ll take a few years off work again. This is not drama. Just how I feel…

Video : Install Podman on Oracle Linux 8 (OL8)

In today’s video we’ll take a look at installing Podman on Oracle Linux 8 (OL8).

This is based on the article here.

You can see more information about containers here.

The star of today’s video is John King. John’s been on the channel a couple of times before. Once to do a message to one of his super-fans, a work colleague of mine who was impressed that I know John, and once for a regular “.com” appearance. I blame the wife for the terrible audio. πŸ™‚

Cheers

Tim…

Oracle Database 19c RAC On OL8 Using Vagrant

On Sunday 17th May I started the process of putting together a Vagrant build of Oracle 19c RAC on Oracle Linux 8 (OL8.2 + EUK). I figured it would take me about 20 minutes to amend my existing OL7 build, but it took the whole of that Sunday, every evening for the following week, and the whole of the following Saturday and Sunday to complete it. There were some late nights, so from an hours perspective it well over 5 days of work. Most of that time would have been completely unnecessary if I wasn’t an idiot.

First things first. The result of that effort was this build on GitHub, with an associated article on my website describing the build in more detail.

For the remainder of this post I want to describe the comedy of errors that went into this creation. These problems were not indicative of issues with the software. These problems were totally down to me being an idiot.

Changes when using OL8

The vast majority of the build remains the same, but there was one change that was necessary when moving to from OL7 to OL8. This became evident pretty quickly. When configuring shared disks and UDEV, I switched from using partprobe to partx. It did look like partprobe was working, but it chucked out loads of errors, and partx didn’t. I found out about this from Uncle Google.

There was also a slight difference in getting the UUID of a regular VirtualBox disk in OL8, but I had already noticed that on single instance builds, so that wasn’t a problem.

Where it all started to go wrong

So with those minor changes in place, all the prerequisites built fine and I was ready to start the Grid Infrastructure (GI) installation. I try to do these builds using the stock releases, so people without Oracle Support contracts can try them. In this case that meant using the 19.3 software. This really marked the point where it all started to go wrong. I knew this build was only certified on 19.7, but I continued anyway…

None of the 19.3 installers recognised OL8, so I had to fake the Linux distribution using the following environment variable.

export CV_ASSUME_DISTID=OEL7.6

The 19.3 GI software refused to install, saying there was a problem with passwordless SSH connectivity. I tested it and it all looked good to me. I searched for solutions to this on Google and MOS, checking out everything I could find that seemed relevant. None of the solutions helped.

For the hell of it I tried on older releases of OL8. I had the same issue with OL8.1, but OL8.0 worked fine. I figured this was something to do OpenSSL or the SSH config, so I searched for more MOS notes and tried everything I could find. After a very long time I reached out to Simon Coter, who came back with an unpublished note (Doc ID 2555697.1), which included a workaround. That solved my problem for the 19.3 GI installation on OL8.2.

The GI configuration step and the DB software-only installation went fine, as they had done on OL8.0 also. Unfortunately the DBCA was failing to create a database, producing errors about passwordless SSH problems. The previous fix wasn’t helping, and I tried every variation I could find, short of totally downgrading OpenSSL.

At this point I pinged Markus Michalewicz a message, hoping he would be my salvation. In short he confirmed the build did work fine on OL8.2 if I used the 19.7 software, so the writing was on the wall. Then I stumbled on a MOS note (Doc ID 29529394.8) that explained the DBCA problem on OL8. There was no workaround, and it said it was fixed in 19.7. There is always a workaround, even if it means hacking the Linux distribution to death, but the more you do that the less realistic your build is, so at that point I conceded that it was not sensible to continue with the 19.3.

When I write it down like this it doesn’t seem like a lot, but all this took a long time. I was trying different Vagrant boxes, and eventually built some of my own for OL8.0 and OL8.2, to make sure I knew exactly what was on them. Added to that, many of the tests required full rebuilds, so I was waiting sometimes in excess of an hour to to see a success/fail message on the next test. It was soul destroying, and I nearly gave up a few times during the week.

A New Hope

Once I decided to go with the 19.7 patch things moved pretty quickly. I had the 19.3 GI installed and configured and the 19.3 DB software installed, so I added in a script to patch the lot to 19.7, and the database creation worked fine. Job done.

I cleaned things up a bit, pushed it to GitHub and put together the longer description of the build in the form of an article (see links above).

Pretty soon after I put all this live I got a comment from Abdellatif AG asking why I didn’t just use the “-applyRU” parameter in the Grid and DB software installations to apply the patches as part of the installation. At this point I felt a mix of emotions. I was kind of frustrated with myself for wasting so much time trying to get 19.3 working in the first place, then annoyed at myself for being so blinkered by the existing build I hadn’t seen the obvious solution regarding the patching. Why build it all then patch it, when you can do it right first time?

The conversion of the build to use the “-applyRU” parameter with the runInstaller and gridSetup.sh calls was really quick, but the testing took a long time, because these builds take in excess of 90 minutes each try. Things pretty much worked first time.

Now that I was effectively using 19.7 software out of the gate I figured many of the tweaks I had put in place when using the 19.3 software were no longer needed. I started to remove these tweaks and everything was good. By the end of that process I was pretty much left with the OL7-type build I started with. The vast majority of my time over the last week has been unnecessary…

Conclusion

The 19c (19.7) RAC build on OL8.2+UEK6 is pretty straight forward and works without any drama.

This process has shown me how stubborn and blinkered I can be at times. Taking a step back and getting a fresh perspective would have saved me a lot of time in the long run.

Thanks to Simon Coter, Markus Michalewicz and Abdellatif AG who all witnessed my descent into madness.

Cheers

Tim…

PS. There are some extra notes at the end of the article, which include some of the MOS notes I tried along the way. They are unnecessary for the build, but I felt like I should record them.

PPS. The image is how I feel at the end of this process.

Oracle Database 19c on Fedora 32

Fedora 32 was released at the end of April (see here). Here comes the standard warning.

Here are the usual things I do when a new version of Fedora comes out.

I pushed a Vagrant build to GitHub.

So now you know how to do it, don’t. πŸ™‚

Cheers

Tim…

Video : NTH_VALUE : Problem Solving using Analytic Functions

Today’s video is a demonstration of the NTH_VALUE analytic function.

This is based on this article.

You might find these useful also.

The star of today’s video is Connor McDonald. This is his second visit to the channel. I’m sure most of you must know Connor from his blog and AskTom. He also has a YouTube channel here.

Cheers

Tim…

VirtualBox 6.1.8

I’m in the middle of doing loads of Vagrant builds and I got a message to say VirtualBox 6.1.8 has been released. πŸ™‚

The downloads and changelog are in the usual places.

I’ve installed it on Windows 10, macOS Catalina and Oracle Linux 7 hosts without any problems.

I’ve resumed with the Vagrant builds now. So far so good. πŸ™‚

Happy upgrading!

Cheers

Tim…

Social Distancing : My Experience

The UK has started to relax *some* of the lock-down conditions, so I thought I would write down some of my thoughts related to social distancing…

The Good

First and foremost, social isolation and social distancing is predominantly a good thing for me. I live alone, and as I’ve said many times before I like it that way. There is a “work Tim”, a “conference Tim”, a “with friends/family Tim” and a “home Tim”, and it’s the “home Tim” I’m most comfortable with. I’m not talking about some schizophrenic thing. Just different aspects of my personality that I use to cope with different situations. The only authentic me is when I am home alone.

I keep saying to people I’m living my best life at the moment.

The Bad

Having said all that, it’s not been plain sailing. One thing I’m really struggling with is work-life balance. Before this I mostly worked from the office, and my computer at home was for doing my own thing, like the website and blog etc. Since I’ve been working from home the working day has stretched, which has been made worse by some weekend work. When I do eventually switch off, the thought of doing my own thing is really difficult. I feel like I want to walk away from the computer, so that’s what I’ve been doing a lot. I think the solution to this is to define some different phases of the day and try to stick to them. Things have improved since I’ve been actively trying to do this.

Exercise is another issue. The gym is closed, and I find it really hard to be motivated to do anything other than go to the gym. I’ve done very little exercise, which is really not good as I’m a fatty, and being a fatty is not good at the best of times, but it’s even more problematic at the moment. This week I’ve been going on some bike rides at lunch time. Nothing big. Just getting out of the house and moving a bit. Once again, it’s about trying to define phases of the day.

I started the social isolation/distancing thing about a week before most people in the UK. I go to the shop every few days, and go to pick up a prescription once a month. Apart from that I stay home. I think it’s going to remain this way for quite a long time for me, regardless of what the government suggest.

I feel sorry for people who live alone and don’t like it. I feel sorry for families with kids who are going stir crazy. I can’t relate, but I can sympathise.

The Ugly

What this whole thing has taught me is there are some selfish fuckers out there who should go fuck themselves. People who blatantly ignore the rules, without thinking what impact they are having on others. I kind-of expect this behaviour from young people, as they think they are indestructible and are too dumb to think about the bigger picture, so I give them a free pass. What really pisses me off are adults who don’t seem to give a shit.

You don’t know anything about the people around you. You don’t know what their risk factors are. You don’t know if they are worried about relatives they live with that are vulnerable. It is not your position to judge, and you have no right to put them and their families in danger.

Now I admit some people take it too far, like walking in the road when there is nobody on the path, but for the most part people are being sensible and considerate. For those that are not, see my first sentence in this section!

The Good… Again

Despite that there have also been some really positive things.

  • On the whole people seem friendlier and more considerate at the moment.
  • It’s quieter. Lawn mowers are working overtime, but most of the time things are quiet.
  • Life seems a little calmer.
  • I’m not using petrol.

The Future

Some random thoughts from me.

  • I can’t see myself working full time in an office again. I’m not saying I will never go in, but I don’t see myself doing a 5 day week again. My company used to have some issues with working from home, but now we’ve been forced to do it for a few months, I can see a lot of people never going back to the old ways. I’m not sure how they could justify not allowing working from home on a mass scale now.
  • I think it will be quite some time before I consider travelling again, if ever. I had already scaled back my conference stuff, but maybe it’s over for me now. I may change my mind. Time will tell.
  • I want to consume less. Both from a food perspective, and everything else. I’m not a very materialistic person, but I can still cut back. I want my life to be as minimalist as possible.
  • I understand there will be economic hardships as a result of this pandemic, but I hope it has taught people something about themselves. Life doesn’t need to be some dog-eat-dog race. You don’t need as much as you think you do.

OK. The random bullshit is over for now.

Cheers

Tim…

Oracle Linux 8 (OL8) : Podman

When Oracle Linux 8 (OL8) was released, one of the first things I did was check for the Oracle supplied Docker engine. Nothing.

Not to worry I thought. They are probably waiting for UEK6 to ship before they worry about the Docker engine. I pretty much left it at that. I wasn’t really in much of a rush. To be honest, a new version of Oracle Linux doesn’t really hit my radar until the Oracle database is certified on it. πŸ™‚

UEK6 went live in March and still no sign, so in a recent email exchange with Simon Coter I mentioned it, and was set on the path to Podman.

If I’m honest my first thought was, “Oh FFS! I’ve only just learnt Docker and now I’ve got to start again!” To qualify that, having used Oracle databases for 25 years, using Docker for about 2.5 years feels like I’ve only just started. πŸ™‚

First things first. We currently use Docker in production, so I wanted a route to OL8 without any substantial change, should I need it. So I did this.

It’s not a recommendation. Just something to keep in my back pocket.

After a quick bout of denial I sat down and started to work through some stuff with Podman. Time for a couple of quotes to set some context.

“What is Podman? Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Simply put: `alias docker=podman`.”

https://podman.io/

“The podmanbuildah, and skopeo container tools are provided in the Oracle Linux 8 release. These tools are compatible with the Open Container Initiative (OCI) and can be used to manage the same Linux containers that are produced and managed by Docker and other compatible container engines. Because these tools are light-weight and primarily focused on a subset of features, you can run them minus the overhead of working with a daemon process.”

Release Notes for Oracle Linux 8

After reading this, I was a little less daunted. I installed Podman on OL8 and started to play. That resulted in these posts.

The later is an example of how I run up my demo Docker system using Podman. It’s made up of a container for Oracle Database 19c, and a separate container running ORDS on Tomcat. You’ll notice I use my Docker builds with no changes. It just shows that from a basic usage perspective Podman=Docker.

A few quick things I noticed immediately when switching to Podman.

  • Networking is a little different. You define a pod to hold containers, and you expose services to the outside world at the Pod level. Containers inside the Pod can speak to each other. For the simple examples I’ve worked with is actually easier than using Docker networks.
  • There is a package called “podman-docker”, which allows you to use the Docker command, even though you are using Podman. I don’t really like this. I think it’s better to just stick to a regular alias if you feel the need to retain the Docker command. Better still, just get used to typing podman instead of docker.
  • There is no native equivalent of docker-compose. There is a podman-compose project you might want to try. Of course the name “Podman” gives you a clue about what you should really be doing. Defining pods. In addition to manually defining pods, they can get run from a YAML file that’s compatible with Kubernetes. You can generate these YAML files from an existing pod. I’ve not written up this aspect yet, but it’s coming. πŸ™‚

So far it’s been a pretty simple journey, but remember I’m a noob. The articles and my opinions on this will evolve over time.

A quick mention about Vagrant. When I am playing with Docker and Podman I use Vagrant to build a play VM. As a result of this stuff I’ve changed things around a little. If you look at my Vagrant respository you will see the old docker directory has gone and now we have these.

I’ve now pretty much ditched my OL7 Docker environment in favour of the OL8 Podman environment. The only way I’m really going to learn it is by forcing myself to use it. πŸ™‚

If anyone else is in the denial phase, I understand where you are at. Just get started. It’s not so bad. πŸ™‚

Cheers

Tim…

PS. I’ve not played with Buildah and Skopeo yet.

PPS. The image has no significance. It just looks good. πŸ™‚

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.

https://github.com/oraclebase/vagrant/tree/master/database/ol8_19

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.

https://github.com/oraclebase/vagrant/tree/master/dataguard/ol8_19

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.

https://github.com/oraclebase/dockerfiles/tree/master/database/ol8_19

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.

Cheers

Tim…

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.

Oracle Linux 8 (OL8) : Updates – UEK6, Podman, Database 19c Certification

Last week I had a quick email exchange with Simon Coter from Oracle about a few things related to Oracle Linux 8. I’ve been a little out of the loop over the last few weeks because of some important world event or another, so I had a bit of catching up to do.

UEK6 Went GA

UEK6 had been in preview for a while. In March it went GA, and I managed to miss that until recently. Even if you don’t care directly about the Linux kernel, this was a big thing because it was the first UEK release on Oracle Linux 8, and most of us outside Oracle were thinking this would mark the start of certification of Oracle products on OL8 (see below).

Downloads

About a month ago Oracle announced you can download the Oracle Linux ISO images from yum.oracle.com. See here.

This is much cleaner than using eDelivery, but form experience eDelivery is a lot quicker for downloads!

Podman

In Oracle Linux 8 the Oracle supplied Docker engine has been replaced by Podman. I was blindly expecting Docker CE support, like we had with OL7, once UEK6 was released. When I asked about this I got educated about Podman. About a day later someone else mentioned it on Twitter.

I’ve got a separate blog post coming about Podman.

Oracle Linux 8.2

A few days ago Oracle Linux 8.2 was born (here).

Oracle Database 19c Certified on Oracle Linux 8

In my email exchange Simon told me WebLogic was already certified on OL8, but there had been no official announcement about the database certification yet.

Today I noticed Mike Dietrich had a blog post about this. The database is now certified on OL8. πŸ™‚

This is the certification of 19c (19.7) database on OL8 with UEK6. I don’t know what will happen with previous database versions, but I kind-of hope they don’t certify them. I want to forget older releases exist.

Once I heard this I went on to the OL8 Yum repository and noticed the “oracle-database-preinstall-19c” package is now in the repo. Happy days.

I’ve got a separate post coming about this.

Conclusion

There’s been a lot happening while I was looking in the other direction. πŸ™‚ The moral of this story is don’t blink, and keep looking at the Oracle Linux Blog.

Cheers

Tim…

PS. There is a lot more stuff on the Oracle Linux blog. I’ve just mentioned the things that directly affect me…