Video : Online Segment Shrink for Tables : Free Unused Space

In today’s video we’ll give a demonstration of how to shrink tables that contain a lot of free space. As I say in the video, this is not something you should do regularly. It’s only necessary if you’ve done some drastic one-off maintenance, like a large data purge maybe.

There are a few articles this relates to.

The star of today’s video is Kellyn Pot’Vin-Gorman, who is returning to her Oracle roots, but on Azure. πŸ™‚



Video : Kata Containers : Running Containers Inside Lightweight Virtual Machines on Oracle Linux 7 (OL7)

Today’s video demonstrates how to configure Kata Containers on Oracle Linux 7 (OL7), allowing you to run containers inside lightweight virtual machines (VMs).

This video is is based on an article of the same name, but relates to a bunch of other articles and videos on the subject of containers.

The star of today’s video is Jake Kuramoto, originally of The AppsLab fame, and now at WorkDay.



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!

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.


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.


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! πŸ™‚



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.

Video : Returning REF CURSORs from PL/SQL : Functions, Procedures and Implicit Statement Results

Today’s video is a demonstration of returning REF CURSORs from PL/SQL using functions, procedures and implicit statement results.

I was motivated to do this after a conversation with my boss. He’s from a .NET and SQL Server background, and was a bit miffed about not being able to use a SELECT to pass out variable values from a procedure, like you can in T-SQL. So I piped up and said you can using Implicit Statement Results and another myth was busted. I guess most PL/SQL developers don’t use this, and I don’t either, but you should know it exists so you can be a smart arse when situations like this come up. πŸ™‚

The video is based on these articles.

The star of today’s video is Bryn Llewellyn of PL/SQL fame, and more recently Yugabyte.



Docker Birmingham March 2020

Last night was Docker Birmingham March 2020. It clashed with the Midlands Microsoft 365 and Azure User Group for the second time, so it was Docker Birmingham’s turn this time. πŸ™‚

These events start with food and I was looking longingly at the pizzas, but I know enough about myself to know it would make me sleepy, so I distanced myself from them until later.

First up was Richard Horridge with “A Brief History of Containers”. As the name suggests this was a history lesson, but it started much further back than most do when discussing this subject. With punched cards in fact. Fortunately I never had the “pleasure” of those, but I did find myself thinking, “Oh yeah, I’ve used that!”, about a bunch of stuff mentioned. That’s it. I’m now part of ancient history. I think it’s good for some of the younger folks to understand about the history of some of this stuff, and the difference in focus from the system administration focus of the past, to the application focus of the present.

Next up was Matt Todd with “Say Yes! To K8s and Docker”. Let me start by saying I like Swarm. It feels almost like a dirty statement these days, but I do. Matt started in pretty much the same way. He gave a quick pros vs. cons between Swarm and Kubernetes, then launched into the main body of the talk, which was trying to find a convenient way to learn about Kubernetes on your laptop without needing to install a separate hypervisor. So basically how to run Kubernetes in Docker. He did a comparison between the following.

He picked K3s as his preferred solution.

Along the way he also mentioned these tools to help visualize what’s going on inside a Kubernetes cluster, which helped him as he was learning.

  • Octant. Kind of like Portainer for Kubernetes.
  • K9s. He described as looking like htop for Kubernetes. 

Of course, the obvious question was, “Why not Minikube?”, and that came down to his preference of not having to install another hypervisor. It was an interesting take on the subject, and mentioning Octant certainly got my attention.

So once again, I noobed my way through another event. Thanks to the speakers for taking their time to come and educate us, and to the sponsor Black Cat Technology Solutions for the venue, food and drinks. See you all soon!



Birmingham Digital & DevOps Meetup – March 2020

On Tuesday evening I was at the Birmingham Digital & DevOps Meetup – March 2020 event, which had four speakers this time.

First up was Mike Bookham from Rancher Labs with “Rancher Labs – Kubernetes”. The session demonstrated how to set up a Kubernetes cluster using RKE (Ranchers Kubernetes Engine). The tool looked pretty straight forward, and Rancher got referenced a few times during this event and the one the next day, so there seems to be some love for them as a company out there.

Next up was Dave Whyte from Auto Trader with “Under the bonnet at Auto Trader”. He did a talk about how Auto Trader use Google Kubernetes Engine (GKE) and Istio for a bunch of their microservices. They do the hundreds of production deployments a day that you come to expect from microservice folks, but the main “Wow!” moment for me was the diagnostics and observability they’ve got. It was amazing. I was just sitting there thinking, there is no way on earth we could do this! Very… Wow! Many of the points are cover in this video.

After the break it was Patricia McMahon from Generation with “AWS re/Start – Resourcing Cloud Teams”. The session was about the work they are doing re-skilling long term unemployed young people as AWS Cloud Engineers, and of course getting them into jobs. I love this sort of stuff. My background was a bit different, but I entered the technology industry via a retraining course after my PhD in cabbage sex. The course I did was available for all age groups, not just young people, but it was a similar thing. I hope they continue to do great work. If you are looking for fresh, enthusiastic and diverse talent, I’m sure Patricia and Generation would love to hear from you!

Last up was Toby Pettit from CapGemini with “Multilingual, Multi-Cloud Apps – A Reality Check”. His abstract said, “All I wanted to do is run any language on any cloud with state and with no servers to maintain. Of course it also needs to be highly available, observable, maintainable, recoverable and all of the other β€œables”. How hard can it be?” Well it turns out the answer is bloody hard! I don’t even know where to begin with this. It was Alpha this product and Beta that product. Of course Kubernetes and Istio were in there along with OpenFaaS and loads of other stuff. He showed a demo of a workload being split between AWS, Azure and Google Public Cloud, so it “worked”, but by his own admissions this was a POC, not something you could go to production with. Interesting, but crazy mind blowing. πŸ™‚

Thanks to all the speakers for coming along and making it a great event. Thanks also to CapGemini for sponsoring the event!



Video : SQLcl and Liquibase : Automating Your SQL and PL/SQL Deployments

In today‘s video we’ll give a quick demonstration of applying changes to the database using the Liquibase implementation in SQLcl.

The video is based on this article.

You might also find these useful. The secure external password store is a good way to make connections with SQLcl. If you support a variety of database engines, you may prefer to use the regular Liquibase client.

The star of today’s video is Steve Karam from Delphix. πŸ™‚