Tim Hall

Subscribe to Tim Hall feed
Oracle related rants (and lots of off-topic stuff)...
Updated: 9 hours 34 min ago

Upgrades : You have to do them. When are you going to learn? (TLSv1.2)

Thu, 2020-10-08 06:43

Questions:

  • Do you remember when SSLv3 was a thing?
  • Do you remember when everyone disabled SSLv3 on their websites?
  • Do you remember how loads of people running Oracle database version 11.2.0.2 and lower cried because all their database callouts failed?
  • Do you remember how they were all forced to patch to 11.2.0.3 or 11.2.0.4 to get support for TLS?
  • Do you remember thinking, I’ll never let something like that happen again?

I’m so sick of saying this. I know I sound like a broken record, but it’s like I’m living in the movie Groundhog Day.

There is no such thing as standing still in tech. It’s like swimming upstream in a river. It takes work to remain stationary. The minute you stop for a rest you are actually moving backwards. I’m sure your next response is,

“But Tim, if it ain’t broke, don’t fix it!”

The minute you stop patching and upgrading, your application is already broken. Yesterday you had an up-to-date system. Today you don’t. You have stopped, but the world around you continued to move on, and sometimes what they do will have a direct impact on you.

The security folks have been complaining about TLSv1.0 and TLSx1.1 for ages, but we are now in the position where the world and their dog are switching off those protocols, and the “we don’t need no stinking patches or upgrades” brigade are pissing and moaning again.

You knew this was going to happen. You had plenty of warning. It is your fault things are now failing. The bad decisions you made have led you to this point, so stop blaming other people. IT IS YOUR FAULT!

Where do you go from here?

First things first, start planning your patch cycles and upgrade cycles. That isn’t a “one time and done” plan. That is from now until forever. You’ve got to keep your server operating systems and software up to date.

If you can’t cope with that, then move to a cloud service that will patch your shit for you!

I know upgrades aren’t necessarily a quick fix, as they need some planning, so you will need some sticking plasters to get your through the immediate issues. Things to consider are:

  • Your load balancers and/or reverse proxies can hide some of your crap from the outside world. You can support TLSv1.2+ between the client and the reverse proxy, then drop down to a less secure protocol between your reverse proxy and your servers.
  • You can do a similar thing with database callouts to the outside world. Use an internal proxy between you and the external resource. The connection between your proxy and the outside world will speak on TLSv1.2+, but the callout from the database to your proxy will speak using a protocol your database can cope with.

These are not “fixes”. They are crappy sticking-plaster solutions to hide your incompetence. You need to fix your weak infrastructure, but these will buy you some time…

I don’t really care if you think you have a compelling counter argument, because I’m still going to scream “WRONG” at you. If you don’t think patching and upgrades are important, please quit your tech job and go be incompetent somewhere else. Have a nice life and don’t let the door hit you on the ass on your way out!

Cheers

Tim…

PS. You know this is going to happen again soon, when the world decides that anything less than TLSv1.3 is evil.

The post Upgrades : You have to do them. When are you going to learn? (TLSv1.2) first appeared on The ORACLE-BASE Blog.

Upgrades : You have to do them. When are you going to learn? (TLSv1.2) was first posted on October 8, 2020 at 12:43 pm.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Packer by HashiCorp : Second Steps?

Thu, 2020-09-24 05:54

In a previous post I mentioned my first steps with Packer by HashiCorp. This is a brief update to that post.

I’ve created a new box called “oracle-7” for Oracle Linux 7 + UEK. This will track the latest OL7 spin. You can find it on Vagrant Cloud here.

I’ve altered all my OL7 Vagrant builds to use this box now.

You will see a new sub-directory called “ol7” under the “packer” directory. This contains the Packer build for this new image.

Cheers

Tim…

The post Packer by HashiCorp : Second Steps? first appeared on The ORACLE-BASE Blog.

Packer by HashiCorp : Second Steps? was first posted on September 24, 2020 at 11:54 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : Multitenant : Dynamic CPU Scaling – Resource Manager Control of CPU using CPU_COUNT and CPU_MIN_COUNT

Mon, 2020-09-21 01:35

In today’s video we’ll discuss how Resource Manager can control CPU usage in PDBs using the CPU_COUNT and CPU_MIN_COUNT parameters. Oracle call this Dynamic CPU Scaling. This can be useful to stop a small number of PDBs using all CPU resources assigned to the instance.

This video is based on the following article.

Most of this information was in my instance caging article, but I’ve moved it into this separate article now.

You might also find these useful.

The star of today’s video is Bailey. He has a human called Connor McDonald. I suspect Bailey got is human to voice the video…

Cheers

Tim…

The post Video : Multitenant : Dynamic CPU Scaling - Resource Manager Control of CPU using CPU_COUNT and CPU_MIN_COUNT first appeared on The ORACLE-BASE Blog.

Video : Multitenant : Dynamic CPU Scaling – Resource Manager Control of CPU using CPU_COUNT and CPU_MIN_COUNT was first posted on September 21, 2020 at 7:35 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Vagrant Box Drama

Mon, 2020-08-31 13:34

I had a little bit of VirtualBox and Vagrant drama today.

I was doing my normal thing of recreating some test VMs and I started to get errors like this during the first part of the VM build, before the config scripts ran.

==> default: Machine booted and ready!
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:
VBoxService inside the vm claims: 6.1.12
Going on, assuming VBoxService is correct…
[default] GuestAdditions seems to be installed (6.1.12) correctly, but not running.
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:
VBoxService inside the vm claims: 6.1.12
Going on, assuming VBoxService is correct…
Redirecting to /bin/systemctl start vboxadd.service
Job for vboxadd.service failed because the control process exited with error code.
See "systemctl status vboxadd.service" and "journalctl -xe" for details.
Redirecting to /bin/systemctl start vboxadd-service.service
Job for vboxadd-service.service failed because the control process exited with error code.
See "systemctl status vboxadd-service.service" and "journalctl -xe" for details.
Got different reports about installed GuestAdditions version:
Virtualbox on your host claims:
VBoxService inside the vm claims: 6.1.12
Going on, assuming VBoxService is correct…
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules. This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup
VirtualBox Guest Additions: or
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Kernel headers not found for target kernel
5.4.17-2011.5.3.el8uek.x86_64. Please install them and execute
/sbin/rcvboxadd setup
ValueError: File context for /opt/VBoxGuestAdditions-6.1.12/other/mount.vboxsf already defined
modprobe vboxguest failed
The log file /var/log/vboxadd-setup.log may contain further information.
==> default: Checking for guest additions in VM…
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/usr/sbin/rcvboxadd setup
Stdout from the command:
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules. This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup
VirtualBox Guest Additions: or
VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Kernel headers not found for target kernel
5.4.17-2011.5.3.el8uek.x86_64. Please install them and execute
/sbin/rcvboxadd setup
Stderr from the command:
ValueError: File context for /opt/VBoxGuestAdditions-6.1.12/other/mount.vboxsf already defined
modprobe vboxguest failed
The log file /var/log/vboxadd-setup.log may contain further information.

The VM had booted, but because the guest additions weren’t working it couldn’t mount the shared folders, so none of the setup scripts had run.

Reading the output I figured the kernel-uek-devel package was missing from the Vagrant box, so I did the following…

I connected to the VM, installed the “kernel-uek-devel” package and exited from the VM.

vagrant ssh

sudo dnf install -y kernel-uek-devel
exit

Then I restarted the VM.

vagrant halt
vagrant up

During this second startup of the VM the problem kernel module was rebuilt, and the rest of the configuration steps ran the way you would expect from a normal first-time startup.

One of the issues about using someone else’s Vagrant box is you are at the mercy of what they decide to do with it. In this case I was using the ‘bento/oracle-8’ Vagrant box, which was built using Oracle Linux 8.2 with UEK 6, but the installed guest additions were not happy, and the packages were not present to allow the kernel module to be rebuilt on the fly.

If you are trying to use my Vagrant builds, which mostly use the ‘bento/oracle-8’ Vagrant box, and you are getting this type of issue, now you know what to do about it. Hopefully the next release of this Vagrant box will be less problematic.

Cheers

Tim…

Update: I spent some time figuring out Packer, and now I’ve switched all my OL8 builds to use my own image called ‘oraclebase/oracle-8’.

The post Vagrant Box Drama first appeared on The ORACLE-BASE Blog.

Vagrant Box Drama was first posted on August 31, 2020 at 7:34 pm.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : Simple Oracle Document Access (SODA) for REST

Mon, 2020-08-24 01:48

In today’s video we’ll give a demonstration of Simple Oracle Document Access (SODA) for REST. This is a feature of Oracle REST Data Services (ORDS).

This video is based on the following article.

There are some other resources that might come in handy.

The star of today’s video is the son of Rodrigo Mufalani. Rodrigo is a fellow Oracle ACE and you can check out Rodrigo’s blog here.

Cheers

Tim…

The post Video : Simple Oracle Document Access (SODA) for REST first appeared on The ORACLE-BASE Blog.

Video : Simple Oracle Document Access (SODA) for REST was first posted on August 24, 2020 at 7:48 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Oracle Autonomous JSON Database (AJD) : The Big Reveal

Fri, 2020-08-14 01:36

The Autonomous JSON Database (AJD) was announced during the Oracle Developer Live (#OracleDevLive) event last night. This was accompanied by a blog post announcement here.

I was on an briefing the night before where we were told about this announcement in advance. Later I found out the service had been live since Tuesday, but they were waiting for this event for the big reveal. As soon as I knew it was live I fired up an instance up on my free tier account, but I had to wait for the announcement before I released the article. You can see what I tried here.

If it looks familiar, that’s because it is. The Autonomous JSON Database is essentially an Autonomous Transaction Processing (ATP) instance with some restrictions, that you get to run for less money. You can “convert” it to full ATP at the click of a button if you want to. Obviously, the price changes then.

If you are considering using the Autonomous JSON Database service you will need to learn more about SODA (Simple Oracle Document Access). I’ve written a few things about this over the years.

There are SODA APIs for a bunch of languages. You can do all of this on-prem using Oracle REST Data Services (ORDS), but it comes ready to go on AJD and ATP.

So now it’s here, and it’s available on the Oracle Cloud Free Tier, what have you got to lose?

Cheers

Tim…

The post Oracle Autonomous JSON Database (AJD) : The Big Reveal first appeared on The ORACLE-BASE Blog.

Oracle Autonomous JSON Database (AJD) : The Big Reveal was first posted on August 14, 2020 at 7:36 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

VirtualBox 6.1.12

Wed, 2020-07-15 09:25

The VirtualBox 6.1.12 maintenance release has appeared with all the Oracle quarterly patches.

The downloads and changelog are in the usual places.

I’ve installed it on Windows 10, macOS Catalina and Oracle Linux 7 hosts with no dramas. My Vagrant builds seem happy too…

Cheers

Tim…

VirtualBox 6.1.12 was first posted on July 15, 2020 at 3:25 pm.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Vagrant and Docker Builds : ORDS 20.2 and SQLcl 20.2 Updates

Tue, 2020-07-14 02:13

The recent Oracle REST Data Services (ORDS) 20.2 release prompted my usual reaction. I’ve gone through my Vagrant and Docker builds, and updated them to use ORDS 20.2 and SQLcl 20.2.

The Vagrant database builds, which include ORDS, can be found here.

The Docker ORDS builds can be found here.

There were also some small Tomcat mods.

  • Tomcat upgraded to 9.0.37.
  • HTTP/2 enabled.
  • Compression enabled.
  • Cache-Control enabled for images, CSS and Javascript.

All that went pretty well so as soon as I got to work yesterday I rolled ORDS 20.2 to all non-production environments, and a few “not yet production” environments. If you follow the blog you will know we use Docker for ORDS (similar to my Github builds). It makes rolling out a new version really simple. Just throw away all the containers and replace them with the spangly new ones.

If it’s looking OK after a few days we’ll push it out to the remaining production installations.

Cheers

Tim…

Vagrant and Docker Builds : ORDS 20.2 and SQLcl 20.2 Updates was first posted on July 14, 2020 at 8:13 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : Resource Manager : Runaway Query Management

Mon, 2020-07-13 02:03

In today’s video we give a quick demonstration of using Resource Manager to cancel a long running SQL statement.

This video is based on a series of articles from Oracle 8i to the present day. There is an example here.

Although there are aspects of it throughout most of the Resource Manager articles on the website.

The horror show was brought to you by Jeff Smith. Notice his proximity to assorted torture devices he probably describes as “tools” when questioned by the authorities.

Cheers

Tim…

Video : Resource Manager : Runaway Query Management was first posted on July 13, 2020 at 8:03 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

When Implicit Date Conversions Attack

Wed, 2020-07-08 02:12

Yesterday, one of the developers was having a problem and emailed to ask what was going on. They sent me a section of code from an old trigger that included some date handling that looked “interesting”.

TO_DATE(SYSDATE,'DD/MON/RRRR')

Some bright spark had decided this was the best way to trim the time component off a date, and unfortunately for us it worked for a very, very long time. Many years in fact.

Why was this causing a problem now? They were trying to do an update of a table that caused this to trigger to fire. The update was working fine from SQLcl, but failed when it was called from APEX, giving this error.

ORA-01843: not a valid month

Let’s take a look at what was happening here.

The SYSDATE function returns a date. The TO_DATE function expects a string as input, so Oracle does you a “favour” and does an implicit conversion from date to a string. How does it know how to do this conversion? It uses the NLS_DATE_FORMAT value for the session. What is the default value in our database?

SQL> SELECT SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') FROM dual;

SYS_CONTEXT('USERENV','NLS_DATE_FORMAT')
----------------------------------------
DD-MON-RR

SQL>

OK. So this is what is really happening, thanks to the implicit conversion.

TO_DATE(TO_CHAR(SYSDATE,'DD-MON-RR'),'DD/MON/RRRR')

That’s lucky. Those formats will work with no errors. Phew.

SQL> SELECT TO_DATE(TO_CHAR(SYSDATE,'DD-MON-RR'),'DD/MON/RRRR') FROM dual;

TO_DATE(T
---------
08-JUL-20

SQL>

So what’s the problem with APEX?

If I print out the NLS_DATE_FORMAT value from my APEX session it defaults to ‘DS’. What does that look like?

SQL> SELECT TO_CHAR(SYSDATE,'DS') FROM dual;

TO_CHAR(SY
----------
08/07/2020

SQL>

This is ‘DD/MM/YYYY’. Now I’m hoping you see the problem.

MON = MON
MM <> MON

We can see the result here.

SQL> ALTER SESSION SET nls_date_format = 'DS';

Session altered.

SQL> SELECT TO_DATE(SYSDATE,'DD/MON/RRRR') FROM dual;

Error starting at line : 1 in command -
SELECT TO_DATE(SYSDATE,'DD/MON/RRRR') FROM dual
Error report -
ORA-01843: not a valid month

SQL>

The implicit conversion used a different format mask that happened to be incompatible with the format mask used by the TO_DATE call.

In this case, they should have removed the time component using TRUNC(SYSDATE), but that’s not really the point of this post. Relying on an implicit conversion is *ALWAYS* a bug waiting to happen. In this case it took many years to surface, but the bug was always there. Waiting! APEX didn’t break the code. The code was already broken.

Date handling seems to mystify a lot of people, but it’s not that hard. You just have to pay attention and understand the functions you are using, rather than randomly combining things together until they appear to work.

Cheers

Tim…

PS. If someone says Oracle stores dates as strings, punch them in the face. I take no responsibility for the outcome of this action.

PPS. If you want to know more about Oracle dates, timestamps and intervals, you might want to look at this article.

When Implicit Date Conversions Attack was first posted on July 8, 2020 at 8:12 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : Podman : Generate and Play Kubernetes YAML Files

Mon, 2020-06-08 01:11

Today’s video demonstrates Podman’s ability to generate and play Kubernetes YAML files.

This is based on the following article.

You can might want to check out these also.

The star of today’s video is Max McDonald, son of Connor McDonald.

Cheers

Tim…

Video : Podman : Generate and Play Kubernetes YAML Files was first posted on June 8, 2020 at 7:11 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

VirtualBox 6.1.10

Sat, 2020-06-06 09:52

VirtualBox 6.1.10 has been released.

The downloads and changelog are in the usual places.

I’ve installed it on Windows 10, macOS Catalina and Oracle Linux 7 hosts and there wasn’t any drama. My Vagrant boxes seem to be running fine.

Cheers

Tim…

VirtualBox 6.1.10 was first posted on June 6, 2020 at 3:52 pm.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Oracle Database 19c RAC On OL8 Using Vagrant

Tue, 2020-05-26 02:14

On Sunday 17th May I started the process of putting together a Vagrant build of Oracle 19c RAC on Oracle Linux 8 (OL8.2 + EUK). I figured it would take me about 20 minutes to amend my existing OL7 build, but it took the whole of that Sunday, every evening for the following week, and the whole of the following Saturday and Sunday to complete it. There were some late nights, so from an hours perspective it well over 5 days of work. Most of that time would have been completely unnecessary if I wasn’t an idiot.

First things first. The result of that effort was this build on GitHub, with an associated article on my website describing the build in more detail.

For the remainder of this post I want to describe the comedy of errors that went into this creation. These problems were not indicative of issues with the software. These problems were totally down to me being an idiot.

Changes when using OL8

The vast majority of the build remains the same, but there was one change that was necessary when moving to from OL7 to OL8. This became evident pretty quickly. When configuring shared disks and UDEV, I switched from using partprobe to partx. It did look like partprobe was working, but it chucked out loads of errors, and partx didn’t. I found out about this from Uncle Google.

There was also a slight difference in getting the UUID of a regular VirtualBox disk in OL8, but I had already noticed that on single instance builds, so that wasn’t a problem.

Where it all started to go wrong

So with those minor changes in place, all the prerequisites built fine and I was ready to start the Grid Infrastructure (GI) installation. I try to do these builds using the stock releases, so people without Oracle Support contracts can try them. In this case that meant using the 19.3 software. This really marked the point where it all started to go wrong. I knew this build was only certified on 19.7, but I continued anyway…

None of the 19.3 installers recognised OL8, so I had to fake the Linux distribution using the following environment variable.

export CV_ASSUME_DISTID=OEL7.6

The 19.3 GI software refused to install, saying there was a problem with passwordless SSH connectivity. I tested it and it all looked good to me. I searched for solutions to this on Google and MOS, checking out everything I could find that seemed relevant. None of the solutions helped.

For the hell of it I tried on older releases of OL8. I had the same issue with OL8.1, but OL8.0 worked fine. I figured this was something to do OpenSSL or the SSH config, so I searched for more MOS notes and tried everything I could find. After a very long time I reached out to Simon Coter, who came back with an unpublished note (Doc ID 2555697.1), which included a workaround. That solved my problem for the 19.3 GI installation on OL8.2.

The GI configuration step and the DB software-only installation went fine, as they had done on OL8.0 also. Unfortunately the DBCA was failing to create a database, producing errors about passwordless SSH problems. The previous fix wasn’t helping, and I tried every variation I could find, short of totally downgrading OpenSSL.

At this point I pinged Markus Michalewicz a message, hoping he would be my salvation. In short he confirmed the build did work fine on OL8.2 if I used the 19.7 software, so the writing was on the wall. Then I stumbled on a MOS note (Doc ID 29529394.8) that explained the DBCA problem on OL8. There was no workaround, and it said it was fixed in 19.7. There is always a workaround, even if it means hacking the Linux distribution to death, but the more you do that the less realistic your build is, so at that point I conceded that it was not sensible to continue with the 19.3.

When I write it down like this it doesn’t seem like a lot, but all this took a long time. I was trying different Vagrant boxes, and eventually built some of my own for OL8.0 and OL8.2, to make sure I knew exactly what was on them. Added to that, many of the tests required full rebuilds, so I was waiting sometimes in excess of an hour to to see a success/fail message on the next test. It was soul destroying, and I nearly gave up a few times during the week.

A New Hope

Once I decided to go with the 19.7 patch things moved pretty quickly. I had the 19.3 GI installed and configured and the 19.3 DB software installed, so I added in a script to patch the lot to 19.7, and the database creation worked fine. Job done.

I cleaned things up a bit, pushed it to GitHub and put together the longer description of the build in the form of an article (see links above).

Pretty soon after I put all this live I got a comment from Abdellatif AG asking why I didn’t just use the “-applyRU” parameter in the Grid and DB software installations to apply the patches as part of the installation. At this point I felt a mix of emotions. I was kind of frustrated with myself for wasting so much time trying to get 19.3 working in the first place, then annoyed at myself for being so blinkered by the existing build I hadn’t seen the obvious solution regarding the patching. Why build it all then patch it, when you can do it right first time?

The conversion of the build to use the “-applyRU” parameter with the runInstaller and gridSetup.sh calls was really quick, but the testing took a long time, because these builds take in excess of 90 minutes each try. Things pretty much worked first time.

Now that I was effectively using 19.7 software out of the gate I figured many of the tweaks I had put in place when using the 19.3 software were no longer needed. I started to remove these tweaks and everything was good. By the end of that process I was pretty much left with the OL7-type build I started with. The vast majority of my time over the last week has been unnecessary…

Conclusion

The 19c (19.7) RAC build on OL8.2+UEK6 is pretty straight forward and works without any drama.

This process has shown me how stubborn and blinkered I can be at times. Taking a step back and getting a fresh perspective would have saved me a lot of time in the long run.

Thanks to Simon Coter, Markus Michalewicz and Abdellatif AG who all witnessed my descent into madness.

Cheers

Tim…

PS. There are some extra notes at the end of the article, which include some of the MOS notes I tried along the way. They are unnecessary for the build, but I felt like I should record them.

PPS. The image is how I feel at the end of this process.

Oracle Database 19c RAC On OL8 Using Vagrant was first posted on May 26, 2020 at 8:14 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : NTH_VALUE : Problem Solving using Analytic Functions

Mon, 2020-05-18 02:10

Today’s video is a demonstration of the NTH_VALUE analytic function.

This is based on this article.

You might find these useful also.

The star of today’s video is Connor McDonald. This is his second visit to the channel. I’m sure most of you must know Connor from his blog and AskTom. He also has a YouTube channel here.

Cheers

Tim…

Video : NTH_VALUE : Problem Solving using Analytic Functions was first posted on May 18, 2020 at 8:10 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Social Distancing : My Experience

Sat, 2020-05-16 04:33

The UK has started to relax *some* of the lock-down conditions, so I thought I would write down some of my thoughts related to social distancing…

The Good

First and foremost, social isolation and social distancing is predominantly a good thing for me. I live alone, and as I’ve said many times before I like it that way. There is a “work Tim”, a “conference Tim”, a “with friends/family Tim” and a “home Tim”, and it’s the “home Tim” I’m most comfortable with. I’m not talking about some schizophrenic thing. Just different aspects of my personality that I use to cope with different situations. The only authentic me is when I am home alone.

I keep saying to people I’m living my best life at the moment.

The Bad

Having said all that, it’s not been plain sailing. One thing I’m really struggling with is work-life balance. Before this I mostly worked from the office, and my computer at home was for doing my own thing, like the website and blog etc. Since I’ve been working from home the working day has stretched, which has been made worse by some weekend work. When I do eventually switch off, the thought of doing my own thing is really difficult. I feel like I want to walk away from the computer, so that’s what I’ve been doing a lot. I think the solution to this is to define some different phases of the day and try to stick to them. Things have improved since I’ve been actively trying to do this.

Exercise is another issue. The gym is closed, and I find it really hard to be motivated to do anything other than go to the gym. I’ve done very little exercise, which is really not good as I’m a fatty, and being a fatty is not good at the best of times, but it’s even more problematic at the moment. This week I’ve been going on some bike rides at lunch time. Nothing big. Just getting out of the house and moving a bit. Once again, it’s about trying to define phases of the day.

I started the social isolation/distancing thing about a week before most people in the UK. I go to the shop every few days, and go to pick up a prescription once a month. Apart from that I stay home. I think it’s going to remain this way for quite a long time for me, regardless of what the government suggest.

I feel sorry for people who live alone and don’t like it. I feel sorry for families with kids who are going stir crazy. I can’t relate, but I can sympathise.

The Ugly

What this whole thing has taught me is there are some selfish fuckers out there who should go fuck themselves. People who blatantly ignore the rules, without thinking what impact they are having on others. I kind-of expect this behaviour from young people, as they think they are indestructible and are too dumb to think about the bigger picture, so I give them a free pass. What really pisses me off are adults who don’t seem to give a shit.

You don’t know anything about the people around you. You don’t know what their risk factors are. You don’t know if they are worried about relatives they live with that are vulnerable. It is not your position to judge, and you have no right to put them and their families in danger.

Now I admit some people take it too far, like walking in the road when there is nobody on the path, but for the most part people are being sensible and considerate. For those that are not, see my first sentence in this section!

The Good… Again

Despite that there have also been some really positive things.

  • On the whole people seem friendlier and more considerate at the moment.
  • It’s quieter. Lawn mowers are working overtime, but most of the time things are quiet.
  • Life seems a little calmer.
  • I’m not using petrol.
The Future

Some random thoughts from me.

  • I can’t see myself working full time in an office again. I’m not saying I will never go in, but I don’t see myself doing a 5 day week again. My company used to have some issues with working from home, but now we’ve been forced to do it for a few months, I can see a lot of people never going back to the old ways. I’m not sure how they could justify not allowing working from home on a mass scale now.
  • I think it will be quite some time before I consider travelling again, if ever. I had already scaled back my conference stuff, but maybe it’s over for me now. I may change my mind. Time will tell.
  • I want to consume less. Both from a food perspective, and everything else. I’m not a very materialistic person, but I can still cut back. I want my life to be as minimalist as possible.
  • I understand there will be economic hardships as a result of this pandemic, but I hope it has taught people something about themselves. Life doesn’t need to be some dog-eat-dog race. You don’t need as much as you think you do.

OK. The random bullshit is over for now.

Cheers

Tim…

Social Distancing : My Experience was first posted on May 16, 2020 at 10:33 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Video : Online Table Move Operations in Oracle 12.2 Onward

Mon, 2020-04-06 03:41

In today’s video we demonstrate how to move, or rebuild, a table as an online operation.

This video was done as a response to some questions about the previous video on shrink operations. As usual, the video is based on some stuff I’ve written previously.

The star of today’s video is John Kelly.

Cheers

Tim…

Video : Online Table Move Operations in Oracle 12.2 Onward was first posted on April 6, 2020 at 9:41 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

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

Mon, 2020-03-16 03:54

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.

Cheers

Tim…

Video : Kata Containers : Running Containers Inside Lightweight Virtual Machines on Oracle Linux 7 (OL7) was first posted on March 16, 2020 at 9:54 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Shadow IT : Low-code solutions can help!

Wed, 2020-02-26 02:24

I recently had a bit of a rant on email about the current state of Shadow IT at work. Typically, we don’t know it is happening until something goes wrong, then we’re called in to help and can’t, mostly because we don’t have the resources to do it. My rant went something like this…

“This is shadow IT.

Shadow IT is happening because we are not able to cope with the requirements from the business, so they do it themselves.

We need to stop being so precious about tool-sets and use low-code solutions to give the business the solutions to their problems. This allows us to develop them quicker, and in some cases, let them develop their own safely.”

We are not a software house. We are not the sort of company that can take our existing staff and reasonably launch into microservices this, or functions that. In addition to all the big projects and 3rd party apps we deal with, we also need to provide solutions to small issues, and do it fast.

Like many other companies we have massive amounts of shadow IT, where people have business processes relying on spreadsheets or Access databases, that most of us in IT don’t know exist. As I mentioned in the quote above, this is happening because we are failing! We are not able to respond to their demands. Why?

For the most part we make the wrong decisions about technology stacks for this type of work. We just need simple solutions to simple problems, that are quick and easy to produce, and more importantly easy to maintain.

What tool are you suggesting? The *only* thing we have in our company that is truly up to date at this time, and has remained so since it was introduced into the company, is APEX. It also happens to be a low-code declarative development solution, that most of our staff could pick up in a few days. The *only* tool we have that allows us to quickly deliver solutions is APEX. So why are we not using it, or some other tool like it? IMHO because of bad decisions!

You’re an Oracle guy, and you are just trying to push the Oracle stack aren’t you? No. Give me something else that does a similar job of low-code declarative development and I will gladly suggest that goes in the list too. I’ve heard good things about Power Apps for this type of stuff. If that serves the purpose better, I’ll quite happily suggest we go in that direction. Whatever the tool is, it must be something very productive, which doesn’t require a massive learning curve, that also gives us the possibility of allowing the business to development for themselves, in a citizen developer type of way.

It should be noted, we are wedded to Oracle for the foreseeable future because of other reasons, so the “Oracle lock-in” argument isn’t a valid for us anyway.

So you’re saying all the other development stuff is a waste of time? No. In addition to the big and “sexy” stuff, there are loads of simple requirements that need simple solutions. We need to be able to get these out of the door quickly, and stop the business doing stuff that will cause problems down the line. If they are going to do something for themselves, I would rather it was done with a tool like APEX, that we can look after centrally. I don’t want to be worrying if Beryl and Bert are taking regular backups of their desktops…

Are you saying APEX is only good for this little stuff? No! I’m saying it does this stuff really well, so why are we using languages, frameworks and infrastructure that makes our life harder and slower for these quick-fire requirements? Like I said, it’s not about the specific tool. It’s what the tool allows us to achieve that’s important.

What would you do it you could call the shots? I would take a couple of people and task them with working through the backlog of these little requirements using a low-code tool. It might be APEX. It might be something else. The important thing is we could quickly make a positive impact on the way the company does things, and maybe reduce the need for some of the shadow IT. It would be really nice to feel like we are helping to win the war on this, but we won’t until we change our attitude in relation to this type of request.

So you think you can solve the problem of shadow IT? No. This will always happen. What I’m talking about is trying to minimise it, rather than being the major cause of it.

Cheers

Tim…

Shadow IT : Low-code solutions can help! was first posted on February 26, 2020 at 9:24 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

The Goal and The DevOps Handbook (again) : My Reviews

Tue, 2020-02-25 01:31
The Goal

In my recent review of The Unicorn Project I mentioned several times how much I loved the The Phoenix Project. Some of the feedback was that I should take a look at The Goal by Eliyahu M. Goldratt. After all, The Phoenix Project is an adaptation of The Goal.

I had a credit on Audible, which I’ll explain later, so I gave it a whirl.

I don’t know if it was the writing, or the voice acting, but The Goal has so much more personality than The Phoenix Project. I can barely believe I’m saying this after the amount of praise I’ve given to The Phoenix Project over the years.

The Goal is centred around manufacturing. It’s about the productivity issues in a failing factory. Despite being part of the tech industry, I feel the focus on manufacturing actually makes it easier to follow. There’s something about picturing physical products that make things seem clearer to me. This, and the fact many of these concepts were born out of manufacturing, are no doubt why The Phoenix Project makes repeated references to manufacturing.

I realise some people will prefer The Phoenix Project, because it more closely resembles what they see in their own failing technology organisations, but I think I’ve changed my opinion, and I think The Goal is now my favourite of the two.

The DevOps Handbook (Again)

Another thing I mentioned in my review of The Unicorn Project, was how much I disliked The DevOps Handbook. That seemed to surprise some people. So much so, I started to doubt myself. I couldn’t bring myself to read it again, so I decided to sign up for Audible and get it as my free book. That way I could listen to it when driving to visit my family at weekends.

I was not wrong about this book. In the comments for The Unicorn Project review, I answered a question about my attitude to The DevOps Handbook with the following answer.

“I found it really boring. I guess I was hoping it would be more of a reference or teaching aid. I found it really dry and quite uninformative for the most part. It mostly felt like a bunch of people “bigging themselves up”. Like, “When I worked at X, things were terrible, and I turned it around by myself and now things are fuckin’ A!” Similar to this book, I think the important messages could be put across in a tiny fraction of the space.”

There are undoubtedly valuable messages in The DevOps Handbook, but my gosh they make you work hard to find them. If they removed all the dick-waving, there wouldn’t be much left.

Another thing I found annoying about it, was it didn’t feel like it really related to my circumstances. I work with a load of third party products that I can’t just scrap, much as I’d like to. I found myself thinking these people were probably just cherry-picking the good stuff to talk about, and forgetting the stuff that was harder to solve. I’ve written about this type of thing in this post.

The messages in the “good DevOps books” are universal. They help you understand your own problems and think your own way through to solving them. I don’t think The DevOps Handbook helps very much at all.

So that’s twice I’ve tried, and twice I’ve come to the same conclusion. Stick with The Goal and The Phoenix Project. There are better things to do with your time and money than wasting it on The DevOps Handbook and The Unicorn Project. That’s just my opinion though!

Cheers

Tim…

PS. By the time I had waded through The DevOps Handbook a second time I had already got a new credit for Audible, which is why I tried The Goal on Audible, rather than reading it. I’m glad I did.

PPS. There are a few cringeworthy gender stereotypes in The Goal, but remember when this was written…

The Goal and The DevOps Handbook (again) : My Reviews was first posted on February 25, 2020 at 8:31 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

VirtualBox 6.1.4

Thu, 2020-02-20 06:15

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!

Cheers

Tim…

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.

VirtualBox 6.1.4 was first posted on February 20, 2020 at 1:15 pm.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.

Pages