Video : APEX_ZIP : Manage Zip Files From PL/SQL

In today’s video we demonstrate the APEX_ZIP package, which allows us to manage zip files from PL/SQL.

The video is based on this article.

I must admit I hadn’t even noticed this package until Morten Braten mentioned it on Twitter.

The star of today’s video is Patrick Jolliffe, who is now a resident of Portugal.



When Algorithms Attack (Twitter Edition)

This morning Piet de Visser put out a Tweet to this short film.

It’s a work of fiction, but it’s all about the level of privacy we’ve given up without even knowing it, due to the real life collaborations between companies (Amazon, Google etc.) and institutions like the police and the NHS. In the film, algorithms take that data to make judgements about people. It’s well worth a watch…

Roger MacNicol replied Piet’s tweet saying it was very good, and I replied to the pair of them saying the following.

When Algorithms Attack

Very soon after tweeting this I was kicked out of Twitter. When I tried to get back in I was directed to a page that forced me to delete the tweet and told me I was going to be blocked from tweeting for 12 hours. I can still read tweets and DM. I just can’t tweet. I also received an email about it.

My first reaction was to burst out laughing for a couple of reasons.

  1. I was commenting about a film where algorithms were making judgements about people and their actions without taking context into account.
  2. I think anyone who follows me on Twitter knows my views on COVID-19 and vaccinations. I am very much in favour of vaccinations, and I’m not at all a believer in conspiracy theories surrounding any vaccination, including the COVID-19 vaccinations. I’ve had both my shots of the Pfizer vaccinations. I guess Twitter should know that because I tweeted about it.

Now clearly in isolation that tweet looks like I’m one of those folks I’m always complaining about, but looking at my history of tweets you would know I often reply to things with shit-posts and don’t always include smilies when I’m doing it. I think I wear my views on my sleeve, so I don’t really worry about people taking a single tweet out of context, but clearly the Twitter algorithm is another matter…

The algorithm isn’t very smart and just appears to flag up specific word combinations. OK. Nice AI Twitter! ๐Ÿ™‚

What am I going to do about it?

Nothing, stupid! Twitter can play by whatever rules they want. I’ve just got to wait 12 hours before I can resume shit-posting on Twitter. ๐Ÿ™‚

I guess the only thing that is annoying is I can’t post a message to say I’m blocked from tweeting. It would be kind-of nice if I could do that. Having said that, I’m on holiday today and I could easily waste all day talking crap on Twitter, so they’ve probably done me a favour! ๐Ÿ™‚

In conclusion, we are all doomed! ๐Ÿ™‚



PS. I once received a 12 hour ban when arguing with an anti-vaxer. I think the combinations of words in my tweets flagged me as one of those nutters. About 5 minutes later my account was unblocked, so I think maybe a human was doing some sanity checking at the time, or maybe the AI got smarter. ๐Ÿ™‚

PPS. The 12 hours is now up…

Updates to Vagrant and Docker Builds (Oracle Patches and Upgrades)

Unless you’ve been living under a rock, you will know there have been a load of software patches and updates released recently. As a result I’ve been constantly updating my Vagrant and Docker builds as each one has dropped. With the release of ORDS 21.1, the main push for this quarter is done.

This is just a heads-up of what’s been happening.

Packer : My Packer builds of OL7 and OL8 Vagrant boxes have been updated and pushed to Vagrant Cloud. This ended up happening twice due to the quick release of VirtualBox 6.1.22 a few days after 6.1.20.

Vagrant : All relevant builds now have the latest Java 11, Tomcat 9, ORDS 12.1 and SQLcl 21.1 versions. Where necessary the database patches are included. I mostly try to do builds with stock releases, so people without a support contract can still use them, but some things require the patches to function properly. If you follow the blog you will already know the Oracle Enterprise Manager Cloud Control 13.5 builds have now been included.

Docker/Containers : Similar to Vagrant, all relevant builds now have the latest Java 11, Tomcat 9, ORDS 12.1 and SQLcl 21.1 versions. Database patches are updated where necessary.

There is still some stuff on the horizon though. With the new version of APEX dropping on the, I expect a new on-prem release soon (see update). There is also the on-prem release of Oracle database 21c, which I’m hoping drops soon. Once it does I will be adding those builds…



Update: APEX 21.1 dropped today (12-May-2021) just after publishing this post. It’s been added to all the builds now. ๐Ÿ™‚

What are you actually comparing? (an extended Twitter rant)

I had a bit of a rant on a Twitter thread yesterday about this post.

The Transition to Trunk-Based Development

I’m going to repeat that rant here, then expand on it below.

The Rant

This kind-of gets on my tits.

It reads like, “we were doing everything badly and blamed it on GitFlow. Then we switched to trunk-based development and started to do everything properly. Trunk-based dev rules.”

You went from:

  • No automation to automated delivery.
  • Manual testing to automated testing.
  • Huge, long-lived feature branches to deploying smaller units of work.

None of this is about GitFlow vs trunk-based. It’s all about doing modern development properly.

This is such a lazy argument. I would be interested to see you fix all that stuff in GitFlow, then move to trunk-based and see what the difference/improvement was. That is a better comparison.

Now I realise sometimes you have to have a big step-change project to get people to do something different, and maybe trunk-based development was that trigger for your company, and if so, that’s good for you, but as I said, this is not GitFlow vs. trunk-based.

So once again. I’m not saying one method is better than the other. I’m just saying be honest about the major factors that contributed to your increased velocity.

None of the factors listed were specific to these styles of development. They are basic Agile and DevOps things.


I see this sort of thing all the time.

I remember being in a session about Exadata when it was first released, and being told about 1000x performance when one project was moved from old conventional kit to Exadata. Someone much brighter than me asked the question about what code changes were implemented as part of the migration. It turned out a bunch of row-by-row (slow-by-slow) procedural data loads were ripped out and replaced by parallel DML operations using external tables. So as well as moving from old crappy kit to Exadata, they switched from crappy procedural code to set-based data loads. Relatively speaking, relational databases tend to be pretty crap at procedural work, and amazing at set-based processing. There was of course no comparison of how well the new data load approach worked on the old kit, so who knows where the biggest performance gains were made?

This isn’t about me slagging off trunk-based development, or Exadata. It’s about people making flawed comparisons. Imagine what you would say if I said advanced driving courses are amazing and here’s the proof. I did a lap of the track in a Ford Fiesta and it took 5 minutes. I then did an advanced driving course and was able to improve my time to 3 minutes in a Ferrari. I credit the advanced driving course for all the performance improvements! It’s clearly a terrible comparison and a misleading conclusion.

Wrapping It Up

Going back to the post that initiated this rant, I don’t think they were purposely trying to be misleading. Please don’t send any hate, but I feel like the real conclusion was not about GitFlow verses trunk-based development. It was about two things.

  • Manual process verses automation.
  • A cultural shift to encourage large, long-lived enhancements to be broken down into smaller user stories and story points, and being willing to ship small sprints of work to production, rather than waiting for the entire enhancement to be complete before deploying.

The first point is very much what “The Principle of Flow” in Devops focusses on. The second point is common to discussions about DevOps and Agile in general. This is what resulted in the increased velocity IMHO.

So when you are reading stuff, try to engage your brain and read between the lines.



Video : Immutable Tables in Oracle Database 19c and 21c

In today’s video we demonstrate immutable tables, introduced in the April quarterly patches for Oracle database 19c and 21c

The video is based on this article.

You’ll notice a striking resemblance to the syntax of blockchain tables, because they are essentially blockchain tables without the rows chained using cryptographic hashes. You can check out blockchain tables here.

The star of today’s video is Connor McDonald of AskTom and 90-slides-per-minute fame. You can check out Connor’s YouTube channel here.



Oracle Enterprise Manager Cloud Control 13.5

The release of Oracle Enterprise Manager Cloud Control 13.5 was officially announced last week, but I think it’s been available for download for a little longer. The first I noticed was the official announcement though. ๐Ÿ™‚

That prompted the usual flurry of articles.

As well as the articles, you can find the Vagrant builds of Cloud Control 13.5 on Ol7 and OL8 in my Vagrant GitHub repo here.

Our current installation is running on an Oracle Linux 6 VM, so I was just about to start a new build on a new OS, which would have the added bonus of allowing us to use Oracle 19c under the hood. Now I can go straight to 13.5, which is nice.

I’ve mentioned before, we use EMCLI to add targets and jobs into Cloud Control, so rather than upgrading as I normally do, this time I’ll probably do a clean build on the new kit and gradually migrate services across to it.

Happy upgrading! ๐Ÿ™‚



How will my content change?

I was on a call a few weeks ago and the subject of technical content came up. As someone who produces a certain type of content, I had some thoughts related to cloud services. Specifically how cloud services make my style of content less meaningful these days.

A large part of my content could be described as “traditional” DBA content. As we move more systems to the cloud, and start to use increasingly automated database services, the “traditional” DBA is becoming less relevant, and therefore a certain proportion of my content is becoming less relevant with it. We are due to get an on-prem release of Oracle database 21c soon, and I’ll certainly be doing some installation articles for that, but how many more releases after that will need installation articles? How many more releases will require traditional DBA content? At some point we’ll be using cloud-based data services, so people like me won’t be installing or patching stuff anymore. What does that mean for my content?

Of course, if I’m still working I will still be producing content. As followers of the blog know, writing stuff is part of my learning process, so every time I’m learning something new, you are likely to see some articles appear on that subject. The issue is, if the traditional DBA content stops being necessary, or I’m just not doing DBA work anymore, what sort of content will I be producing?

The short answer is I don’t really know. I don’t think any DBA knows what they will be doing in five years. I suspect I will be some form of developer, but I don’t really know what type of developer. I would imagine it would be data-related, but who knows…

If this post raises any questions in your mind, I’m afraid I’m not the person to answer them. It’s just a really odd time…