Data Guard and RAC on Docker : Perhaps I was wrong?

I’ve talked a lot about Docker and containers over the last few years. With respect to the Oracle database on Docker, I’ve given my opinions in this article.

Over the weekend Sean Scott tweeted the following.

“A while back @oraclebase said Data Guard didn’t make sense on Docker.

For those of us disinterested in the sensible I present #Oracle#DataGuard on #Docker. 19c only for now. Please let me know what’s broken. Enjoy!

https://github.com/oraclesean/DataGuard-docker

This was in reference to a statement in my article that said the following.

“Oracle database high availability (HA) products are complicated, often involving the coordination of multiple machines/containers and multiple networks. Real Application Clusters (RAC) and Data Guard don’t make sense in the Docker world. In my opinion Oracle database HA is better done without Docker, but remember not every database has the same requirements.”

For the most part I stick by my statement, for the reasons described in my article. Although both Data Guard and RAC will work in Docker, I generally don’t think they make sense.

But…

A few years ago I had a conversation with Seth Miller, who was doing RAC in Docker. In his case it made sense for testing because of his use cases. I discussed this in this post.

For that use case, Seth was right and I was wrong.

What about Data Guard?

For a two node data guard playground I don’t see any major advantages to using two containers in one VM, compared to two VMs. The overhead of the extra VM and OS is not significant for this use case. Remember, most of the resources are going to the Oracle instances, not the VM and OS. Also, the VM approach will give you something similar to what you will see in production. It feels like a more natural testing scenario to me.

But Sean’s scenario was not this simple. When I questioned him over the value of this, considering the two VM approach had so little extra overhead, he came back with the following.

“There I’ll disagree. I have a Docker/sharding build I’m working on. 7 databases. Starts in moments. On my laptop. I can’t do 7 VM. No way!”

Now this scenario changes the game significantly. All of a sudden we go from the overhead of one extra VM to an overhead of six extra VMs. That’s pretty significant on a laptop. All of a sudden the Docker method probably makes a lot more sense than the VM approach for testing that scenario on a laptop.

Once again, I’m wrong and Sean is correct for this use case.

Conclusion

If you are building a two node RAC or Data Guard playground, I still think the VM approach makes a lot more sense. It’s going to be a lot more like what you use at work, and you don’t have to deal with some of the issues that containers bring with them.

Having said that, if you are looking to build something more extreme, or you are just trying stuff for fun, then Docker may be the right solution for you.

I still don’t see a realistic future for an RDBMS monolith on containers. I don’t care if it’s a single container or a giant Kubernetes cluster. This is not a criticism of the RDBMS or of containers. They are just things from different worlds for different purposes and continuing to treat them differently seems totally fine to me. Having said all that, it doesn’t mean combining the two can’t be useful for some use cases.

Remember, this is just my opinion! 🙂

Cheers

Tim…

PS. As a general point, trying to build your own data service on containers feels like a mistake. I would just use a cloud service that gives you the features, performance and availability you need. Concentrate on your apps.

Oracle Database 19c (19.3) : Installations, RAC, Data Guard etc.

A few weeks ago I put out a post about 19c installations and all that good stuff. That post was using the 19.2 release, which was not the official on-prem release of the product. Now Oracle 19c (19.3) has dropped and is available from here, and here, this post is just to say all those builds have been updated to use this 19.3 release. I also noticed the 19c preinstall package is available from yum.oracle.com.

Not surprisingly, I took the Vagrant and Docker builds I did for 19.2 and just changed the environment variables holding the software zip names, and everything worked just fine. Here are the associated articles, with those minor edits to reflect this version change.

I’ve committed a whole bunch of stuff to GitHub.

  • Vagrant build of 19c on OL7 with APEX and ORDS (here).
  • Vagrant build of 19c on Fedora 29 (here).
  • Vagrant hands-off build of 19c RAC on OL7 (here).
  • Vagrant hands-off build of 19c Data Guard on OL7 (here).
  • Docker 19c on OL7 build (here).
  • Docker 19c RPM on OL7 build (here).
  • Docker compose (here) and swarm (here) stacks.

Automation is awesome! 🙂

Cheers

Tim…

Oracle Database 19c : Installations, RAC, Data Guard and Upgrades

I’ve been playing around with Oracle Database 19c on LiveSQL since it was upgraded, and I pretty much thought that would be what I was stuck with until the on-prem release, as I don’t have an Exadata and it’s not on Oracle Cloud DBCS yet. Having seen a bunch people doing stuff on VMs, I got a bit frustrated and looked on eDelivery and low and behold the 19c software is available for download, even if you don’t have a Exadata CSI. I’m sure 18c was restricted during this period…

I’m pretty sure you wouldn’t be supported to use this for anything real (that wasn’t Exadata of course) until the on-prem drop, which will probably be 19.3 if they repeat what happened for 18c, but it does allow you to have a play.

Having a bunch of Vagrant environments for 18c already, meant it was pretty easy to test a whole bunch of 19c stuff within a few minutes, as most of the basics are very similar. Just minor changes to package recommendations. As a result I’ve pushed out the following stuff in the last couple of evenings.

Along the way I’ve committed a whole bunch of stuff to GitHub.

  • Vagrant build of 19c on OL7 with APEX and ORDS (here).
  • Vagrant build of 19c on Fedora 29 (here).
  • Vagrant hands-off build of 19c RAC on OL7 (here).
  • Vagrant hands-off build of 19c Data Guard on OL7 (here).
  • Docker 19c on OL7 build (here).
  • Docker compose (here) and swarm (here) stacks.

It should be obvious, but remember this is literally the first time I’ve done this stuff with 19c, so things will change over time. I just wanted to try some stuff out to see what happened, and have some test environments to play with while I’m checking out the new features. Once the real on-prem drop happens I’ll bring these up to date.

If nothing else, this is once again proof of how awesome automation is. A few minor tweaks and boom, there’s a new set of test environments. 🙂

Now I can get back to doing what I was meant to be doing… 🙂

Cheers

Tim…

VirtualBox and Vagrant : New RAC Stuff and Changes

There were a lot of changes in my Vagrant repository on GitHub last week and over the weekend.

First, I got asked a question about 12.2 RAC and I couldn’t be bothered to run through a manual build, so I took my 18c RAC hands-off build and amended it to create a 12.2 RAC hands-off build. Along the way I noticed a couple of hard-coded bits in the 18c build I hadn’t noticed previously, which I altered of course. I also had to move the 18c build to a version-specific sub-directory. I think I’ve altered all references to the location.

I went through some of my individual server builds and updated them to use the latest versions of Tomcat 9, Java 11 and APEX 18.2. All that was pretty straight forward.

On Sunday I was running some tests of the builds on my laptop while I was at my brother’s house, and I noticed I was not pulling packages from the yum repositories properly. I ended up adding “nameserver 8.8.8.8” to pretty much all the “/etc/resolv.conf” files inside the VMs. I’m not sure what has changed as that hasn’t happened before, so I’m not sure if it’s something to do with the networking… Anyway, it fixed everything, so happy days.

While I was doing these builds I learned something new. I forgot to amend the path to my ASM disks from a UNIX style path “/u05/VirtualBox/shared/ol7_183_rac/…” to a Windows style path. Vagrant didn’t care and just created the location under the C drive as “C:\u05\VirtualBox\shared\ol7_183_rac\”. I’ll have to add a note about that to my “README.md” files about that.

I’ve still got to update some Docker builds with the latest software. I’ll probably do that over this week…

Cheers

Tim…

 

How To Learn Real Application Clusters (RAC) Administration

glasses-272399_1280-smallIn yesterday’s post about Learning, Career Development and Mentoring I mentioned a specific question I had been asked about learning RAC. I get it quite a bit, and after reading the comments from that post I thought I would write something I could use as a reply to that type of question in future. So here it is.

It’s very much an opinion piece, but I would like to know what other RAC admins think. This is very much a starting point. I’m sure the article will change over time as I think about it and people comment on it. 🙂

Cheers

Tim…

Oracle 12c RAC on Oracle Linux 6 and 7 using NFS

linux-tuxFollowing on from the last post, I’ve brought my NFS RAC stuff up to date also.

I noticed I had not done a RAC install using NFS on Oracle Linux 6, so I threw that in for good measure too. 🙂

Just as a little history to this… I was doing the desktop Oracle RAC thing (using VMware then VirtualBox) for a while, when I started reading some blog posts by Kevin Closson about NFS. At the time, NFS filers were considered the poor relation to SANs, which was obvious or they wouldn’t be so cheap in comparison right? In those articles Kevin pointed out that most people’s systems at the time probably weren’t capable of maxing out a decent filer if it were set up correctly. Since NFS is a cluster file system, that got me thinking I should try RAC on it to see how easy it was. That was in the Oracle 10g days. How time flies when you are having fun… 🙂

Cheers

Tim…

Oracle 12cR1 RAC Installation on Windows 2012 Using VirtualBox…

After having a play with Oracle 12c on Windows 8, I decided to give Windows Server 2012 a go. Here is the resulting virtual RAC installation.

As you would expect, much of the process is pretty similar to the 11gR2 RAC installation on Windows 2008.

Windows Server 2012 is a strange beast. The interface is quite similar to Windows 8, which seems strange for a server OS. I’m gradually coming to terms with the Windows 8, so I am not so repulsed any more. That’s not to say I think it is the correct thing for Microsoft to do, but the thought of supporting my family on it is not filling me with quite so much dread now.

I really should get round to upgrading my desktop to Fedora 19, but time has been short. 🙂

Cheers

Tim…

Oracle Database 12c Virtual RAC Installation on Oracle Linux 6

I finally got my server problems sorted out yesterday, so I was able to do a 12c virtual RAC installation. You can see what I did here:

The setup is pretty much the same as the 11gR2 setup. So there’s no real drama at all.

With the basic installation articles out of the way I can start having a play with the functionality.

I’ve now got 12c running under VirtualBox on my server (Oracle Linux), desktop (Fedora 18), laptop (OS X) and desktop at work (Windows 7). If I can just get it running on my Nexus 4 and Nexus 7… 🙂

Cheers

Tim…

 

My Plans for Oracle 12c RAC Thwarted…

My initial batch of 12c installations resulted in these two articles.

Judging by my web stats, they’ve proved very popular. According to Google Analytics, there are 3-4 active visitors on them pretty much 24×7.

My progress from there has been thwarted somewhat by technical issues. The server I normally use for my Virtual RAC installations is being a little funky at the moment. Rather than mess about I figured I would just reinstall the base OS. Initially it was running Fedora 18, but I decided to go for Oracle Linux instead. This server is used entirely for running VirtualBox VMs, so stability is more important than being bleeding edge. My desktop is still Fedora though.

The Oracle Linux install was fine. The 6.4 spin of Oracle Linux detected all my hardware, including the RAID stuff, and it installed with no worries. The problem is getting all the VMs back on to it from my backups. It’s taking an age! 🙂

Hopefully tonight, or tomorrow I can get back on the case with the 12c RAC installation. Yury from Pythian has already done a run through, which you can see here. There doesn’t seem to be much difference to the infrastructure setup compared 11gR2 RAC, which is good.

Cheers

Tim…

Oracle 11gR2 RAC Installation on Oracle Linux 5

As promised in a recent post, I’ve updated the Oracle 11gR2 RAC on Oracle Linux 5 article. It now uses VirtualBox 4.2.6, rather than 3.2.8 as it was before, and Oracle Linux 5.8.

I’ve purposely left it as an 11.2.0.1 installation as you can get this from OTN without needing access to My Oracle Support (MOS). The process works just as well for 11.2.0.3 and I would recommend you use that if you do have access to MOS. Remember, if you are doing the RAC installation on Oracle Linux 6 you are going to need 11.2.0.3, so OL5 might be the right option if you are playing around with this at home with no access to MOS.

Cheers

Tim…