Oracle Database 18.3.0 and Docker

Just a quick heads-up to let you know I’ve updated my Docker builds to use the new 18c on-prem software.

If you like to play around with Docker, here is some stuff you might want to check out. Remember, I’m not saying this is production ready. It’s just stuff I use for learning and demos…

  • My Docker GitHub Repo here.
  • The new 18c container build here.
  • The new Docker compose file here to fire up an 18c DB container and a Tomcat 9 + ORDS 18.2 container to front APEX 18.1, and allow you to play with ORDS.

Remember, if Docker is not your thing, you can always my Vagrant build here to fire up the same thing, but in a single VirtualBox VM.

Cheers

Tim…

Installation of Oracle Database 18.3.0 On-Prem for Linux

Hot on the release of Oracle Database 18.3.0 On-Prem for Linux, I got on the case with doing some installations. The first of which can be found here.

I few things to point out about these…

First, I’ve gone with a read-write Oracle home. I like the idea of the read-only home, but I’ve not played around with it enough at this point to commit.

The other thing is the Oracle home path itself. Currently I’m using “18.0.0”, rather than “18.3.0”. This feels a little strange to me, but I’m not sure how the Release Updates (RUs) will work out for this. I’m guessing what I’ll end up doing is creating a new Oracle home when a RU drops, then switch across to it, so it would be more appropriate to use 18.3.0, with a switch to 18.4.0 later. I’m still trying to decide how I want to play this. If you look at the SQL*Plus banner you will see this.

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

So neither of these choices feel bad. 🙂

I usually post pictures of the installer, but I think this is sending the wrong message. IMHO you shouldn’t be installing this way, so this time I’ve made the break and only posted the silent installation.

In addition to the articles I’ve got some Vagrant builds for it (OL7, F28). The OL7 one also includes APEX and ORDS etc.

I’ve got a couple more things in the pipeline, which will probably come out tonight. We shall see.

Cheers

Tim…

Oracle Database 18.3.0 On-Prem for Linux

I was just about to go to bed when I saw this post by Mike Dietrich. Yay!

I’ve had access to 18c on the Oracle Cloud for some time, so I’ve already been able to write a bunch of stuff about it (see here), but it always feels geekier when it’s running on your own kit. It also makes demos a little less dangerous if you can fall back to your own machine. 🙂

Of course I’m starting the downloads now, so maybe I’ll get to have a play tomorrow? 🙂 If you want it you can grab it from here.

Happy upgrading…

Cheers

Tim…

Nobody is an expert at Oracle Database 18c

Every time a new database version is released a group of people, myself included, start pushing out content about it. I can guarantee you one thing about all these people. None of them are experts at Oracle 18c! There isn’t a single expert at 18c on the planet. Not even in Oracle. To be honest, I would say there are very few people who could really call themselves experts at 12cR2 at this point. Why? Because it takes time to get good at stuff and even 12cR2 hasn’t been out that long. It’s about 1 year since it was released for use on-prem (see announcement). Yes, it was around on cloud for a while before then, but most folks have had 12cR2 for 1 year and that’s it. Most people writing about 18c have had it for a few days tops. 🙂

So you’ve got one year of experience at 12cR2 right? I’m not so sure. You see you’re probably spending a lot of time working on 11gR2 and/or 12cR1 instances, as well as the odd 12cR2 instance that has made if to production. Humans are pretty lazy, so you are probably still doing a lot of stuff “the old way”.

I mentioned on a recent mailing list conversation, my approach to a new version is as follows.

  • I stop using the old version for my non-work environments. I’m 100% on the new version from day 1.
  • I try to move to the latest version as quickly as possible for work, with the necessary application testing of course.
  • I try to use the new version as “vanilla” as possible. Defaults for everything. I try not to bring my old habits with me to the new version.
  • I use all the new features (that I am licensed for), including all the automated features that are available. For example, when multitenant came out, after a small period of denial, I committed myself to it. My default stance was I will use it (lone-PDB for free) unless (A) a vendor doesn’t support it, or (B) I find an issue that means switching to it will be a problem for that project.

I’ve been doing this for a long time and this approach has served me well, but I still think it takes me a few years before I feel really confident with a new version.

I don’t think many of the good content producers throw around the term “expert” very often, but I think some of the people who follow can have unrealistic expectations when they look at content on the internet. Most people are writing about something new they are doing, so at the point they are writing it, they are far from being experts. If you’re lucky they will go back and revise that content when they learn more, but more often than not they don’t. As a result, you are often following the guidance of a first-time user. 🙂

So when you ask me to help you with your implementation of Data Guard between two 18c Exadata machines, you’ve got to realise how naive that question is. There will be lots of people and companies who will happily take your money to learn the new tech, but that’s probably the subject of another post… 🙂

Cheers

Tim…

Oracle Database 18c : Deprecated and Desupported

I was looking through the list of deprecated and desupported features along with terminal releases in Oracle Database 18c and there were some surprises.

This won’t be a complete list, so I would advise you to check it out for yourself (starting here), because what is important for me may not be for you, and vice versa. In no particular order, and not taking it too seriously, here we go.

  • Deprecation of Oracle Multimedia : I guess we could see this coming. There was a comment by someone important in a previous OpenWorld briefing that sounded to me very much like, “But you store images on the file system!” I commented to a couple of people at the time, and even went to speak to some folks on a demo stand who weren’t best pleased, and here we are. Of course you can still store stuff in BLOBs and CLOBs, but it seems Oracle have given up on trying to do more than be a data bucket for multimedia stuff. Now this isn’t one of those, “we’ll deprecate it, but never remove it”, messages. The docs say it will not be present in 19c. Looking at the release docs, 19c is the equivalent of 12.2.0.3, so it will be removed during the lifespan of the 12.2 product. I know we are not meant to think of the old numbers anymore, but I think that is interesting.
  • Package DBMS_XMLQUERY is deprecated : I’m including this for the purposes of nostalgia. It’s a long time ago, but I think DBMS_XMLQUERY was the first XML-related package I used for generating XML in an Oracle database, although I had already done some XML parsing in 8i. It’s a good thing this is going, because it had a natural successor in DBMS_XMLGEN for a long time. Having it around only serves to confuse. Even so. 🙁
  • Terminal Release of Oracle Streams : Streams have been deprecated for a long time, but 18c is the terminal release for it. The doc says, “Oracle Streams will be desupported from Oracle Database 19c onwards”, so in the lifespan of the 12.2 patchsets it will disappear. As soon as it was deprecated Streams was dead to me, but I still hear people talking about using it.
  • STANDBY_ARCHIVE_DEST and UTL_FILE_DIR desupported : Oh the bad old days, how I miss them. Everyone had TB and Rickets, but you could leave your back door unlocked! Screw your 24X7 operations, I’m bouncing the database because I want to add a new path to the UTL_FILE_DIR initialisation parameter. I actually had someone ask me about this a few months ago. Out with the old. I’ll get my coat!
  • Returning JSON True or False Values using NUMBER is Desupported : Returning 1 and 0 instead of ‘true’ and ‘false’ when speaking about JSON sounds silly to me, so I’m all in favour of this. I guess it will be annoying for those that have just got to grips with doing JSON in Oracle and have to refactor their code already because they chose the wrong path.
  • Oracle Administration Assistant for Windows is Desupported :  I only threw this one in because I know people lose their minds when some tool that is already long past its sell-by date is removed from the Windows implementation. Let’s start a Twitter campaign with #BringBackTheToolWeNeverUse and stick it to the man. 🙂

No time to worry about what they are getting rid of. There’s all the lovely new stuff you don’t understand yet. That’s really what you should be afraid of! 🙂

Cheers

Tim…

Oracle Database 18c on the Oracle Database Cloud Service

In a previous post I mentioned the release of 18c on Oracle Cloud and Engineered Systems. The only way you could get that on the Oracle Cloud at the time was if you were using an engineered system on the cloud. As a result us folks that don’t have pockets that deep were forced to get our 18c fix on LiveSQL.

You can now get Oracle Database 18c on the Oracle Database Cloud Service, the DBaaS offering, on Oracle Public Cloud (OPC), so you don’t have to have such deep pockets anymore. It also means you can probably get a free trial now.

I’ve fired one up and updated an old article (here) to have the latest screen shots.

Happy days!

Cheers

Tim…

PS. I’m not overly bothered about constantly updating screen shots for cloud service articles as they change so frequently, as do the names of the services from time to time. As long as the general message is OK, that’s good enough. If you try to stay on top of the quarterly roll out you would never get something new done. 🙂

Oracle Database 18c Released : How to Get Started

Just in case you missed it, Oracle Database 18c was released on Friday. You can read the announcement in this post.

How to Get Started

You might be a bit disappointed if you don’t have an Oracle Cloud account, or an engineered system. Not to worry. You can try Oracle Database 18c on Live SQL.

The documentation is already available. You should probably take a look at the new features doc.

Just a few things to manage your expectations.

Oracle Database 18c is Oracle 12c Release 2 (12.2.0.2)

In the old terms, Oracle Database 18c is a patchset for Oracle 12.2. For quite some time it’s been known Oracle have moved to a new release model for most products, including the database, with the version number now including the year and the quarter etc. How the version numbers now work is explained in MOS Doc ID 2285040.1. The release schedule for these database versions is shown in MOS Doc ID 742060.1.

So before you lose your mind about how few new features there are for a “6 number jump in version”, just think for a second! All this has been reported for months. Mike Dietrich first wrote about the new versioning system in August last year. Many of the announcements at OpenWorld 2017 mentioned 18c was 12.2.0.2 with a different name. None of this is a surprise if you’ve been following the news. 🙂

Oracle Database 18c is Not an Autonomous Database

If you follow me you will have seen these posts.

I can’t believe I’m still seeing this confusion. What has been released in the Oracle 18c database, not the Autonomous Data Warehouse Cloud Service. The product that’s been released is a DBaaS release of 18c, so it’s pretty much what you will get to run on-prem. It’s not autonomous! Once again, none of this is a surprise if you’ve been following the news. 🙂

Oracle Database 18c : Cloud First

The debate about “cloud first” has been going on for some time. I wrote a couple of pieces about it in 2016.

I think the cloud first approach worked out well for 12.2. I don’t remember a release that has been this stable before the first patchset for ages. I think some of that is down to the fact it was released to the cloud first, and the first on-prem release contained a bunch of bug fixes found during that cloud first release.

Another gripe I’ve heard is we aren’t getting 18c until part way through the year, so we will probably get 18.2 or 18.3. By the time we get 18c, the 19c release will practically be due. 🙂 My thoughts on this are:

  • If the first on-prem release is 18.2 or 18.3, but it is stable and usable because a load of bugs have been fixed, and hopefully few new ones have been added, that’s great. I don’t want to use a beta for production.
  • It’s going to be a yearly release, so even if the on-prem version of 18c were to be released on 31st December 2018, you’ve still only got a year before the December 2019 on-prem release of 19c. Obviously I’ve made those dates up to prove a point. That point being it’s a yearly release cycle, so complaining about it coming at “X” months into the year is a bit stupid. The focus should be on the quality of the release.

Personal Feelings About the Release

It couldn’t have come at a better time for me.

You may have noticed I’ve seemed a little quiet on the website front. In fact I’ve recently written 19 articles that are live on the site, but haven’t made it to the front page. Most of them are covering older subjects, or what I call backfill. Many of those articles are covering features that have been available since Oracle 8i, but still relevant now. Since they are not “new”, they’ve not been promoted to the front page of the website, and I’ve not pushed them out on social media. I like to stay in the habit of writing, even if I’m struggling to find things I care to write about. I’m not saying I’ve written everything there is to write about 12.2, but I’ve written about pretty much everything I care to write about at this point.

The new release should give me an opportunity to write about something I can promote without feeling stupid. 🙂

Cheers

Tim…

Oracle Database 18c is NOT an Autonomous Database! (Update)

Yesterday’s rant about the bad reporting of Oracle 18c got quite a lot of attention, but it seems the reaction from some people was a little odd IMHO. I wrote some updates to the post during the day, but I would just like to address them here to hopefully make a few things clear.

Who was the post directed at?

I got the distinct impression that some people thought I was “sticking it to Oracle” with that post. If you read it that way I really don’t understand how. Here are two quotes from the post.

“From the get-go Oracle has been talking about the Autonomous Database as a cloud service based on Oracle Database 18c, but I can’t remember them once saying Oracle Database 18c is an Autonomous Database.”

“I am disappointed at how lazy the Oracle blog-sphere has been in reporting this”

If you read that as a dig at Oracle you are wrong. It was definitely dig at bloggers promoting untruths.

Are you sure 18c is not an Autonomous Database?

I got a few people contacting me who were so convinced Oracle 18c was an autonomous database, because of what they had read, they wanted to make sure I was not mistaken. 🙂 I guess if something is said enough times it starts becoming reality…

For those that thought I was mistaken, the mighty Maria Colgan has added a couple of updates to her blog to make it super-super clear.

Oracle Autonomous Database – What you need to know

If you know who Maria is, you will know this is the end of this point. If you don’t know who Maria is, she was “the optimizer lady”, then the “in-memory lady” and now she is (in my words) “the database”.

Just to confirm.

  • If you buy an Autonomous Database Cloud Service on Oracle Public Cloud or Cloud@Customer, that’s a service that specifically includes the words “Autonomous Database” in the name of the service, you are getting an Autonomous Database.
  • If you buy regular 18c DBaaS on Oracle Public Cloud or Cloud@Customer you are not getting an Autonomous Database.
  • If you install 18c yourself on any cloud provider, including Oracle Public Cloud or Cloud@Customer, you are not getting an Autonomous Database.
  • If you install 18c yourself on-prem you are not getting an Autonomous Database.

Thank God for that!

Some people were genuinely happy with this “revelation”. I guess this comes from the concern about their future job prospects. I understand this, as it affects me too, but I am disappointed that people don’t see this for what it is.

It has been possible to automate the vast majority of operational DBA tasks for a long time. Amazon have been doing this with RDS for Oracle for years. Good DBAs have been following this lead for years. This is not a new concept. Oracle are just taking it a step further with the automatic tuning etc.

It has been clear this is the way the market is moving for the last decade. If your only role is basic database operations you need to start getting skilled up. Whether 18c is autonomous or not isn’t really the issue…

I knew it!

Some people couldn’t help themselves and started rolling out the whole line about Oracle always claiming the end of the DBA. I have some sympathy for this point in the past having lived through all those death of the DBA announcements, but in this case not so much.

First, you are speaking like this is some sort of back-track on what 18c can do, when actually I was responding to the fiction created by bloggers that weren’t paying attention. From the information I’ve read from Oracle, I think it was clear this was a cloud service, not native 18c functionality.

Second, they are still claiming the cloud service is autonomous. Can we reserve the “I knew it” and “I told you so” comments until after it’s been released and we see what it can actually do.

I, for one, welcome our new autonomous database overlords!

Conclusion

I’m not claiming Oracle haven’t done some terrible reporting in the past, because they clearly have, but in this case I think the misconception is not their fault. I think the fault sits squarely at the feet of those in the blogging/news community, who read the headline and ran with it. The people who actually paid attention to the official announcements and subsequent posts from Oracle knew the score already. Here’s a quote from a post I wrote the day after the OOW17 announcement (2nd October).

“Although Oracle 18c has new features that make it easier to build an autonomous database, the “Autonomous Database” is a cloud service, so you will need to run your database on Oracle Public Cloud, or possibly on Cloud@Customer. Just installing 18c on-prem will not get you an autonomous database.”

I really hope I don’t feel the need to write another update to this issue… 🙂

Cheers

Tim…

Oracle Database 18c is NOT an Autonomous Database!

RANT WARNING!

From the get-go Oracle has been talking about the Autonomous Database as a cloud service based on Oracle Database 18c, but I can’t remember them once saying Oracle Database 18c is an Autonomous Database. There is a reason for that. It’s because it isn’t. It’s not meant to be. It’s basically a big patchset on what we already have. We currently have 12.2.0.1 and Oracle 18c is 12.2.0.2, with a different name because of the new yearly release cycle.

I am not disappointed by this, but I am disappointed at how lazy the Oracle blog-sphere has been in reporting this. I keep reading posts where people mention that 18c is autonomous and how 18c will be the death of DBAs. Come on people, we can do better than this. I know what’s going to happen. Oracle 18c will be released and when it doesn’t contain all the autonomous goodness people will lose their minds and say, I told you it wouldn’t work!

Let me say this loud and clear!

  • Autonomous Database : It’s a cloud service that happens to use the Oracle 18c database.
  • Oracle Database 18c : It’s not autonomous!

This is not the first time I’ve said this. I mentioned it here when I wrote about the Autonomous Database announcement. I even mentioned using the cloud service here when I did the hands-on lab at OOW17.

Can we please have a little integrity and stop this junk reporting, or have we also entered the post-truth, fake-news world too? If you’ve written a blog post describing Oracle 18c as autonomous, please go back and correct it because you are making yourself look foolish and misleading people.

Sorry for the rant, but I felt it had to be said!

Cheers

Tim…

Update: At least one person seems not to have understood this post. I am not saying the Autonomous Database Cloud Service isn’t autonomous. I’ve used it briefly and from what I can see it seems pretty cool. This post is totally about the misreporting of the Oracle Database 18c product by bloggers (and some news outlets), which is not and doesn’t claim to be autonomous.

Update 2: So now I’m getting people asking me if I’m sure about this. As I said, people are being mislead by rubbish reporting. Come on people, fix your stuff! If you don’t believe me read what Maria Colgan said when she retweeted my post here.

Update 3: Some extra bullet points above to make things even more explicit.

  • If you buy an Autonomous Database Cloud Service on Oracle Public Cloud or Cloud@Customer, that’s a service that specifically includes the words “Autonomous Database” in the name of the service, you are getting an Autonomous Database.
  • If you buy regular 18c DBaaS on Oracle Public Cloud or Cloud@Customer you are not getting an Autonomous Database.
  • If you install 18c yourself on any cloud provider, including Oracle Public Cloud or Cloud@Customer, you are not getting an Autonomous Database.
  • If you install 18c yourself on-prem you are not getting an Autonomous Database.

Autonomous Data Warehouse Cloud Hands-On Lab : My Thoughts

I signed up to a hands-on lab for the Autonomous Data Warehouse Cloud Service. These are the notes I took during the lab. They are a little scrappy, but I think you will get the idea…

I had some prior information due to the briefings I attended before OpenWorld, but everything I’ve mentioned here has been said publicly in OpenWorld sessions and is part of the hands-on lab.

Lab Outline

During the hands-on lab we did the following.

  • Connected to the service from SQL Developer.
  • Created new schemas and connections to the service.
  • Created tables and constraints with RELY DISABLE NOVALIDATE.
  • Loaded data into the tables from an object store.
  • Created external tables to files in an object store.
  • Connected to a sample schema and ran some queries before and after online scaling the service.

Introduction

  • The Oracle Public Cloud interface and provisioning looks similar to the current DBaaS offering, but a little more simplified. There are fewer options to fill in.
  • The minimum storage is one 1TB with increments of 1TB. The storage scales on demand, so no dramas about starting small and increasing as you go. The storage is paid for on a monthly basis.
  • CPU is paid for on an hourly basis. You can scale down to 0 and stop paying for the compute if you have downtime (weekends?), but you continue to pay for storage.
  • You have an admin user, similar to system, but you don’t have SYS and SYSTEM access. No conventional OS access either. It’s similar to RDS for Oracle in that sense.
  • Provisioning time for a new instance is about 10-20 seconds.
  • Once you have the system provisioned there is pretty much no additional configuration you can do.
  • Access requires a wallet, similar to the Exadata Express Cloud Service, so you need to download the connection details from the Client Access tab. You get a zip with the relevant connection details.
  • If you manually create users, you need to grant them a role called DWROLE. That is the only role needed to connect and manage objects in the schema.

Object Creation

  • Tables are created with no constraints (except NOT NULL) and no additional features like partitions etc.
  • Primary keys, unique keys and FKs are defined with RELY DISABLE NOVALIDATE, so the optimizer has the necessary metadata, but no physcial structures like indexes are created.

Loading Data

Privileged operations are done used the DBMS_CLOUD package. Some of the things we did during the hands-on lab include.

  • DBMS_CLOUD.CREATE_CREDENTIAL – Creates a credential object to authenticate to the object store (Oracle or AWS S3). The credential is created once, and is used by default for all operations from then on. The object store is used as a source for data loads and external tables. On initial release the number of formats are limited, but it will eventually include additional source formats over time.
  • DBMS_CLOUD.COPY_DATA – Copies data from the object store into a table. This is full load operation. There are a number of options including table_name, file_uri_list, format. The format defines how the file should be loaded.
  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE – Create an external table pointing to the files in the object store, rather than loading them into the database.

The USER_LOAD_OPERATIONS view displays information about load operations.

As with the existing database cloud services, if you need to transfer a large amount of data it can be done by shipping it to Oracle for them to seed it. I can’t remember the name of the specific service, but suffice to say you will not have to SCP your petabyte warehouse files to the service. 🙂

Scaling and Performance

  • The service is essentially scaled by resetting the CPU_COUNT for the instance in the cloud screens or via a REST API, so it is using a variation on instance caging to control CPU. CPU is charged by the hour. You can scale down to 0 when you don’t need resource, but you will still be paying for storage.
  • In the initial release the SGA and PGA sizes are tied to the CPU count, so adding an extra CPU increases the SGA and PGA allocated. Future releases may make these independent, but for now this is the way it works.
  • Parallel Statement Queuing is enabled, and the cloud interface allows you to monitor the statement queue. The queue is understandably affected by CPU count.
  • The Query Result Cache is enabled, so for small result sets a second run of the statement is super fast. 🙂
  • You are responsible for the schema design and the SQL you write against it, but you will not be creating indexes and partitioning strategies to address performance issues. The service is responsible for tuning the workload, not you.

Thoughts

  • The hands-on lab was obviously quite limited in terms of the scope, so I can’t give a comprehensive review, but from what I have seen so far it appears Oracle have delivered what they said they would. A fully managed service that removes the need for operational DBAs as creation, backups, patching and upgrades are not your business.
  • It’s hard to know at this point how well the automated tuning works. As more people try it out with different workloads we will get a proper feel for what it can and can’t do. What we do know is you will not be adding indexes or partitioning stuff, so at least that aspect of tuning is out of your control.
  • I don’t know if everyone got to see this, but Hermann scaled my service and it just worked, completely online.
  • It’s fun to theorise how they have achieved some of the aspects of service using the existing features.
  • I’ll be interested to get my hands on it once it goes live.
  • I’ve mentioned a few times in other posts, this is the first generation of this service. We don’t know how it will evolve over the coming months.
  • Remember, if you don’t like the lack of control you can alway pick DBaaS, Exadata Cloud Service or run on-prem. These will not have the option of being autonomous though.
  • Overall my feeling is I like it. I know this might sound odd coming from a DBA, but I like the hands-off nature of it.

Thanks to Yasin Baskan and Hermann Baer for putting on the session. Hermann, please don’t tell anyone you had to help me connect to the database when my brain rebooted and I wasn’t even capable of doing something as simple as that. It will remain our secret right?

Cheers

Tim…