BGOUG Spring 2017 : The Journey Begins

Waking up at 03:00 is stupid! When I wake at this sort of hour I tend to feel kind-of sick unless I’m distracted. Fortunately the taxi driver was pretty cool, which helped me forget about how miserable I felt. 🙂

You never know what you are going to get at the airport. Last time the queues were massive, but fortunately I had fluked a business class ticket so I walked straight past them. This time the security was empty, so I walked straight through, even with my economy ticket. That’s great, but you start to kid yourself you could have come an hour later and slept some more. 🙂

The first flight of the day was from Birmingham to Amsterdam. The plane had a lot of free space, so boarding was quick. We left on time and the flight took about 40 minutes.

A connection time of a little over a hour can sometimes be a problem in Amsterdam. It’s a big airport and if you catch the gates wrong, it can be a bit of a panic to get to your connection. This time my departure gate was next to the arrival gate.

I wrote a lengthy bitch about the airport and the lead up to the next flight, but it was because I was tired and emotional. Actually it was fine.

The next flight went well. It took about 2.5 hours to get form Amsterdam to Sofia and ended with possibly the best landing I’ve ever experienced.

I was met at the airport by Todor Grigorov, who took me to my hotel. I’ll be spending tomorrow with him and his team at DXC Technology doing a free form Q&A. It’s like a job interview with 40+ people on the panel, and no job at the end of it. 🙂



Enterprise Linux Upgrade : It’s a Sorry State!

It’s 2017 and it’s still not possible to reliably upgrade an Enterprise Linux distribution between major versions!

At this point you are scrolling down to the comments to “educate me” about the redhat-upgrade-tool, because you read about it somewhere and you once heard someone successfully upgraded an installation on a lab machine. Unless you have an ultra vanilla starting point, you are going to end up with a mess that probably won’t boot. By the time you come to upgrade a “real server”, there have been years of changes and it is unlikely to resemble some pristine minimal installation.

I know your next comment is going to be something about the architectural changes brought in by project X and version Y in RHEL7, which is why it is all so hard. Stop now! You are boring me already! Is it an enterprise distribution or isn’t it? If it is, you should be able to upgrade it reliably!

Next up comes, “But you have to reinstall when you get new hardware!” I present to you virtual machines. Physical hardware upgrades with no need to reinstall the OS on the VM.

I can’t believe I’ve been using Linux for about 19 years and this is where we are at.



Being a Beginner Again (OBIEE, ODI, OBIA)

Things have been a little quiet on the blog front recently, because work has been crazy. I keep being asked to do stuff I’ve never done before and it makes life really hard.

I hate being crap at stuff, and I don’t like to do things at work that I’ve not already done at home, so when something new is thrown at me it I put a lot of pressure on myself to get up to speed as quickly as possible.

I wrote a few weeks ago about doing some OBIEE 12c and ODI 12c installations, which was a way of giving me a little understanding about these products. I spent last weekend doing the 11g equivalents of those articles. Currently Oracle Cloud Apps are only certified with the 11g stack, so it’s into the time machine to do old crap*, which I find hard to get excited about. Having done all that I felt a little better prepared, but was still kind-of nervous. My inferiority complex always has me thinking, perhaps this will be the thing that breaks me!

This last week we spent three days with a consultant doing OBIEE, ODI and OBIA 11g installations. I did everything, with him guiding the process and one of my colleagues observing and correcting my typos. 🙂 I wrote down all the instructions, did screen shots of everything and captured all response files where they were available. Yesterday I spent the day going through the notes trying to make the process silent quiet. We are going to do about 4 of these environments, so scripting is really important, but I’m not going to waste my life trying to make it completely silent. There are some config stages that are going to be super fiddly to script, so we’ve decided to go for a halfway approach to the build process, with a combination of scripts and manual actions.

The OBIEE and ODI 11g stuff I did at home is already on the website, but I won’t be adding any of the extra stuff I did this week because:

  • I did it on company time, not on my own time.
  • Although the basic installs are easy and obvious, some of the “threading together” is a little funky and it would have taken a lot longer than 3 days if we hadn’t had the consultant on site. I’m not going to publish what is effectively his company’s documentation and pass it off as my own.
  • I think for most people this will be seen as rather old stuff.

At some point we will have to move the whole environment to the 12c Fusion Middleware stack. At that point I may well do it all myself at home, write it up and put it on the website. If we have to rely on external consultancy and company time for that again, same rules will apply.

I’m glad I did all the prep work during the weeks leading up to this, as it made the whole process a lot easier. It was good to focus on the bits that were awkward, rather than having to waste time discussing basics.

Overall, I was happy with the process. It didn’t break me! 🙂

I’ll be away in Bulgaria next week, back for a week to do more BI stuff at work, then off to the Netherlands for a few days. After that, normal service should resume… 🙂



* I’m referring to the fact it is the 11g version, rather than the 12c version. I’m not saying it is crap because it is OBIEE+ODI+OBIA, rather than some “cool” stuff. 🙂

Grumpy Old Man Having a Moan

This post is just going to be me moaning, so feel free to stop reading now and go about your day. 🙂

I am a regular guy, with a regular job. I don’t wake up every morning wondering how I can selflessly serve the Oracle community. It isn’t my mission to make sure you never have to think when you do your job. It is not my job to respond to your questions in a timescale that fits in with some SLA you seem to have arbitrarily assigned to the interaction. I don’t review every product, book, whitepaper, article, blog post, tweet that is produced. My mission in life is not to sell your product.

Some days I feel totally exasperated by all of this community stuff. I know some people think this is my job, but it’s not. I know some people think the website is done by a team of people, but it’s not. It’s just me using my *spare time* to learn new stuff, and I happen to put the notes I take during that process on the internet so others can read them. That’s it.

I like interacting with people. It’s nice that what *I have to do to learn new stuff* ends up being useful to other people. I really appreciate it when people contact me with corrections, as it helps me and therefore other readers. What is really hard to deal with is the constant, unreasonable demands from people who don’t seem to understand I am not here solely to serve them.

From a community perspective, the content I produce has more value than the rest of the stuff I do, so anything that pulls me away from that is a problem.

I am one person with a couple of hours a day to dedicate to this stuff. I’ve just got to protect that time a little better. If that means I am not as *available*, so be it.

Grumpy rant over, for now… 🙂



PS. I have been waiting to post this for a while because I don’t want to offend anyone who might think it is about them. Literally every time I’ve thought it would be “safe” to post it, someone has jumped in with some amazing request that has made me delay the post again. 🙂

PPS. I understand it is a nice problem to have and I know I’m not the only person in the community with this issue. 🙂

OFS and DBFS Questions (Oracle 12.2)

I pushed out some new articles yesterday.

The SecureFiles article is mostly links to other articles, but it was requested by a reader. In the process of doing that I noticed the new OFS feature in 12.2, which took me down a rabbit hole for a few days.

I try to keep the main website for how-to articles, and the blog is where I post more opinion-based stuff. I got some questions, related to the OFS article, so I thought I would give some answers/opinions here. I could be wrong! 🙂

Q: Isn’t this just renamed DBFS?

A: No. If you compare the objects created for a DBFS and OFS file system they are different. They still do the same job (represent a file system and hold files in BLOBs in the database), but they are distinct file systems. This is not a straight “re-brand” of DBFS.

In addition, OFS is both the name of a file server, the OFSD background process is the OFS server, and a specific type of database file system, the OFS file system. The OFS file system is “similar” to DBFS. The OFS server process can mount both OFS and DBFS file systems.

I think it’s important to remember to use the terms “OFS server” and “OFS file system” so that people understand what bit you are talking about. 🙂

Q: There are now two database file systems (OFS and DBFS). Which should I use?

A: In my opinion, if you are happy with the restriction that you can only create the file system objects in the root container, or a non-CDB instance, you should probably use the OFS file system. It’s marginally easier to create and I’m guessing that is what the developers of the OFS server would prefer you to use. 🙂 If this restriction is a problem, use DBFS to create a file system in a PDB or a non-sys user.

If you need HTTP(S), WebDav or FTP access to the file system, DBFS is a better choice as those features come “out of the box” with DBFS from 12.1 onward.

Pick the one that matches your use case.

Q: Will OFS eventually replace DBFS?

A: I have no idea. What I can say is DBFS has some enhancements in 12.2 (POSIX File Locking) and it does some stuff “out of the box” that OFS doesn’t (HTTP(s), WebDav and FTP). It also plays well with multitenant. I’ve tried it and it works the same in a 12.2 PDB as it does in 11gR2.

IMHO if the plan were to replace DBFS with OFS, OFS would need to play well with multitenant and have the HTTP(S), WebDav and FTP (or preferably sFTP) support.

Until stated otherwise, I’m going to assume they will coexist and each serve slightly different use cases.

Q: Automatic mounting of DBFS using FUSE through “/etc/fstab” is confusing because of timing issues. Is OFS better?

A: Yes. The problem with any kind of auto-mount of a database file system is the database must be up before the mount is attempted. If you get the timing wrong it doesn’t work. The great thing about OFS is the mount/unmount is controlled by the OFSD process, so file systems mounted with the “persist” option will be mounted on instance startup and unmounted on instance shutdown. Great! No timing issues!

You have to be aware of the potential issues around a manual unmount of the file system and the impact of a shutdown abort, but you test all your failure situations before going live right?

From my limited testing, this aspect of OFS server feels really solid. It did what it said it would. I have no examples of heavy usage to refer to at this time.

Q: Is OFS Server a NFS Server.

A: No it isn’t and I think the term “NFS in the database” from the documentation is confusing. A file system mounted by OFS server can be exported using a NFS server, allowing NFS access to the database file system (OFS or DBFS). The database itself is not acting as a NFS server. So what you have is the NFS server on the OS exporting the FUSE file system, which is held in the DB. I would give that more emphasis in the docs if it were me. This totally confused me, so I reached out on Twitter and Oracle came to the rescue, which was cool, but I don’t feel that should be necessary to get a DB feature working. 🙂

I think it’s cool you can export it using the OS NFS server, but that doesn’t make Oracle a NFS server. 🙂

Q: Any issues with the NFS over FUSE?

A: Once you throw the NFS server into the mix you get timing issues again. During my (rather limited) testing I’ve had a few issues that could only be fixed by restarting the NFS server on the OS. Once I did that everything was golden.

From a resilience perspective, I’m not sure how I feel about this. Remember, I’m new to this feature and I’m not a NFS guru either, so don’t let me put you off.

As a general point, there does seem to be a lot of posts on the interwebs of people having issues with NFS over FUSE, so I’m not how solid this is as a technology. It does work though. Like I said, I’m no expert!

Q: How do you “feel” about the new OFS feature?

A: I used iFS in Oracle 8i. It worked fine, but was a massive resource hog. I’ve used the “file system” in the XML DB repository for some basic file handling. It works fine. I’ve used DBFS for some minor things and it’s fine, provided you are careful with mounting it using FUSE. Having used OFS for a few days I “feel” like it is the cleanest experience of accessing a database file system from the database server. I like it. 🙂



BGOUG and OGh just around the corner!

Just a quick heads-up about a couple of events happening in the near future.

First we have the BGOUG Spring event in Pravets, Bulgaria. Having missed a couple of years before the last event, I’m trying to make up by doing two events in six months. 🙂

About a week after I get back from Bulgaria I’m off to the Netherlands for the OGh Tech Experience 2017 at Rijtuigenloods. This should be like the best bits of the AMIS and OGh events from last year rolled into one!

If you are coming to one (or both) of the events, I’ll see you there. If not, why not? 🙂



Database Administration : Dead or Alive?

I get this type of question a lot at the moment. It’s not surprising as I’ve done a few things of late that seem to have got people a bit riled up.

  • During my cloud database talks I’ve been saying things like, if you think a DBAs job is just to install, backup and patch the database, the cloud has taken your job.
  • I happened to mention the Oracle Cloud Apps DBA role does not exist. I thought I made it clear what I was saying, but a number of readers thought I was saying they shouldn’t go to work next week as they’ve been fired.
  • I’ve recently been doing some sessions with a title beginning with “Making the RDBMS relevant again…”, which suggests maybe it isn’t currently relevant.

I’ve been doing Oracle database development and DBA work for nearly 22 years. In that time the job of an Oracle DBA has changed a lot. Despite this, having people who understand what is going on below the surface has remained in demand. If you keep trying to be an old-school DBA you are going to find yourself in a very dark place very quickly. If you keep your ear to the ground and try to move with the times there will always be a role for you. Good people always land on their feet.

The way you move depends on your interests and the demands of your company. Some will move closer to an architecture role related to the infrastructure, which is pretty important when dealing with the cloud services, docker, DevOps, continuous deployment etc. Some will align themselves more closely to development, which is of greater importance in the new world. Others will completely move away from RDBMs into other technologies related to data or elsewhere.

The next question is typically, “When?” I’m not saying we should all run around screaming and pulling out our hair, but we should also not turn a blind eye to the way the world is changing. I can pretty much guarantee there will be comments by people telling me I’m wrong and the DBA role will exist forever, to which I will reply, “Denial is not just a river in Africa!” 🙂

Some companies, especially those that are more development led, will transform rapidly. DevOps, continuous deployment and technologies like Docker have the power to transform a company rapidly, whether on-prem or on the cloud. In all cases, someone needs to help build and maintain the layers that contain databases and app servers, and that could be you, but I don’t see the same volume of work we currently have, because if done properly it should be a build once, deploy many approach. For some companies that are into automation, this is already a reality. Very soon it will be true for much more of us.

Some companies will be slow in moving forward and their staff will wonder what all the fuss is about, until they apply for their next job and realise there isn’t one for them!

Having said all that, I did an “unconference” session at OOW in 2007 called “The Oracle DBA… A dying breed?” and we’re still here now. The important point is you need to take responsibility and shape your own destiny. Don’t sit idly by an watch the world take your job. It’s easier than ever to learn new things and prepare for the future, so do it! 🙂



If at first you don’t succeed, give up?

Over the years I’ve noticed people have very different attitudes to problem resolution.

For some people the first hint of a problem leads them to believe what they are trying to do is impossible. I remember having a discussion with a former colleague about their solution to a problem. When I asked why they used a particular approach they said, “I tried to do it one way but it wouldn’t compile, so I used this approach instead.” I kid you not! Something as simple as a compilation failure was enough to make them lose confidence in their approach. If I changed tack every time something didn’t compile I’d never finish anything. 🙂

When you are trying to get to grips with something new it can feel a little like you are banging your head against a brick wall at times. When it gets like that you have to take a step back and ask yourself whether you have exhausted all the possibilities. In my case, I often get into this state because I’m in the weeds and I’m rushing to complete tasks. I believe I’ve tried every possibility, but actually I’ve missed out something, or tried two things at once (to “save time”) that cancelled each other out. I have to ask myself, “What was my last good state?”, switch back to that point and start again in a more controlled and meticulous manner.

It’s a bit like looking for “lost” keys. You convince yourself you’ve checked everywhere and can’t find them, then eventually you start from scratch and search properly, only to find them sitting on your desk in the usual place, but with a solitary piece of paper over them. 🙂

I’m not saying you should keep banging your head against a brick wall forever, but you have to learn tactics for solving problems, one of which is being honest with yourself. Have you really tried, or did you just make a quick stab at it then give up?

If you’re a follower of the blog you may be thinking I’m going to say something about people having a passive approach to learning and not taking personal responsibility for their own development, but I’m not going to. 🙂