To upgrade or not to upgrade? That’s the question!

Saturday’s post about 19c generated a lot of feedback on a number of my social media networks. To generalise, you could probably split the responses into two camps.

Of course, this discussion applies equally to other technologies, including the middle tier and development frameworks. It can also be applied to people’s attitudes to patching, as well as to upgrades.

We don’t want to upgrade.

I totally get why people think this is a viable option. Such arguments might include:

  • Stability is more important than new features. With new versions come new bugs and new instabilities.
  • We don’t have time/resources to test our application against the new version.
  • The cost (in time and resources) of upgrading is not worth the pay-off of being at the new version. It’s cheaper to pay for extended support than upgrade.
  • The version we are using has all the features we need, so upgrading is a waste of time.
  • Our customers don’t care about new versions.
  • We do all our business logic in the middle tier, so the DB is just a bit bucket. New features are irrelevant.

We want to upgrade to the latest versions.

This is closer to my position, with a few important caveats.

  • You have to have time to learn the new version, so you can get the most out of it, and not fall foul of new features that do things you might not expect.
  • You need to test your application properly against it, to make sure the new version doesn’t break anything. This seems to be the biggest sticking point for companies that haven’t invested in automated testing. A lacklustre approach to testing your application will often result in a disastrous upgrade.

So why would you bother? This is where I do my totally biased sales pitch. ๐Ÿ™‚

New versions contain new features, some of which actually work. ๐Ÿ™‚ There are headline new features that are just marketing bumf and irrelevant to me, but there are also some really useful things, which make life easier for you and your company. Look what’s happened just for online operations in the last few versions. I know some of these features have saved loads of downtime for people.

I tend to think development new features drive change more than DBA new features, because they outwardly affect more people in the company. For people who do development in the database, the last few releases have included a lot of really useful things. Let’s just look at just one of them that is dear to my heart.

If you know what is in the new releases and you don’t find anything compelling, then a choice to stay where you are is fine. We don’t all want the same things, and different opinions are fine. If you are just sticking with what you’ve got because you can’t be bothered to learn the new stuff, and you are content to do the same thing you’ve always done forever, I think you are selling yourself and your company short. Just my opinion though.

I’ve already declared my bias towards upgrades. Why? Because many of the problems I come across actually come from not staying up to date with versions and/or patches. The rest of the industry keeps moving, and somehow DBAs want to be totally static. I don’t understand that. Caution is good. Static is bad IMHO! ๐Ÿ™‚

Cheers

Tim…

Oracle 19c Released : How does that make you feel?

Back in 2017 I wrote a post about the move to the yearly release cycle for Oracle software. It’s over 18 months since that post and we’ve had 18c and now 19c released (on LiveSQL), so I thought I would reflect on some of the pros and cons I mentioned in that original post. If you want to know what I originally said about these points, go back to the original post.

Pros

  • Quicker release of features : It’s becoming clear to me that some of the 18c features were actually 12cR2 features that didn’t make it into the documentation, even though they were present in the product. I’m not sure if these were present in the initial release of 12.2.0.1, or got introduced in the proactive bundle patches later. I have no problem with this, but it feels like the documentation is not keeping up with the new features added in the release updates. Where 18c is concerned we’ve had 18.1, 18.2, 18.3, 18.4 and now 18.5, but I don’t see a change in the documentation. Now a drop of the documentation once a year that includes the latest changes is better than the once every 4 years, but it still feels odd that we’re getting new functionality added, but no way to see that except for scouring MOS notes. I wonder if this situation will continue in 19c release.
  • Predictable release cycles : Yes. Nice.
  • Stability : This was originally one of my cons, but I’m going to move it to the pros section. I was worried the quicker release cycle might lead to a lack of stability, rather than the improved stability. I don’t know how other people feel, but 12.2 and 18c have been pretty good for me. I try and apply the proactive bundle patches (BP), now Release Updates (RUs), so I’m going all-in and things have been good. We are a “middle of the bell curve” company, so I probably won’t experience some of the edge cases you might, but that’s what I feel about it. I hope 19c continues this trend, as I see it.

Cons

  • Upgrade/Patch burnout : I’m currently upgrading some databases to 18c, but part of me is thinking, “What’s the point?” Let’s say the on-prem 19c drops in April, and we will wait for the first RU after that which might be July. I’m potentially only 6 months from having a viable 19c upgrade path, which is after all the Long Term Support (LTS) release. Should I bother with 18c now? I can understand if some people say no. I’m still going to move forward, as this solves some other issues for me, including the conversion to Multitenant of some 11.2 instances, which will make future upgrades easier. Having said that, mentally it is a downer and I can feel an element of this burnout I predicted.
  • Product Support/Certification : Yep. As predicted, many companies don’t seem to recognise that 18c even exists, let alone support their products on it. If I were charitable I would say they are waiting for 19c as it’s a LTS release, but in reality they are still struggling to check that 12.2 PDBs work for their products. I hope vendors get their act together to provide support for these new versions more quickly. That includes Oracle too.

Unsure

  • Learning : This still concerns me. I got access to 18c straight away on Oracle Cloud and LiveSQL, so really I’ve had nearly a year of 18c. For those people that first experienced it after the on-prem release, they’ve had about 6 months experience and the 19c hype train has started. Now it will still be a year from one on-prem release to the next, but it just kind-of feels like it’s only a 6 month release, if you know what I mean. I’m currently still writing about 18c features, but part of me is thinking, “What’s the point?” My mind is looking forward to 19c. As we move forward I realise each release will be smaller, so working through the new features will not be so heavy, but I’m still worried people (and I really mean me) will disconnect.
  • Certification : I just checked today and they are still pushing the 12cR2 certification. Now this is still relevant, as 18c and 19c are effectively 12.2.0.2 and 12.2.0.3 respectively, but it just sounds bad. Hey, 19c has just been released and I’m working for the 12cR2 certification? I get the distinct feeling certification is dead to me now. Let’s see what Oracle Education do with this. Maybe I’ll change my mind.

Of course, it’s still early days so we will see how the cookie crumbles over the coming releases. I suspect I may be forced to cherry-pick a little.

Cheers

Tim…

PS. A Twitter comment from Frits Hoogland made me feel I should add something. If you are happy with what you have and don’t feel the need to upgrade often, that’s cool. Constantly chasing an upgrade can be problematic because of the instabilities it can cause. The new release cycle is allegedly meant to reduce that by drip-feeding change in smaller, manageable chunks…

Although a DBA may like some of the new features, they affect comparatively few people in the company. I feel development new features are a bigger draw for getting people to buy into the upgrade cycle. Just this week a project started on an existing 11.2 instance, but involved a bunch of JSON functionality, so it was moved across to an 18c instance. The developers only know this functionality is in 12.2 and 18c because I’ve actively promoted it. If I had not done this, they would have stuck with 11.2 and wasted a bunch of time manually coding stuff.

I’m a fan of keeping up with the latest versions, both personally and in the companies I work. In my experience avoiding upgrades and patches tends to cause more problems than keeping relatively up to date. Just my opinion though…

VirtualBox 6.0.2

VirtualBox 6.0.2 has been released.

The downloads and changelog are in the usual places.

Iโ€™ve installed it on my Windows 10 laptop at work, which I use with Vagrant for testing of Oracle, WebLogic, Tomcat server builds, as well as Docker builds. Iโ€™ll do my personal Windows 10 laptop, old MBP and OL7 server when I get home.

Update: I’ve done an install on my Windows 10 laptop, MackBook Pro running macOS Mojave and a server running Oracle Linux 7. The installations of VirtualBox 6.0.2 on all hosts worked fine. I rebuilt a bunch of VMs using Vagrant 2.2.3 and everything looks good.

Cheers

Timโ€ฆ

My GitHub, Vagrant and Docker Updates

I thought I would post an update about some of the things I’ve been doing that don’t necessarily fall exactly in line with my normal website content. All of it can be found on my GitHub.

Vagrant

Once the ‘bento/fedora-29’ box was released I created a Oracle 18c on Fedora 29 build. If you are interested in that sort of thing you can find it here.

A few of the other Vagrant builds have been updated to use the ‘bento/oracle-7.6’ box. I’ve run through them all and they seem to be fine.

As part of a recent question, I ran my RAC builds on Windows 10, Oracle Linux 7.6 and macOS Majave hosts. They all worked fine, with no drama. I also tried them with less memory than before, as my MBP only has 16G of memory. It worked fine. I updated some of the “README.md” files to reflect these tests, and the option to use less memory.

I’ll be doing some stuff with Data Guard soon, so I will probably update those builds to use the latest ‘bento/oracle-7.6’ box and maybe neaten up anything that annoys me along the way. ๐Ÿ™‚

All the Vagrant-related stuff can be found in this GitHub repository.

I’ve always assumed Vagrant was so simple it didn’t really require much in the way of explanation, but I was discussing it with someone from work, and figured it was worth a short post to explain a few things, just to save me having to repeat myself, so here it is.

Docker

I’ve done a few random things on Docker recently. Nothing particularly earth-shattering, but maybe worth a mention.

At UKOUG last year (a month ago ๐Ÿ™‚ ) I was speaking to Roel Hartman about some stuff he mentioned in his Docker session. As a result of that I had a play with Portainer and Docker Swarm. I know Kubernetes has won the container orchestration war, but Swarm is so simple and does most of what I need.

I also needed to make some changes to my DB and ORDS Docker images to make using host directories as persistent volumes a little easier. I wrote these up as some short posts.

All the Docker-related stuff can be found in this GitHub repository.

As always, I feel the need to mention I’m not an expert in this stuff, and I don’t consider any of is “production ready”. It’s just stuff I’m playing with to learn the tech. If you find it useful, great. If not, that’s OK too. ๐Ÿ™‚

Cheers

Tim…

Why Automation Matters : Consistent Test Environments

I’ve already made this point in a previous post, but I thought it was worth mentioning in a little more detail.

One of the neat things about automation is it gives you the ability to quickly build/replace test environments, so you know you have a consistent starting point. This is especially important for automated testing (unit, integration etc.), but it also applies to your learning experience.

I’m currently learning about a bunch of Oracle 18c new features. Some of those features are limited to engineered systems and Oracle Database Cloud Services. Not to worry, there is a little hack that gets you round some of those restrictions for testing purposes.

alter system set "_exadata_feature_on"=true scope=spfile;
shutdown immediate;
startup;

In some cases I’m enabling extended data types. I’m also building additional test instances, and multiple test users, each requiring different levels of privileges.

So I finish learning about feature X and I move on to learning about feature Y. What am I bringing along with me for the ride? What problems will I run into, or not run into, as a result of the hacks I put in place for the previous test? I have no way of knowing.

This is where automation comes in really useful. You can quickly burn and build your test environment and start with a clean slate. This can also be really useful to check your understanding, by rerunning your tests on clean kit. Did you really remember to write down everything you did? ๐Ÿ™‚

It’s kind-of obvious I know, but it’s really surprising how often I’m rebuilding my testing kit these days. I’m literally talking multiple times a day just when I’m messing about with stuff. Earlier in the week someone asked me a question about RAC builds and I did the following in a 3 hour period, while I was doing other stuff. ๐Ÿ™‚

  • Oracle 18c RAC build on a Windows 10 host.
  • Oracle 12.2 RAC build on a Windows 10 host.
  • Oracle 18c RAC build on an Oracle Linux 7.6 host.
  • Oracle 18c RAC build on a macOS Mojave host.

There’s no way I could have contemplated that without automation.

When you are learning new stuff, the last thing you need to worry about is being thrown off target by crap left over from previous tests, so just start again with a clean slate!

Cheers

Tim…

PS. I know sometimes you can learn interesting stuff by making mistakes, like finding out that feature X and feature Y are incompatible, but I think you should approach those sort of tests in a controlled and conscious manner. Learning the basics first is far more important in my opinion.

2018 : A Year in Review

What a strange year this has been for me from a technology perspective!

The Good

Lots of good things have happened over the year.

  • I did presentations at 15 separate tech events, as well as a talk to students at a local university. I do some talks at work too, but you can’t really count that. Even though I had some drama at some of the conferences, the presentations went well for the most part.
  • I was one of a group of people named as an “Oracle Code One Star” at Oracle Code One 2018, based on the speaker evaluations from last year’s Java One conference.
  • I got a Lifetime Achievement Award at UKOUG Tech18. This sounds a bit like being put out to pasture, but it’s just another speaker award based on the speaker evaluations from UKOUG Tech 17. You can only win three awards, so your third is called a lifetime achievement award, and you aren’t allowed in the race in following years.
  • I wrote over 150 blog posts, which averages at about one every 2.5 days. That sounds like a lot, considering I feel like I’ve not had much time to write this year.
  • I wrote over 90 articles for the website, which is more than one every 4 days. That also sounds like a lot. I just checked and in the last 18.5 years I’ve averaged more than one article a week. Crazy.
  • I’ve been putting a bunch of stuff on GitHub. It’s all stuff I’m messing with, as opposed to “real projects”, but it feels nice.

The Bad and the Ugly

Followers of the blog know this has been a tough year for me, because I keep moaning about it in posts like this.

When I’m travelling I pretty much write a daily diary on the blog, which reads like, “Which country did Tim puke in today?” I can’t have another year like this year.

Work has been hard this year, and will continue to be for the foreseeable future. I feel like I’m trapped in an abusive relationship with work. There are some big projects happening over the coming year and cruising is not an option. I’m not really sure how I’m going to cope. Time will tell I guess.

Next Year

Not resolutions as such, but some things I am thinking about for next year.

  • I’ve got to sort out my crappy lifestyle a bit. I’ve let everything just go to wrack and ruin this year and it shows both mentally and physically. I’m convinced it’s a big factor in the way this year has gone. I’m not going to make any rash promises, because I know me, but if I can just tune in again things might get better.
  • I’ve turned down a few conferences already for 2019. I will still be doing some, but I’m not sure how many. My confidence has hit rock-bottom and I just need something to dig me out of this funk. I tried to muscle through it this year, and it’s caused more harm than good.
  • It would be nice to do some YouTube videos again. I keep meaning to, but similar to the conference presentations, I’ve lost my mojo. I have no goals as far as numbers are concerned, but it would be nice to think this time next year I can say I’ve done some. At the moment, I’m enjoying putting together Fortnite game play videos for nephew #2 and nephew #1 has started to use my GoPro to record his downhill mountain biking, so I’ve done the first of what might be many of those for him.
  • As far as the website goes, it’s more of the same. Having some time over Christmas has allowed me to do some more learning and writing and I just feel more positive about things. It feels like getting back to my roots.
  • Work? It’s the classic case of you can work hard, or you can work long, but you can’t do both. Like a number of other people the days are getting longer and longer, but the backlog is not getting any shorter. I’ve just got to push the keyboard away and leave. It will all be there in the morning and I’ll be in a better position to deal with it.

Happy New Year everyone!

Cheers

Tim…

It’s not my job to do your job for you!

I’m currently drowning in a sea of requests for a number of things, including people wanting me to help them with specific issues, which feels a bit like they want me to do their job for them. I feel a little bit uncharitable saying that, but that’s how it feels.

Let me start by saying I understand what it’s like to be asked to do stuff in your job that you don’t know anything about, and also don’t care about. Sometimes, if you can Google a solution and move on it’s a happy day. Having said that, I’m also aware that I can’t expect every article and blog post I come across to contain exactly what I’m looking for. You have to do a certain amount of digging, mixing & matching and it involves a certain amount of trial and error to get to a solution.

Here’s an example I’ve had recently. I’m not saying this was a case of “do my job for me”. The person in question was very polite and not at all demanding, so I feel safe to use this example, and I’m hopefully not going to offend them.

The interaction started with a question about XMLTABLE. It became clear over time this was actually several points wrapped into one.

  • Basic usage of XMLTABLE, explained here.
  • Usage of XMLTABLE with a variable, rather than from querying a table, explained here.
  • Populating a variable (presumably an XMLTYPE) with XML from a URL, explained here.
  • Dealing with network ACLs, which was mentioned in the previous link, but explained more fully here.
  • Making HTTPS calls from the database, explained here.

All these pieces were already explained on the website, but there wasn’t one page that put them all together. As a result of that question I added a bunch of extra links between articles to make the situation a little more obvious.

People contact you and from their perspective it’s a one-to-one interaction, but from your perspective it’s a one-to-many, as they are not the only person requesting your time. You end up feeling guilty you can’t help more, and I’m sure some of them think you are being a dick because you are not helping them. This situation just doesn’t scale.

It’s almost impossible for anyone to be an expert these days. You have to mix & match information to get to a solution. If you want a job in IT, you have to develop this ability to find information from several sources and combine it to get to a final solution. If you are expecting someone else to do that for you, you are never going to get anywhere.

Cheers

Tim…

PS. In my response to a comment below, I am reminded of some words from Tom Kyte who said, “The more you do, the more people want you to do!” ๐Ÿ™‚

Visibility vs Results

If you speak to my colleagues you will know one of my regular topics of conversation at meetings is the “judgement of worth” within the company. I get quite annoyed when I see people who I believe are adding value, but always seem to get ignored, while others who talk a great talk, but ultimately can’t walk the walk, seem to catch all the breaks. It seems visibility is more important than getting results these days.

One of my colleagues sent me a link to this article and it really sums up what I keep saying.

I’ve spent the last 18 years telling the internet what I think, so I couldn’t deny a tendency for self-promotion, but I like to think I can actually deliver, not just talk about it! Of course, you will never really know unless you work with me, and that’s the point. It certainly seems people believe what they are told, regardless of whether there is any factual basis to it.

So what should you do? Well in my opinion, maybe this is a start.

  1. Actually learn your subject in the first place. I hope your aim isn’t to be one of these creeps. I hope your aim is to continuously improve and deserve any good breaks you get.
  2. Learn to speak about your subject in a clear, concise and professional manner. Don’t sit there silently, then blame the world for being unfair. The world is unfair! Deal with it! Make a positive change! If you need some pointers, I’ve written some public speaking tips here.
  3. Learn to write in a clear, concise and professional manner. If you write unintelligible emails, people are going to assume you are dumb. I happen to think blogging is a good way to improve your writing skills. I’ve written some pointers about blogging here. Ultimately, it doesn’t matter how you get there, but you must be able to make yourself understood.
  4. Don’t let other people take the credit for what you do. I’m not suggesting you write an email to the CEO every time you deploy an application, but by the same token, don’t let someone else stand up and take the credit you deserve, especially if it’s because you are too scared to actually stand up and speak for yourself, and instead rely on others to present your work.
  5. For the bosses out there, try to start judging people by actual results, rather than by what they say they can/have done.

I realise I sound kind-of narky in this post, but I think it’s really important. It really gets on my nerves when I see people taking the credit for other people’s work, and I’m equally annoyed when I see other people letting it happen.

I’m not suggesting you bully the perpetrators, or make a big show of the situation. Just don’t give them the opportunity to steal your moment in the sun!

Good luck folks!

Cheers

Tim…

PS. The wife said something in a Facebook comment that reminded me of something I wanted to say. I regularly get accused of name dropping, because I say things like, “I was chatting with X, and they said…”. This isn’t me trying to brag about all the “famous” people I know. It’s because I don’t want to come over as having these ideas for myself. I’m going to name-check people, even if you think it makes me look like I’m bragging, because they deserve the credit for their work and their ideas. If they tell me the origin of their idea, I’ll say, “I spoke to X, who said they heard Y say…”. Sorry if this annoys you personally, or you want to make a negative judgement about why I do it, but I think it matters…

WordPress 5.0.2

I posted a few days ago about the release of WordPress 5.0. As I said at the time, you can always expect a rash of new updates after a major release and this is the second maintenance release since then. There’s no drama, as these maintenance releases are applied automatically, so by the time you read this, you will probably already have it. The point of this post is to remind you to check for the other updates that aren’t automatic.

Since the release of version 5.0 I’ve had a lot of updates to plugins and some theme updates. The 5.0.2 release has come with another bunch of theme updates too. None of the plugin and theme updates happen automatically, so if you are self-hosting, remember to check the updates to these components. Running old versions of plugins and themes can present a security risk, as well as leading to unexpected behaviour of your site.

Happy upgrading. ๐Ÿ™‚

Cheers

Tim…