Oracle Database 18c Released : How to Get Started

Just in case you missed it, Oracle Database 18c was released on Friday. You can read the announcement in this post.

How to Get Started

You might be a bit disappointed if you don’t have an Oracle Cloud account, or an engineered system. Not to worry. You can try Oracle Database 18c on Live SQL.

The documentation is already available.ย You should probably take a look at the new features doc.

Just a few things to manage your expectations.

Oracle Database 18c is Oracle 12c Release 2 (12.2.0.2)

In the old terms, Oracle Database 18c is a patchset for Oracle 12.2. For quite some time it’s been known Oracle have moved to a new release model for most products, including the database, with the version number now including the year and the quarter etc. How the version numbers now work is explained in MOS Doc ID 2285040.1.ย The release schedule for these database versions is shown in MOSย Doc ID 742060.1.

So before you lose your mind about how few new features there are for a “6 number jump in version”, just think for a second! All this has been reported for months. Mike Dietrichย first wrote about the new versioning system in August last year. Many of the announcements at OpenWorld 2017 mentioned 18c was 12.2.0.2 with a different name. None of this is a surprise if you’ve been following the news. ๐Ÿ™‚

Oracle Database 18c is Not an Autonomous Database

If you follow me you will have seen these posts.

I can’t believe I’m still seeing this confusion. What has been released in the Oracle 18c database, not the Autonomous Data Warehouse Cloud Service. The product that’s been released is a DBaaS release of 18c, so it’s pretty much what you will get to run on-prem. It’s not autonomous! Once again, none of this is a surprise if you’ve been following the news. ๐Ÿ™‚

Oracle Database 18c : Cloud First

The debate about “cloud first” has been going on for some time. I wrote a couple of pieces about it in 2016.

I think the cloud first approach worked out well for 12.2. I don’t remember a release that has been this stable before the first patchset for ages. I think some of that is down to the fact it was released to the cloud first, and the first on-prem release contained a bunch of bug fixes found during that cloud first release.

Another gripe I’ve heard is we aren’t getting 18c until part way through the year, so we will probably get 18.2 or 18.3. By the time we get 18c, the 19c release will practically be due. ๐Ÿ™‚ My thoughts on this are:

  • If the first on-prem release is 18.2 or 18.3, but it is stable and usable because a load of bugs have been fixed, and hopefully few new ones have been added, that’s great. I don’t want to use a beta for production.
  • It’s going to be a yearly release, so even if the on-prem version of 18c were to be released on 31st December 2018, you’ve still only got a year before the December 2019 on-prem release of 19c. Obviously I’ve made those dates up to prove a point. That point being it’s a yearly release cycle, so complaining about it coming at “X” months into the year is a bit stupid. The focus should be on the quality of the release.

Personal Feelings About the Release

It couldn’t have come at a better time for me.

You may have noticed I’ve seemed a little quiet on the website front. In fact I’ve recently written 19 articles that are live on the site, but haven’t made it to the front page. Most of them are covering older subjects, or what I call backfill. Many of those articles are covering features that have been available since Oracle 8i, but still relevant now. Since they are not “new”, they’ve not been promoted to the front page of the website, and I’ve not pushed them out on social media. I like to stay in the habit of writing, even if I’m struggling to find things I care to write about. I’m not saying I’ve written everything there is to write about 12.2, but I’ve written about pretty much everything I care to write about at this point.

The new release should give me an opportunity to write about something I can promote without feeling stupid. ๐Ÿ™‚

Cheers

Tim…

A week with my Windows 10 desktop…

I mentioned in a previous post I was done with the MacBook Pro, but the combination of it no longer being a brick and my inherent laziness has meant I’ve lost momentum on the switch and I’ve not ordered a new laptop (pause for dramatic effect) yet… Even so I’ve been using a Windows 7 PC at work for nearly six years and last week it got swapped out for a new PC with Windows 10 on it. The new machine is a pretty standard desktop machine (i7, 16G RAM and 500G SSD), so a similar spec to my MBP.

These are the go-to things I must have on my work computer.ย There are a bunch of other things as well, but these are the mainstays.

  • DropBox : I use this to hold my personal KeePass file on Windows at work, and Mac and Linux boxes at home.
  • KeePass : Each system I log into has a strong unique password. I don’t know any of them. Without KeePass I would be screwed. I use KeePassXC on Mac and KeePass2Android on my phone. I used to run KeePass with Wine on my Linux desktop, but KeePassXC is a better alternative now.
  • Chrome : Other browsers are available. I don’t dislike Edge, but Chrome syncs on all my machines, so I don’t have to mess about maintaining bookmarks.
  • MobaXTerm : My go-to shell. IMHO it’s much better than anything else on Windows, Mac or Linux.
  • UltraEdit : I have a multi-platform unlimited upgrades license, so I use this on all operating systems. If I hadn’t already bought the license I would probably use NotePad++ on Windows, or maybe one of those editors the cool kids use…
  • VirtualBox : I run this on my Windows PC at work, on my MBP at home and on my Linux servers at home. I don’t mind Hyper-V or KVM, but having one product on all three operating systems I use is nice.
  • SQLcl : I recently wrote about my switch from SQL*Plus to SQLcl.
  • SQL Developer : I don’t use this a lot because I am a command line kid, but it’s good to have just in case.
  • SQL Server Management Studio : I don’t write about it a lot, but I do look after a bunch of SQL Server databases, so this is really handy.
  • PortableApps : This is a neat way to run a load of different apps and utils on a Windows box without having to install them. It works great on a memory stick, but if there is a PortableApps version of an application, I will often pick it over a regular install and just have it sitting on my PC.
  • Git Extensions : On my Mac and Linux boxes I use the command line for Git, but on Windows I use Git Extensions. I don’t know why I use a GUI on Windows when I could just use the command line. ๐Ÿ™‚ Of all the clients I’ve tried, this is the one that suits me the best. Some of the more popular clients, like GitHub Desktop and SourceTree, drive me nuts.
  • SnagIt : Great for screen/window/region captures, delayed and auto captures,ย  and annotations when producing docs. I use it on my Windows PC at work and MBP at home. Could use the free “Snipping Tool” on Windows, or the built in stuff on MBP, but I like SnagIt. On Linux I used to use Shutter, but it’s not great.
  • Spotify : Don’t judge me! ๐Ÿ™‚

By looking at this list you can probably see why I don’t have too many problems doing my job on any OS. Most of the tools I use are available on the big two desktop operating systems, and Linux in some form. There are just a lot more options for Windows in the non-work arena, which is why I’m interested in switching back to it at home too…

A week in and I’m really happy with Windows 10. I support family members who’ve used it for a long time, so it wasn’t a big shock to me. If anything, this experience has strengthened my resolve to ditch the Mac when I eventually replace my home desktop/laptop. Windows 10 is quick, responsive and it looks nice.

Cheers

Tim…

Update: Someone pointed out I didn’t mention AV. I just assume all Windows PCs, Macs and Linux Desktops are running VM and probably malware stuff. I know I do on all devices. In this case we are talking about a corporate PC, so it’s definitely there.

Hey DBA, fix it, but don’t touch it!

Martin Berger posted an interesting tweet the other day.

“what’s the expectation a DBA should do when “something is slow” – but HW and SW is ok and DBA is not responsible (and must not manipulate) schema or statement?”

The thread includes some suggestions, but I want to come at it from a different angle…

I have a lot of sympathy for this situation. In my current role I look after a lot of databases that sit behind 3rd party applications. In many cases, that means we can’t change the code. We can’t play around with the contents of the schema, for fear of losing support. Our hands are, to a greater or lesser extent, tied. This presents an interesting problem because you’re damned if you do, and damned if you don’t.

Thought 1

My attitude to databases behind 3rd party applications might surprise you. I try to stick closely to what the application vendor recommends, even if I know it to be stupid. Why?

  • Support (1) : As soon as you do something that isn’t in the vendor’s recommendations they are going to blame that for the problem. They’ll ask you to switch it all back and test it, which is just a delaying tactic most of the time and really annoying.
  • Support (2) : You want the system to be as familiar as possible to the support staff and any consultants they send on site.
  • Support (3) : I would say go for the vendor’s preferred platform, even if it’s not your preferred platform. You want to be on the same platform as the majority of their customers. If most of their customers are using Oracle on Windows, I’m going to consider it. If most of their customers are on SQL Server, that’s what I want. Unless you’re a massive customer, you are going to be at the bottom of the food chain if you marginalise yourself. Having lived through the death of Oracle on Tru64 and HP-UX, I want to be on the “main platform” for the application thank you very much!
  • Sometimes their crap application expects the DB to be crap. I had one case where the vendor’s approach to gathering stats was extremely poor. I revised it to bring it into this century and the application died. Their bad code needed bad stats to work.

At this point I expect someone to say, “But Tim, you’re supposed to be good at this stuff. I would have expected more from you!” What’s my response? Walk a mile in my shoes. If you have hours to obsess over one system to make it perfect, great for you, just don’t come and work here! ๐Ÿ™‚

Thought 2

When you buy a product it should be fit for purchase. Part of that is the vendor should be able to give adequate guidance on getting the most out of their system. Also, when you purchase a system, you should be doing your due diligence. Having written this, I understand it is a complete fiction. Why?

  • Everything works great on PowerPoint. Procurement seems to be swayed heavily by the quality of the presentations, not the quality of the products.
  • I don’t think many people really know what they are letting themselves in for until they are so far down the line, backing out would be too embarrassing an option.
  • Sometimes, the best product on the market is absolutely terrible. I have one in mind, which my colleagues will be able to guess, where we had a choice of two products, both of which were absolutely terrible, so we picked the least terrible. In a meeting with our IT director I said, you’ve heard the expression, “You can’t polish a turd, but you can roll it in glitter!” This product is the turd inside that glitter!

Thought 3

Even when it’s not a 3rd party app, you can’t always fix it easily. As an application grows it gets significantly harder to refactor pieces of it. Sure, you can change that little bit, but what are the knock-on effects? If you have good regression tests, great. If not, it can be a risky endeavour. I mentioned in another post it took about six months to find some of the performance issues brought about by an upgrade from 11.2.0.4 to 12.1.0.2. It was stuff that had been missed during the testing and only ran once a year. The bigger the application, the easier it is for something to hide.

Even if you can refactor, do you have the time and resources to do it? Applications aren’t static. Sure, there is pressure to fix performance problems, but there is also pressure to add new functionality. What’s best for one group of people may not be good for others.

Thought 4

Martin’s tweet exemplifies the misunderstanding most managers (not him) have about databases. There’s rarely a magic button you can press that fixes performance problems. The vast majority of the time it comes down to bad database design and/or bad SQL. When you can’t change either, you don’t have much choice other than to wait for the next application patch/upgrade from the vendor that might fix it, or throw hardware at it on the DB layer or the App layer, depending where the problem is.ย {Insert “Run it on Exadata” comment here!}ย I really don’t think a lot of people outside the database world understand this!

Oracle has a lot of goodies that can be used to mitigate terrible applications without having to touch them directly. Update: I’m not trying to make out all these features don’t come with their own set of issues too. ๐Ÿ™‚

But the real solution is to do proper database design, write good SQL, and write good applications on top of that. Performance is a development issue, and we are all developers now. Yes, even you DBAs. ๐Ÿ™‚

Anyway, just some thoughts on the situation Martin found himself in, and I find myself in all the time. ๐Ÿ™‚

Cheers

Tim… (Chief Presser of Magic Buttons)

WordPress 4.9.3 and 4.9.4

I’ve given up on posting about new WordPress releases as most of you who are self-hosting are probably using the automatic update feature, so by the time you read my release announcement you’ve already upgraded automatically. Not this time… ๐Ÿ™‚

Yesterday WordPress 4.9.3 was released and got automatically applied to the five WordPress blogs I look after. As well as fixing a bunch of bugs, 4.9.3 also broke the automatic update feature, so you are going to be stuck on 4.9.3 until you manually click the upgrade button. If you are self hosting WordPress, it’s a good idea to log in and manually click the upgrade button, so you get WordPress 4.9.4, and all subsequent upgrades automatically. ๐Ÿ™‚

Cheers

Tim…

OUG Ireland 2018

Next month (22-23 March) is the OUG Ireland 2018 event. Somehow I managed to miss the call for papers, so I wasn’t in the race for a speaker slot, but I just booked my flights and hotel, so I’ll be lurking around.

If anyone drops out of a session after 11:00 on the first day, or at any time on the second day, I’m happy to drop in and fill the spot. Just sayin’! ๐Ÿ™‚ If not, I have an overnight stay in Dublin.

Maybe see you there!

Cheers

Tim…

Update: I’m registered as an attendee now through my company’s membership, so I’ll definitely be there. If I get a stray speaker slot, all the better. ๐Ÿ™‚

Mac updates disaster (again) and a return to Windows desktop?

A couple of nights ago I tweeted about my MacBook Pro being a brick after the latest updates were applied. It was totally unresponsive. The only thing that would work is the “Option” key at boot to alter the boot order.

This is not the first time this has happened to me, and not just on this machine. I think in total I’ve had to restore the entire OS from TimeMachine three times. Once on a previous MBP and twice on the latest one. Twice it was after updates and once because it just stopped working and I never found out why.

Being a DBA, backups are my thing, so I have a TimeMachine partition on my NAS, as well as manual backups for some of the important things, which in turn get pushed up to an AWS bucket. For good measure I also have an external drive with some backups on, because it always pays to be prepared. ๐Ÿ™‚

Due to past issues I always keep a Mac Recovery USB Drive waiting to go. This is how I recovered from the latest issue. The recovery took 6+ hours, then it took about 30+ minutes to apply the update that started all this fiasco. So I now have a patched and working MBP again, for now…

I also mentioned on Twitter I might be moving back to Windows for my main desktop, possibly even installing it on the MBP. That prompted a few comments, so I figured I would mention my current opinions on the top-3 Operating Systems, from a *desktop perspective*.

macOS

I bought my first MacBook Pro in 2009 and have used one as my travel machine since then. About 2.5 years ago I bought a 15″ retina, which became my home desktop machine, and travel laptop combined. The 2009 13″ MBP is next to my bed, used every day as my Netflix machine. ๐Ÿ™‚

I was convinced to give Macs a go because loads of people at conferences kept telling me how good macOS was. It’s over 8 years, but I’m still waiting to fall in love with it. This seems to have happened for other people instantly, but I just don’t see the major appeal.

I still find it annoying how little support there is for Macs from software companies. Most of what I want to do it fine, but every now and then I want to try something and it’s not supported on Mac, or I’ve got to wait a few months for the Mac version to be released. It’s still a Windows world, so I’m still using Windows VMs occasionally.

The only really positive thing I can say is I like the build quality of the case, but after my Staingate issue and a problem with the fan I had in the first few weeks of the latest machine, I’m not sure the build quality is quite what it was when I bought my first MBP.

Linux

I first used Linux in the RedHat 5.1 days (not RHEL), which Wikipedia tells me was 1998. At some point I ditched Windows at home and Red Hat Linux became my main desktop. I can’t remember which exact version I switched to, but I’m thinking Red Hat Linux 8. When Red Hat Linux became Fedora I made that move also. When I started to do presentations I bought a laptop which used Windows Vista, which wasn’t as bad as people made out. Later on I switched to a MacBook Pro, but Fedora was my main desktop OS until about 2.5 years ago. Once again, I can’t remember the exact version, but it was one of the 20’s. Somewhere between Fedora 21 and 23 at a guess. Since moving away from a Linux desktop I have kept up with Fedora for every release, but it’s not been a 100% desktop for me.

I learned a lot by using Linux as my desktop, but I spent a lot of time trying to get round device compatibility issues, or get what felt like part-finished software to work. I was forever having to use Wine or Mono to run additional software because the Linux support didn’t exist, or didn’t really work properly. I was also having to use a Windows VM to run some software I needed for my business. Like I said, great learning experience, but hardly what I would call an efficient use of time for a regular user.

Someone on Twitter asked me what I wanted from a Linux desktop and I said,

“Support for all apps I want to use and devices, without having to do weekend projects to fix problems…”

Jared Still commented,

“Twice I have made serious attempts to use Linux on a laptop. It is just too fiddly; every time something New needs to be done it is a new project. All my Databases run on Linux, I do dev on Linux, but it was just too much trouble for many common tasks.”

I agree. I am a total devotee of Linux on the server, but using Linux on the desktop is not a viable option for me. Been there. Done it for a lot of years. Moved on!

Windows

I wrote my PhD thesis on Microsoft Word using Windows 3.11. At every job I’ve ever had, Windows has been my main desktop OS, so I’ve lived through all the versions since Windows 3.11. Even when I switched to Linux at home, I was using Windows at work, and supporting family members using Windows. My work desktop still uses Windows 7, but as of next week it will be Windows 10. My family used Windows 8.0, then 8.1 and now Windows 10. Like most IT people, I have to support family PCs, so it was me who did the upgrades and I’ve used these versions a lot. I’m doing the last minute checks to this post on my brother’s Windows 10 laptop.

Windows is far from perfect, but if you’ve not been using it regularly for the last few years, I think you might be surprised. I like Windows 10.

Conclusion

I think my next move will be Windows.

I have a long history of all three operating systems, so it’s not like I’m going into this blind. I think I probably have a better grounding in all three than most of the people who are trying to push their preference on me. ๐Ÿ™‚

Most of the time I am in a shell or a browser, so I can work OK on all three operating systems without much trouble, but it’s when I want to go off piste the differences start to become evident.

You don’t have to agree with me. My choice does not mean your choice is wrong. Likewise, your choice doesn’t mean my choice is wrong.

Cheers

Tim…

SQLcl : Going cold turkey from SQL*Plus

I’m a SQL*Plus junkie. I have loads of scripts that do exactly what I want them to do, so for most tasks I am more productive from the command line than using other tools. If I do find something difficult, I just flick across to SQL Developer or Cloud Control. I’m not a snob about it, but I prefer the command line.

A couple of weeks ago I was playing with the ORDS stuff in SQLcl.

That made me think I really should make the switch, but I didn’t. Then I had to dump something out as CSV, and SQLcl makes that really easy.

I forgot the 12.2 SQL*Plus client I was using could also do this, even though I had written about it (here), but the SQLcl formatting is more flexible anyway. ๐Ÿ™‚

So after that I decided to try an experiment and go cold turkey from SQL*Plus and only use SQLcl. I think today is the 1 week anniversary. ๐Ÿ™‚

The only real problem has been muscle-memory. My hand naturally types “sqlplus” rather than “sql”. It’s going to take a long time to get out of that habit. ๐Ÿ™‚

I’m not using all the extra features all the time, so I can’t claim it’s revolutionised my life, but having them at hand is certainly … handy. ๐Ÿ™‚

I’ve also started using it on some of my application servers. On some of them I have to check for the presence of the database before starting the application server. Just the standard race condition stuff you get during failover events. I was using the instant client before, but I’ve switched to SQLcl now because it is smaller. That’s especially nice on Docker.

So that’s one week down and I’ve got no plans (yet) to switch back. ๐Ÿ™‚

Cheers

Tim…

Pretrospectives : The death of any project!

If you’ve never heard of “pretrospectives”, that’s because it’s a made up word.

I was working in a team who were “a little frustrated”, so we vented by writing our Fragile Manifesto. It wasn’t a new idea, but it served its purpose and made us chuckle. It came up in conversation a few days ago so I took a look at it again, and one of the things that stood out was the “pretrospective”, which continues to be a problem. So here’s our definition.

“Pretrospectivesย : Similar to the Retrospectives of Agile, but they are done before any work is started, hence the โ€œPreโ€. These should last as long as it takes to identify any possible problem you may encounter during the lifespan of the project. Possible problems should not only be discussed, but documented thoroughly. Remember to include many blank pages, with the words โ€œPage left blank intentionallyโ€. This will increase the page count, and therefore the value of the documentation. Pretrospectives should be by far the longest phase of any Dawdle.”

I guess you now realise this is a jab at that waterfall approach of trying to define everything up front, only to find all the requirements have changed by the time you actually start to code, if you ever start that is. I’ve worked on projects where external consultants have produced hundreds of thousands of pages of documentation, at a cost in excess of ยฃ1 per page, only to have the whole lot scrapped.

I tend to think good DBAs are worriers, constantly thinking about what could go wrong and trying to figure out how to avoid it, or what they will do to fix it if it does happen. You have to be careful how you present this information to others or it can feed into the mindset that leads to pretrospectives. In a list of pros & cons, some people can’t see past the cons. ๐Ÿ™‚

You have to break down large ventures into smaller, easily accomplishable tasks or you don’t stand a chance of even getting started, let alone finishing. I often say the thought of writing a book is really daunting, but everyone can write a page. A book is a collection of pages. You can call things user stories and story points or magic pixies steps. I don’t care. You’ve just got to stop sitting around “planning” and get something done…

I don’t really know what the point of this post was, but I suspect it was another way of me venting. ๐Ÿ™‚

Cheers

Tim…

Are you friends with all the other big names in the Oracle world?

In a recent LinkedIn conversation I was asked the question,

“Are you friends with all the other big names in the Oracle world?”

My first reaction was to respond with,

“A more important question would be, are they friends with me?”

I decided not to go that route in case the person didn’t get the joke. ๐Ÿ™‚ It’s not always obvious, even with emojis. My actual answer was this.

“Pretty much. Most of the folks are really normal in person, so it kind-of sounds cool, but it’s just normal when you are interacting with people on a daily basis, or traveling with people for a couple of weeks. You just get to know each other. I’ve been doing this for 22+ years, the website for 17 years and speaking at conferences for about 10 years, so it would be kind-of weird if I didn’t know a lot of people. ๐Ÿ™‚ As you get a bit of a name for yourself, people come to find you, which helps. ๐Ÿ™‚ Just because someone writes or presents it doesn’t mean they are the best in the room. Lots of people are great, but don’t like presenting or blogging. That’s part of what I mean about people being normal. People will tell you something amazing, then following it up with a question that makes you think, “Really? You don’t know that?”

Let’s break that down a bit.

Like most people I have several levels of friends, and the word “Friend” in this context is like “community friend”, if you know what I mean. They are people I interact with regularly on social media, email or IRL with reference to technology. I’m not expecting invites to family events or to help them bury a dead body, but I mean something more than “they follow me on social media” or “I follow them on social media”. I feel that should be pretty obvious, but I don’t want people thinking we are at each others houses every five minutes. ๐Ÿ™‚

Over the years I’ve had the pleasure to meet a bunch of really cool people, sometimes being a little star-struck when I met them. The vast majority of the time these people were really normal. Often doing regular jobs. Not everyone is a consultant to the stars. You know I’m not!

“If there’s one thing I’ve learnt about experts, they’re experts on f*ck all!”
Jake Green (Revolver, Guy Richie)

I like this quote because it can be read two ways, with quite different meanings:

  1. Most experts aren’t really experts.
  2. Most experts have such a specific focus, when you look at their knowledge as a whole, their expertise amounts to nothing. You might be able to perform hip surgery, but can you build a house or fix a car?

The second point is very true in the IT industry. It’s important to remember that some people have quite extreme specialisms. They can melt your brain when speaking about some aspects of Oracle, but are not so special at other aspects. I feel that should be obvious, but I’ve fallen into the trap of elevating some people to a God-like status in my own head, then been really surprised by their lack of knowledge in other areas.

Being willing to stand up on stage, publish a blog post on the internet or write a book doesn’t make you an expert. The only thing you can guarantee when you see someone on stage, is they are willing to get up there. Judge people by what they do, not by what they say they can do, or what you want to believe they can do. ๐Ÿ™‚

That’s it really. I’ve got to catch a private jet to meet up with all my celebrity friends to do crocodile wrestling and save the world, while the rest of you wish you were me! *

Cheers

Tim…

* Just in case, that was a joke OK! We are not going crocodile wrestling! **

** We’re also not saving the world! ***

*** Just thought I better mention I’m not going on a private jet or meeting any celebrities either. ****

Docker and Oracle Databases : Finding the Sweet Spot

One of the questions I’m asked, and indeed have asked myself on numerous occasions, is how do databases fit into the Docker world? More specifically, how does the Oracle database fit into the Docker world?

There is some Boring Context at the end of the post. Happy for you to ignore it, but please read it before giving me aggro. ๐Ÿ™‚

I don’t feel the typical lifespan of a production Oracle database fits well into the Docker world. Lots of people, myself included, have been quick to show examples of Oracle databases running on Docker, because it’s really easy and it works, but the examples are all one-off builds. There is little in the way of realistic life-cycle discussed. Maybe I’ve missed the memo on that, or I’m following the wrong people. ๐Ÿ™‚

The issues with Oracle on Docker come about when you try to do things “the Docker way”, which works great for application servers and small footprint databases with a simpler approach to patches and upgrades, but not so well for Oracle databases. In my opinion Oracle database patches and upgrades are clumsy from a Docker perspective. I wrote about this here. I know at least one person I respect that disagrees with my opinion on this (you know who you are ๐Ÿ™‚ ). You can choose manual intervention in the upgrade process, but I feel like that is removing some of “the magic of Docker”. It’s well within Oracle’s capability to make database patching and upgrades more Docker-friendly, but time will tell if they think it is worth the effort.

From a monitoring and tuning perspective I’m not sure Docker really fits into what most Oracle DBAs are used to either. If Oracle start making DBA tools that are a bit more “Docker aware”, that could change of course. Once again, it depends on their priorities.

So what’s the sweet spot for Oracle databases on Docker? Well I think it’s great from a Dev, Test and QA perspective. I had a great example of this last night. I was doing some APEX patching (5.1.3 to 5.1.4) at work yesterday and hit a problem. I went home and tested the APEX upgrade (5.1.3 to 5.1.4) on four environments and they all worked.

  1. Oracle Databaseย  12.1.0.2 using multitentant architecture with APEX installed in a PDB.
  2. Oracle Databaseย  12.1.0.2 using non-CDB architecture.
  3. Oracle Databaseย  12.2.0.1 using multitentant architecture with APEX installed in a PDB.
  4. Oracle Databaseย  12.2.0.1 using non-CDB architecture.

I never use non-CDB architecture at home anymore, so I had to spend about 30 seconds altering two Dockerfiles for that, but the process of getting clean environments up and running was quick and simple. It was so quick in fact that when I finished I had time to update my database Dockerfiles to install APEX 5.1.4, and update my ORDS Dockerfile to use APEX 5.1.4 and Java 8u161. All built and tested.

I’ve been using virtualization for well over a decade and I have gold images, snapshots and build scripts coming out of my ears, but Docker is head and shoulders above everything else for pushing out these small short-lived clean environments.

A while back I watched an online presentation by Seth Miller about RAC on Docker. I guess some of you are thinking WTF at this point, which was pretty much how I felt before watching it. ๐Ÿ™‚ Watch the presentation and see why it makes sense for Veritas to invest effort in this from a Dev/Test perspective. They have a use case that fits.

The important thing is to focus on the use cases where it adds value, rather than the typical “Emperor’s New Clothes” approach assuming it’s all things to all people. Sounds obvious, but it is so often lost on the IT world. ๐Ÿ™‚

So in conclusion, I remain sceptical about me ever running an Oracle database on Docker for production, but I can see a bunch of situations where it is useful in the Dev, Test and QA space, where you need relatively small, clean, well-defined environments for short periods of time. That seems like the sweet spot to me at this point, but I reserve the right to change my mind over time. ๐Ÿ™‚

I’m really interested to know what you think, especially if you think I’ve missed the point. I am still a Docker newbie. Like I said earlier, read the Boring Context before jumping to conclusions though. ๐Ÿ™‚

Cheers

Tim…

Boring Context: I feel I need to make a few points so people don’t pounce on me. ๐Ÿ™‚

  • I am talking about databases in the sense of the monolith running on Docker. The microservice approach where the data is self-contained as part of the microservice is different.
  • I’m not trying to make out every database engine has the set of same issues, although I suspect there will be some commonality when you start talking about long-term production usage.
  • There’s nothing wrong with using Docker like lightweight virtualization and doing manual installations, patches, upgrades and maintenance inside your container. It’s going to bloat the hell out of it, and it’s not how I want to use it, but you can choose to do that if you want. The Docker police will not arrest you. ๐Ÿ™‚
  • There’s nothing wrong with you going off piste with how you organise your builds and images. You can have separate Dockerfiles per database or use build arguments rather than first-run configuration based on environment variables. Once again, you are going to waste lots of storage and that’s not how I like to play the game, but that is your choice.
  • I know that Docker was developed with application delivery in mind and databases probably weren’t at the forefront of the developers minds when it started. I hope it stays that way!
  • Some of the same issues exist when dealing with complex web applications like OBIEE. Yes, you can install them on Docker for a demo, but does it really work for the normal lifespan of that product?
  • I realise well planned virtualization can have many of the benefits of Docker, but it feels a little heavier in comparison. Each to their own.
  • I realise there are products out there for data virtualization (like Delphix), that are capable of doing some cool things for Dev, Test and QA environments. If you are using something like that, that’s great for you. ๐Ÿ™‚
  • Docker is changing fast. My thoughts might be very different over time as Docker develops.
  • I realise there are a lot of “we just need to keep the lights on” databases that are small and don’t have extreme requirements. Maybe I’ll find Docker to be a good home for these. Maybe not.
  • I’m not a Docker hater. In fact I’m quite the opposite.