Oracle Database 21c : It’s New to Everyone

A few days ago Oracle made the official announcement about the release of Oracle database 21c (here). This was a rather late announcement, as the product has been available on Oracle Cloud for over a month, but that’s not the subject of this post.

With each new release I feel the need to write a post like this, so here goes…


This is a new product, so there will be a lot of people in the community writing content about it, including me. The one thing common to all those people, including me, is none of us have any real experience of this version of the database. Very few, if any, will use this version in anger for a real production system for quite some time, if ever (see innovation release). Does that mean you should ignore the content being produced at the moment? No. You just have to understand that everyone is a newbie at the moment. It will take some time for people to not only understand the basics of the functionality, but also get a feel for its relevance in the real world. Just keep that in mind.

But what about the people that were using the new features in the 20c preview release on the cloud for a year? Yep. They are all beginners too. The preview release of 20c never became generally available, so nobody got something I would consider “production experience” on that release. Even the folks at Oracle don’t have significant production experience of 21c yet. It’s only been a month. Many of the 21c new features were initially showcased in the 20c preview, but things have changed since then, so it’s likely articles you are reading that were based on 20c are out of date and need revision.

I’m not saying all this to be negative. I guess part of it is a self-protection mechanism. People will be producing content now, and as they get more experience they will hopefully revise that content to reflect their current understanding. Don’t expect to find any 21c gurus for a long time… πŸ™‚

When will we get 21c on-prem?

The current cloud-first release of 21c is 21.1. That will bump up to 21.2 with the January patches, and 21.3 with the April patches. If we look at what happened for 18c and 19c, both were released on-prem at version X.3 some time after the release of the April patches. It’s a fair guess to say something similar will happen for 21c.

Going back to the “production experience” argument, many people won’t even start their learning experience of 21c until the on-prem version drops, even though you can get a free-tier version of 21c on Oracle Cloud today!

21c is an innovation release

Another thing to consider is 21c is an innovation release. Many people will never use this version of the database. Instead they will wait for the next long term support (LTS) release, which is likely to be Oracle 23c. Many companies can’t cope with a yearly release cycle, and will prefer to jump between LTS releases. That means you could be on 19c for another 2.5 years before you get an opportunity to move to the next on-prem LTS release. In that time features we are writing about today may have evolved substantially.

Does that mean there’s no point learning about 21c now? No. The more you know about what’s coming, the more you can prepare for it. There will be a lot to learn between 19c and 23c, so it’s better to gradually soak it up as you go along. You may also see something that makes the jump to 21c worthwhile for a specific project. I know at least one project at work that will benefit from being at 21c ASAP.

19c is where you need to be now!

Your immediate focus should be to get all your systems on to 19c, and get them all migrated to the multitentant architecture. The non-CDB architecture was deprecated in, and is desupported (that means gone) in 21c onward. If you don’t get used to the multitenant architecture now, you are going to make life really hard for yourself when you move to 23c for long term support.

Now is the time to act.

Every upgrade is potentially unique, but I have some upgrade articles that might help.

If you are new to the multitenant architecture, I’ve written a lot about it, and have a playlist on my YouTube channel.

What next?

Get playing with 21c. Learn what you love. Avoid what you dislike. Most of all, make as much noise as possible, but try to keep it constructive. Most companies are a bit short sighted where their own products are concerned. They need external people to shake them out of their navel-gazing from time to time. That’s true of Oracle as well. My first few 21c articles have resulted in people from Oracle contacting me, then raising bugs/enhancements. There are plenty of people inside Oracle who want to engage and make their products better. Help them help us!



Video : Virtual Columns in Oracle Database 11g Onward

In today’s video we’ll demonstrate how to use virtual columns, introduced in Oracle 11g.

The video is based on this article.

The star of today’s video is Scott Wesley of APEX fame. I think he’s into gardening too, because he has a blog about grass or something… πŸ™‚



Video : Convert CentOS to Oracle Linux

In today’s video we’ll demonstrate how to convert a CentOS installation to an Oracle Linux installation.

The video is based on this post.

The star of today’s video is Dan Norris, in a clip from a previous OpenWorld, which seems like a long distant memory now.



PS. I know I said there would be no more videos this year, but this was very much “of the moment”, so I thought it was worth doing.

Switching from CentOS 8 to Oracle Linux 8 (OL8)

If you’re a CentOS user, you’ve probably already seen Red Hat are ditching CentOS, and CentOS 8 will be the first casualty. At the time of writing Red Hat haven’t released a clear plan for what CentOS users should do. Neither Fedora or CentOS Stream are viable options for people looking for long term stability. There’s a suggestion that cut price RHEL licenses may be available in future, but all we know at this point is CentOS is on a road to nowhere.

One of the options you might want to consider is switching from CentOS 8 to Oracle Linux 8. Oracle Linux is a binary clone of RHEL, like CentOS. Also like CentOS, you can use Oracle Linux for free (downloads here), and that includes free updates.

But what do you do about your existing CentOS 8 installations? Well that’s really easy too, as you can convert them directly to Oracle Linux. Oracle have an overview of the process here, but it boils down to downloading a script from GitHub and running it. Here are the steps I used to do a conversion.

First, take a backup of the system, so you have a fallback restore point.

We display the contents of the “/etc/centos-release” file, which shows we have a CentOS 8.2 installation.

$ cat /etc/centos-release
CentOS Linux release 8.2.2004 (Core)

Download the conversion script from the Oracle GitHub repo, and run it. Then wait while it downloads the packaged as switches you from CentOS to Oracle Linux.

curl -O
sudo bash

Reboot the system.

sudo reboot

We now have an Oracle Linux server running the UEK kernel.

$ sudo cat /etc/oracle-release
Oracle Linux Server release 8.3
$ uname -r

If you don’t want to use the UEK kernel, you can switch to the Red Hat Compatibility Kernel really easily. List the current kernels.

$ ls -l /boot/vmlinuz-*
-rwxr-xr-x. 1 root root 8913656 Oct 22 22:59 /boot/vmlinuz-0-rescue-5fd85e2afa24422eb63894e2dbfa9898
-rwxr-xr-x. 1 root root 8975912 Dec 18 18:07 /boot/vmlinuz-0-rescue-caad1bd0b25943b1b526a131661074b3
-rwxr-xr-x. 1 root root 8920200 Sep 14 14:45 /boot/vmlinuz-4.18.0-193.19.1.el8_2.x86_64
-rwxr-xr-x. 1 root root 9520664 Dec 16 00:42 /boot/vmlinuz-4.18.0-240.8.1.el8_3.x86_64
-rwxr-xr-x. 1 root root 8975912 Dec 3 02:02 /boot/vmlinuz-5.4.17-2036.101.2.el8uek.x86_64

Set the latest Red Hat Compatibility Kernel as the default. It will be the highest version one without “uek” in the name.

$ sudo grubby --set-default /boot/vmlinuz-4.18.0-240.8.1.el8_3.x86_64
The default is /boot/loader/entries/caad1bd0b25943b1b526a131661074b3-4.18.0-240.8.1.el8_3.x86_64.conf with index 3 and kernel /boot/vmlinuz-4.18.0-240.8.1.el8_3.x86_64

Reboot the server.

$ sudo reboot

Now we are using the Red Hat Compatibility Kernel rather than UEK.

$ cat /etc/oracle-release
Oracle Linux Server release 8.3
$ uname -r


At this point we need to do some testing to make sure we are happy with the final result!

This type of switch may not be the preferred solution for every system, but it’s simple and saves you doing a full rebuild to switch to another distribution.

If you’re still not sure about Oracle Linux, here’s a FAQ post I wrote about it.



Happy Holidays and See You Next Year!

Just a quick post to say I’m ending the year here. I don’t plan on doing anymore videos this year, and I’m going to do my best to stay clear of social media until next year. I’ve found 2020 a very difficult ride, and probably not for the reasons you are thinking. I normally do an end of year review, but I might not this year. Better to look forward than back.

Here’s the latest batch of “.com” clips from the videos this year. Thanks to everyone who contributed.

I hope everyone has a happy holiday season, and I hope 2021 is the polar opposite of 2020.



Autonomous Database Anywhere?

I was reading about Amazon EKS Distro (EKS-D) and EKS Anywhere. For those of you not in the know, EKS stands for Elastic Kubernetes Service. What’s interesting about these new announcements is they will allow people to run EKS in Amazon AWS, on-prem and potentially in other cloud providers (Google, Azure, Oracle etc.). That got me thinking…

What if Oracle created “Autonomous Database Anywhere”? The suite of software that makes up the Autonomous Database, but packaged in a way it could be installed on-prem, but more importantly at other cloud vendors.

I happen to like the Autonomous Database product(s). It’s the start of a long journey, but I like the way it is headed. There are a couple of hurdles I see for companies.

  1. Learning to live with the restrictions of working in an Autonomous Database. When you want something done automatically, you have to give up an element of control and learn not to meddle too much.
  2. Some companies already have a big investment in “other clouds”, and won’t be jumping to Oracle Cloud any time soon.

I see the second point as a bigger stumbling block for a lot of people. Don’t get me wrong, I see the future as multi-cloud, but many companies are still in the early days of cloud adoption, and trying to jump to multi-cloud from day one may be a step to far.

I know Oracle provide alternative solutions like Cloud@Customer and Azure OCI Interconnect. Both are fine for what they set out to achieve, but neither really live up to the “Autonomous Database Anywhere” I was thinking about.

I understand the difficulties of this from a hardware, architectural, cultural and political standpoint. I just thought it was an interesting idea. Such is the way my mind wanders these days… πŸ™‚



PS. I’m not expecting Oracle to even consider this. It was just a thought… πŸ™‚

PPS. Oracle just released Oracle 21C Autonomous Database. Weird coincidence.

Video : Read-Only Partitions and Subpartitions in Oracle 12.2 Onward

In today’s video we’ll discuss read-only partitions and subpartitions, introduced in Oracle 12.2.

This is based on the following article.

You might find these useful too.

The star of today’s video is Chris Saxon of AskTom fame. You can check out his YouTube channel here.



Video : Invisible Indexes in Oracle Database 11g Onward

In today’s video we’ll discuss Invisible Indexes, introduced in Oracle 11g.

The video is based on this article.

The star of today’s video is Chris Muir, who was instrumental in me becoming a presenter. He invited me down to Australia to speak at a couple of AUSOUG events, which were the first proper conferences I ever presented at.



A layered approach to product design

Some time ago I wrote this post.

The Problem With Oracle : If a developer/user can’t do it, it doesn’t exist.

As a result of that post I was invited to speak to a bunch of product managers at Oracle. In that session I spoke about the contents of that post and also about my thoughts regarding a layered approach to product design. I thought I would briefly outline the latter here.

I used to be an Oracle specialist, back in the days when it was possible to have a normal job as an Oracle specialist. Nowadays I find myself doing a really wide range of things. That inevitably means I am Googling my way to solutions a lot of the time. If I had stayed completely in the Oracle world I think my attitude to technology would be very different. There’s something about going outside your comfort zone that helps you gain perspective. In my previous post I said,

“I’m just a generalist that uses a whole bunch of products from a whole bunch of companies, and most of them are too damn hard to use, even with the assistance of Uncle Google.”

In my head, the solution to this issue is for companies to take a layered approach to every aspect of their products. They should be asking themselves.

  1. Who is the audience for this product today?
  2. Who do we expect the audience for this product to be in the future?
  3. Does the product we’ve created meet the needs of these audiences?

Let’s use the Oracle database as an example of this. We could use many other database and non-database products.

  1. There are aspects of the Oracle database that are focused on the developer audience, but there are also aspects of the database that are focused heavily on the administrator audience. So the audience for this product is split.
  2. Over time I expect the DBA role to completely disappear. We have already seen the beginning of this with cloud-based databases. I expect this trend to continue. As a result, I would suggest the future audience of the Oracle database will be solely developers.
  3. Since the product currently has a split audience, and we expect one of those roles to go, I don’t think the database is targeting the correct audience. Anything that is currently a DBA task needs to be automated out of existence. Anything where the DBA is a gatekeeper needs some redesign.

So how do we achieve this? My suggestion would be to take a layered approach. I’ve discussed a similar idea of a layered approach to documentation.

  • Layer 1: Simple how-to.
  • Layer 2: Give me some details, but don’t make my head hurt.
  • Layer 3: I’ve taken some paracetamol. Do your worst!

This time I’m thinking about how the product itself works.

  • Layer 1: The product works out of the box. A developer with no experience of administering this engine can start doing something useful with it immediately. There are no commonly used features that are out of their realm of control. A company or person may choose to stay within this layer for the lifetime of a project and see no ill effects.
  • Layer 2: If the company have some skills in the product, or a specific aspect of the product, they may choose to dip down into this layer. Here they can perform some actions that are not directly covered in layer 1, but this doesn’t mean they lose all the benefits of layer 1. They are not switching off all automations just because they want to deviate from one bit of default functionality.
  • Layer 3: The company have some people with God-mode skills and want to do almost everything by hand. They want to take full control of the system.

The important point is, people want work in the layer(s) they are comfortable in, and still do an effective job. This makes the product accessible to everyone, but doesn’t discriminate against those that want to no-life the product, if they can see a benefit in doing so.

I know there will be objections to this approach, and believe me I can make counter-arguments to it myself, but I don’t see a way forward without taking this sort of approach. I’ll go back to a quote by Jacob Duval where he was comparing MySQL and PostgreSQL.

simply put: mysql has a superior developer experience. postgres has a superior DBA experience. DBA is not really a job anymore, so I pick the developer experience every time.

Jacob Duval

The developer experience has to be the #1 focus from now on!

I’m not underestimating the impact of that statement. It is a massive job for a huge and mature product such as the Oracle database, but not doing so is a death sentence IMHO.

I know some people will see this as a cloud sales pitch, but actually it’s not. I think the on-prem products need to live up to these ideals too. Why? Because I see the future as multi-cloud. If Oracle focus entirely on their cloud offerings, people who decide not to pick Oracle Cloud will be left with a sub-par experience when running Oracle products on other clouds. The result of that is they will pick non-Oracle solutions. I don’t think this is a road Oracle should go down.



PS. I’ve kept this post purposely vague, because I think focussing on individual features will make the post huge, and detract from the overall message…

Update. Akiva Lichtner raised an interesting point. I thought I would add it here, in case someone else is using their own interpretation of what I am suggesting.

“You can see from Tesla’s speed of change that vertical integration which is the opposite of a layered approach is a superior approach. Also reminds me of Bryan Cantrill’s old DTrace talk where he says that the layers conspire to make the whole system impossible to troubleshoot”

Akiva Lichtner

My response.

“It depends what your interpretation of the layers are. Sounds like you are interpreting it as something different to me. The Tesla interface has layers. It can self-drive, or you can drive for yourself. Just like what I’m talking about…”


I’m not suggested we should just keep stacking layer-upon-layer on the existing products. My focus is very much on the potential for a layered audience. As I mentioned above, a Tesla can use autopilot or be driven by a human. Same car. Two modes of operation. We could consider them two audiences.

Video : Adaptive Cursor Sharing

In today’s video we’ll discuss the Adaptive Cursor Sharing feature, introduced in Oracle 11g Release 1.

This video is based on the following article.

Here are some other things you might want to check out.

The star of todays video is Franck Pachot, who is clearly looking for an exit. πŸ™‚