Video : Secure External Password Store

Today’s video demonstrates how to use a Secure External Password Store to hold database credentials in a client wallet.

The video is based on this old article.

The star of today’s video is John King. This is actually his second staring role on the channel. The other one was called Making Dreams Come True: Video for a Superfan. 🙂



VirtualBox 6.1.4

VirtualBox 6.1.4 has been released.

The downloads and changelog are in the usual places.

I’ve done the installation on my Windows 10 PC at work and all is good. I’ll probably do the installations on my Windows 10, macOS and Oracle Linux 7 hosts at home tonight and update this post.

Happy upgrading!



Update: I did the upgrades on my Windows 10, macOS and Oracle Linux 7 hosts at home. Everything went fine, and it all looks good for now.

Data Pump Between Database Versions : It’s not just about the VERSION parameter! (Time Zone Files)

I was doing a small “quick” data transfer between two servers. The source was 19c and the destination was 18c, so I used the VERSION parameter during the export.

expdp … version=18 directory=…

The export went fine, but when I started the import I immediately got this error.

ORA-39002: invalid operation

A little Googling and I came across MOS Doc ID 2482971.1. In short, the time zone file was different between the two databases.

No problem. I know how to fix that, and both databases had the January quarterly patches applied, so the latest time zone files would be available right? Wrong. The 18c database was already at the maximum time zone version that was installed, and I needed to be one higher to match the 19c database.

After some Googling I re-found MOS Doc ID 412160.1. As soon as I opened it I remembered it. I find this note really messy an confusing, but the section labelled “C.1.d) DST patches list” had the list of patches, which is what I needed. I downloaded the patch to match the time zone file version of the source system and applied it with OPatch in the normal way. Always read the patch notes!!!

Once the new time zone file was in place in, it was time to update it in the database. I’ve written about this before.

Once the time zone file versions matched, the import worked as expected. Although the small data transfer that I expected to be quick had turned into a much bigger job. 🙂

I can’t remember if I’ve hit this issue before, but I don’t remember it. I guess I’ve just been lucky with the time zone file versions matching. This note is to remind myself, it’s not just about the VERSION parameter! I’ve also updated a couple of articles with pointers about this.



PS. It seems the later releases are more sensitive to time zone file differences than previous releases.

Cloud Control 13.4 : Silent Installation and Silent Upgrade

A little over a week ago Enterprise Manager Cloud Control 13.4 was released. The following weekend I spent 3 days running builds constantly trying to get a clean install to work. Eventually I tweeted out in frustration and a friendly face at Oracle, who I’ve stalked on numerous occasions, put me in touch with the EM dev team.

Having had a quick look at my Vagrant build, they suggested I unset the CLASSPATH environment variable, and a working build was born. Thanks very much to the EM dev team! Without them I would have spent days looking at it and would probably still have failed.


The resulting Vagrant build and an article about the silent installation of Cloud Control 13.4 can be found here.

One thing that still irks me somewhat is the documentation about the adaptive optimizer parameters. The documentation says the following.

“If your Management Repository is using Oracle Database 12.2 or higher, none of these parameters need to be set.”

This is not true, and you always get this error message.

The following prerequisite check failed because the Oracle Database, where the Management Repository will be configured, does not meet the configuration requirements. Fix the issue manually based on the recommendation offered for this prerequisite, and click OK. For more details, check the logs: /u01/app/oracle/middleware/cfgtoollogs/oui/emdbprereqs
Prereq Name Recommendation
Check if all adaptive features parameters are unset All adaptive features parameters should be unset for improved SQL performance”

I even tried a GUI installation, in case there was a difference between the GUI and silent installations. There wasn’t.

The workaround is to amend a bunch of underscore parameters that are only meant to be necessary when running a patched version of Oracle database 12.1 as the repository database.

alter system set "_optimizer_nlj_hj_adaptive_join"= FALSE scope=both sid=''; 
alter system set "_optimizer_strans_adaptive_pruning" = FALSE scope=both sid='';
alter system set "_px_adaptive_dist_method" = OFF scope=both sid=''; 
alter system set "_sql_plan_directive_mgmt_control" = 0 scope=both sid='';
alter system set "_optimizer_dsdir_usage_control" = 0 scope=both sid=''; 
alter system set "_optimizer_use_feedback" = FALSE scope=both sid='';
alter system set "_optimizer_gather_feedback" = FALSE scope=both sid=''; 
alter system set "_optimizer_performance_feedback" = OFF scope=both sid='';

It’s not a show stopper, so I can live with it, but it’s annoying, and the documentation should be altered to reflect the reality.


The next challenge was to work through an upgrade from a previous release. I worked through this using a starting point of 13.3. I already had a vagrant build for 13.3, but I made a few changes to bring it up to date, and add some more disk space. I also renamed the directory structure to make things a little neater.

The upgrade itself was very similar to that of the previous version. You can find the article about the silent upgrade to 13.4 and the Vagrant build I used to test the upgrade here.

Now remember, this is a simple upgrade of a totally clean 13.3 build to 13.4, so I’m not saying this is an exhaustive test, and I’m not saying this is proof it will work for you.

Next Steps

The next challenge will be to try a real upgrade at work. Work is crazy at the moment, so I’m not sure how long I will have to wait before doing this.

Most of our kit is VMware virtual machines running Oracle Linux, and the Cloud Control server is no exception, so I can get a backup of the whole VM before the upgrade, and just restore back to that in case of a disaster.

An ideal place to be is to have your build scripted, including the reconfiguration of all your targets. After a previous “issue”, I went through our existing config and built the EMCLI scripts to replace it all. I *think* I can rebuild everything from scratch if I need to. We do all new agent installations, target discovery and setup using EMCLI now, so I think all the retrofitted stuff will work too, but I have to admit I’m kind-of scared to try. 🙂


I don’t like to do anything at work unless I’ve already done it at home first. It’s taken me pretty much 5 full days (Fri, Sat, Sun, Fri, Sat) to get through this, but it’s done now, and I feel I can have a try at work without looking like a total fool now! 🙂



MobaXterm 20.0 and KeePass 2.44

And in other news about things I’ve missed recently…

MobaXterm 20.0 was released a couple of days ago. It looks like they’ve switched across to the yearly naming like many other companies. 🙂

The downloads and changelog are in the usual places.

If you are working on Windows and spend a lot of time in shells for connections to Linux boxes, you need this in your life!

KeePass 2.44 was released nearly a month ago.

The downloads and changelog are in the usual places.

You can read about how I use KeePass and KeePassXC on my Windows, Mac and Android devices here.

Happy days!



Video : Multitenant : Online Move of Datafiles in CDBs and PDBs

Today’s video is a quick look at online datafile moves in container databases (CDBs) and pluggable databases (PDBs).

If you’ve used this functionality in a non-CDB database, it’s going to look familiar, with a PDB-specific gotcha.

These articles discus moving and renaming files.

I’ve added this to my Multitenant YouTube playlist.

The star of today’s video is Todd Trichler, but he’s having the share the limelight with the top of Roel Hartman‘s head, and brief clips of John King and Debra Lilley on the video screen behind him.



Oracle Database 20c : Cloud Preview, Docs and Desupport

A little while ago Dominic Giles tweeted about the release of an Oracle Database 20c preview on Oracle Cloud and the Oracle Database 20c documentation. Some lucky people have already deployed the 20c preview. 🙂

Should we upgrade ASAP?

Dominic was quick to point out 19c is the long term support (LTS) release, and your focus should be to upgrade to that release. You should probably only upgrade to 20c if you really need some of the functionality it delivers, and are prepared to upgrade and patch regularly until you hit the next long term support release, which is likely to be 22c according to a slide from Sangham 2019, posted on Twitter by Patrick Jolliffe. 🙂

Most people will probably jump between LTS releases every 3-4 years.

I only care about LTS releases, so 20c is irrelevant right?

Wrong! {in flashing red lights}

It’s important to check out what is happening in the 20c release, because it may alter how you use the earlier releases now. There is no point launching into a new development using a feature that is about to disappear. Remember Oracle Streams anyone?

I’ve been banging on about Multitenant for over 6 years now, and I know a lot of people out there have stuck with the non-CDB architecture. If your intention is to jump between LTS releases, you need to get your CDB/PDB-foo up to scratch before the next LTS release, because as of 2oc, non-CDB has gone.

What should I do?

Take a look at this section of the Upgrade Manual.

Just scan down it to see if anything stands out as problematic for you. There are sections for 12.2, 18c and 19c too, if you are starting from further back. Think about the impact of this stuff on new and existing database deployments.

My advice. Stop using deprecated features ASAP. Start your migration away from them before you have to start worrying about upgrades.

Hopefully this will stop you making some bad decsions!

What stood out to you Tim?

I went on a Twitter frenzy as I was reading this section. Sorry about the spam if you follow me. 🙂

This is what jumped out at me. I’m not saying these all affect me, but they are interesting to me.

“Starting with Oracle Database 20c, Oracle Database is only supported using the multitenant architecture.”

I hope you knew this before this post. If this fills you with dread, don’t panic. I have articles here, and a YouTube playlist here. It’s going to be OK. You will get through this trauma! 🙂

“Traditional auditing is deprecated in Oracle Database 20c. Oracle recommends that you use unified auditing, which enables selective and more effective auditing inside Oracle Database.”

I’m not sure how this affects me. Further investigation is needed.

“Starting with Oracle Database 20c, older encryption and hashing algorithms contained within DBMS_CRYPTO are deprecated.”

This is giving me a bit of a panic attack. I don’t know how big an impact this is. It’s a deprecation notice, not a desupport notice, so there is still time… Maybe…

“Starting with Oracle Database 20c, Transport Layer Security protocol version 1.0 (TLS 1.0) is deprecated.”

When SSLv3 got pulled it killed us. Why? Because too many people were complacent and not willing to patch/upgrade their systems. As a result, on the day some of our external services turned off SSLv3, internal stuff broke and panic patching started! Patching without planning or testing.

Once again, this is a deprecation notice, so you’ve got time to start doing the right thing, but don’t leave it to the last minute. I always say it takes work to remain stationary in tech. You are swimming upstream and just keeping at the same spot takes effort. If you don’t make that effort, you are just floating downstream.

“Starting in Oracle Database 20c, the package DBMS_OBFUSCATION_TOOLKIT is desupported, and replaced with DBMS_CRYPTO.”

I’m hoping I’ve got everything moved across to DBMS_CRYPTO, but who knows?

“Starting in Oracle Database 20c, the Large Object (LOB) features DBMS_LOB.LOADFROMFILE and LOB buffering are desupported.”

Some time ago someone pointed out the deprecation notice in a previous release and I revisited all my website stuff (I think). It’s pretty easy to move to loadblobfromfile and loadclobfromfile, but that’s a piece of work and some testing that needs doing!

“Starting with Oracle Database 20c, the Oracle Grid Infrastructure feature Automatic Storage Management Cluster File System (Oracle ACFS) is desupported with Microsoft Windows”

This doesn’t affect me, but when you look at this alongside all the other ACFS deprecation and dessupport notices is makes rather grim reading. On the one had I’m thinking ACFS is for the chopping block, but on the other hand there are new features. Who knows what’s going on here?

“Desupport of Vendor Clusterware Integration with Oracle Clusterware”

I only included this one because it took me back to the glory days of Oracle 9i RAC on Tru64 and TruCluster. For quite some time since then, combining Oracle Clusterware with other clustering solutions as resulted in a clusterf*ck!

“Starting in Oracle Database 20c, the IGNORECASE parameter for the orapwd file is desupported. All newly created password files are case-sensitive.”

If I’m honest, I kind-of forgot this was possible. I think I only have one project that still uses case-insensitive passwords generally, and as of December last year, that is no longer necessary. I can’t remember needing case-insensitive passwords in the password file.

Is that it?

No, but it’s what stood out to me. Check the documentation for yourself and see what stands out for you.

What if it makes me depressed?

Check out the New Features Guide and look at all the new stuff you get to play with. Anyone want a new JSON data type with better performance? 🙂



Video : Oracle : Silent Installation and Database Creation

In today’s video we’ll take a look at the two sections of a database build that people often use a GUI for. The software installation using the Oracle Universal Installer (OUI), and the database creation using the Database Configuration Assistant (DBCA).

I recently wrote a post called Why no GUI installations anymore? I was surprised at how much comeback I got from that. This video isn’t a tutorial, but more of a taster to let people who are new to the subject see what they could be doing, rather than clicking buttons. 🙂

The video is based on the following articles.

If you want to see more a complete example of an automated build that uses these, you can check out this video.

If you want to get your hands dirty with automated builds, and you really should, you can play around with my Vagrant and Docker builds here.

There are lots of other people with builds on GitHub, including Oracle, so just play around with as many as you like. 🙂

The star of today’s video is David Hollenberger. I think he was a bit surprised when some random guy asked him for a random video clip. 🙂



Vagrant 2.2.7

Over the weekend I noticed Vagrant 2.2.7 had been released. It came out at the end of January, but I guess most of the time I just start a build and look at something else until it completes, so I didn’t see the glaringly obvious message telling me about the update. 🙂

I use Windows 10, macOS and Oracle Linux 7 (OL7) hosts, so I installed it on all three. Windows and macOS had no dramas. For the Linux host I had to uninstall 2.2.6, then install 2.2.7, as it didn’t want to do the upgrade. It doesn’t make a difference though.

Post upgrade, I’ve done a load of builds on all hosts, and not just Cloud Control 13.4 builds. 🙂 Everything has behaved fine. No problems with Vagrant 2.2.7 and VirtualBox 6.1.2.

Happy days!



Midlands Microsoft 365 and Azure User Group – February 2020

Last night I went to the Midlands Microsoft 365 and Azure User Group. It was co-organised by Urfaan Azhar and Lee Thatcher from Pure Technology Group, and Adrian Newton from my company.

This event clashed with the Cloud Native Computing Foundation meetup. If the clash continues I’ll probably have to alternate between the events.

First up was Penny Coventry with “Power Automate AKA Flow Introduction”. The session started with an overview of various “Power” products, before focusing on some of the Power Automate features. This included a demo of building an automation flow. I’ve seen Amy Simpson-Grange demonstrating UIPath and one of my colleagues Paul demonstrating LeapWorks, and as you would expect, there are a lot of similarities between these automation tools. I don’t know if I’ll get to do any of this, but I do find it interesting. I’ll probably wait for my colleague Natalie to learn it, then bug her to explain stuff to me, so I can act like I know what I’m doing. 🙂

After far too much pizza and a doughnut (diet starts tomorrow) it was time for Tom Gough with “Azure Machine Learning with Power BI”. The session started with an overview of some of the Artificial Intelligence (AI) and Machine Learning (ML) services on Azure. The mention of data preparation and data cleansing was quite interesting, as people don’t really say a lot about this. You could be forgiven for thinking this piece just magically happens. There was a demo of using Power BI desktop to prepare some data containing user comments, connect to Cognitive Services and pull out some key phrases from the data, and presenting it in some custom visualisations. One of my colleagues has used this to do sentiment analysis on responses to a chat bot running in the Azure Bot Service. Pretty interesting stuff, and he tells me it’s very easy to get some basic examples working.

It seems every event comes with some more signs that this stuff is gradually creeping into our company. I’m not sure if I will be part of this world, but it’s certainly interesting to see.

Thanks to everyone who turned up to support the event, the speakers, and the sponsor Pure Technology Group. See you at the next event.



PS. Apologies to Richard Harrison, who had to endure me asking questions for ages, while he froze to death. Bring some masking tape or a restraining order the next time you come. 🙂