Oracle Code : India – The Journey Begins

If you’ve been following my tweets recently you will know I’ve had a bit of a nightmare lead up to these events. Problems with my laptop and problems with my seat on one of the planes.

About 15 minutes before the taxi was due to pick me up I finally got most of the laptop things sorted. It was a bad morning…

I got to the airport in plenty of time and went to the check-in desk to try and get an aisle seat. The lady there said she could lock an aisle seat for me, but couldn’t give me a boarding pass for it as I had ordered veggie food, and moving me to a different to a different floor in the plane was a problem. When I got on the plane there was a bit of confusion, but eventually they told me to sit in the new seat location and see if anyone else turned up to claim it. They didn’t so I got the aisle seat, which was a big relief.

The flight went well, and the guy sitting next to me was cool so I spent a lot of time chatting. Unfortunately I didn’t get any food, but faced with the choice between a window seat with food or an aisle seat with no food, the aisle seat wins every time. I also watched Star Wars : The Last Jedi, which I enjoyed.

I got to Dubai on time and about 14 hours after waking up I finally got to eat something. A Starbucks muffin. 🙂

The flight from Dubai to Hyderabad was only about 3 hours, but by the time it was over I had been awake for about 20 hours and was feeling it. I got to watch Get Out, which was very cool.

I got a Taxi from Hyderabad Airport to the hotel, which was interesting… The driver wasn’t too interested in reading the hotel name or address, which I had written down. He eventually dropped me off at the wrong hotel and they had to explain to him it wasn’t the correct place. He then managed to reverse out of the hotel carpark into oncoming traffic and hit someone. The bumper of our taxi was then pushed back into place before we drove off and finally got to the correct hotel. 🙂

I was about 3 hours early for check-in, but they had a room for me, so it was time for a shower and bed. Sleep was a bit fitful, but at least I got some.

In the evening I met up with some of the other speakers and folks from the Dev Champion Program to get some food, then it was back to bed.

So I made it to Hyderabad. The Oracle Code : Hyderabad event starts tomorrow.

Cheers

Tim…

Twelve Years an ACE

This year’s anniversary is a little odd because from a career perspective I have now been an Oracle ACE for longer than I’ve not been one. On 1st April 2006 I got an email telling me I was in the program. This year’s anniversaries will look like this.

  • 23 years working with Oracle technology in August. (August 1995)
  • 18 years doing my website in July. (Original name: 03 July 2000 or Current name: 31 August 2001)
  • 13 years blogging in June. (15 June 2005)
  • 12 years on the Oracle ACE Program. (01 April 2006)
  • 1 year as an Oracle Developer Champion. (21 June 2017)

The Developer Champion is a little different as it’s a one year thing, so there probably won’t be a two year anniversary.

This last year has been a tough one. Let’s see if I can make it to the next anniversary.

Cheers

Tim…

Birmingham City University (BCU) Talk #6

On Monday I did my 6th talk at Birmingham City University (BCU).

During this session I spoke to second year computer science students about graduate employment with a sprinkling of community involvement thrown in. This was a modified version of a session I gave about 2 years ago, which inspired a series of blog posts called What Employers Want.

I always find these sessions fun, as they are not normal tech presentations. I’ve mentioned this before, but these type of session require different skills compared to straight tech presentations, because you can’t hide behind the tech. 🙂

If you are a tech speaker, reach out to your local universities and colleges to see if they need some guest speakers. You will both benefit from this!

Thanks to Jagdev Bhogal and BCU for inviting me again. See you again soon.

Cheers

Tim…

UKOUG Tech17 : I’m Speaking

Just a quick note to let you know what I’m doing at UKOUG Tech17 during the 4th-6th December.

I’ve got a couple of normal presentations.

Multitenant : What’s New in Oracle Database 12c Release 2 (12.2)
Stream: Database 1
Length of slot: 50 minutes
Day: Monday 4th December – 14:25-15:15

Using PL/SQL & ORDS to Develop RESTful Web Services for APEX? Why?
Stream: APEX
Length of slot: 50 minutes
Day: Tuesday 5th December – 15:40 – 16:30

I’m also doing a 25 minute session on Wednesday for students, which isn’t currently listed on the Agenda. It’s part of a UKOUG and Oracle Academy collaboration.

At some point in the week I’ll be picking up the “Best UK Speaker Award” for a session I did at Tech16. It’s funny because I wasn’t originally presenting at that event, but I was asked to fill a gap in the schedule when someone dropped out. Happy accident. 🙂

Similar to previous years I will be in and out a lot. I have to give priority to colleagues who don’t get to come to as many conferences as me. It’s only fair…

See you there.

Tim…

ODC Appreciation Day : Silent Installation and Configuration (Automation) : #ThanksODC

Here is my entry for the Oracle Developer Community ODC Appreciation Day (#ThanksODC).

I’ve been mentioning automation a lot recently, both in relation to the cloud and on-prem. The OpenWorld announcements about the Autonomous Database service are not the first thing Oracle has done to ease automation of repetitive tasks. In fact, Oracle has quite a long history of making automation of installation and configuration easy.

I’m not sure what version introduced silent installations of the database, but I first wrote about them when using Oracle 9i (here), with the article changing a lot over the years. In addition to making installations faster, more repeatable and less error prone, they are also important these days if you are using a cloud provider for Infrastructure as a Service (IaaS), since using X emulation to perform tasks can be super-slow. Over the years I’ve also written about silent installations of WebLogic, Oracle Forms, ODI and OBIEE to name but a few.

In addition to installations, Oracle has made silent configuration possible too. Running the Database Configuration Assistant (DBCA) in silent mode is pretty simple (here). WebLogic Scripting Tool (WLST) is a not always easy, but it is a really powerful way to script build processes for WebLogic servers (here). If you are using Enterprise Manager Cloud Control, you will find an API for pretty much everything, allowing you to script using EMCLI (here).

You can find a number of articles I’ve written related to silent installation and configuration using the links above, or grouped under this section of my website.

A good knowledge of this subject is important if you want to start checking out Docker, because you will be doing silent builds and configuration for everything.

When you are learning something new it is nice to use GUI screens, as they often feel a little simpler at first and sometimes give you a little more context about what you are doing. Once you’ve covered the basics you should really switch to scripting, as it will make you more efficient. When I first started to manage WebLogic servers I resisted the switch to using WLST for quite some time. It seemed a little complicated and I was in denial until Lonneke Dikmans persuaded me to try it. Once I got into it I never looked back! 🙂

To summarise the advantages of scripting your installations and configuration, they are:

  • Faster.
  • More reliable.
  • More repeatable.
  • Work fine on the cloud and in Docker.
  • Easily maintainable and can be version controlled.

If you’re not using this stuff already, do yourself a favour and give it a go. You will thank yourself!

Cheers

Tim…

Oracle OpenWorld 2017 : It’s a Wrap

Time for a final post to summarize the craziness that was OpenWorld 2017. 🙂

For me the story of this year’s OpenWorld was the emphasis on humans doing stuff where humans add value, rather than doing boring crap that can be automated.

The obvious thing people will jump on is the Autonomous Database announcement, which I’ve written about already, but the story follows through many aspects of the conference.

The interest in chatbots is quite high at the moment. From a work perspective, it’s not about replacing every application you have with a voice or messenger interaction. It’s about finding use-cases where they work well. Having a chatbot that deals with trivial interactions frees up humans to deal with more important stuff. Over the last few years products using natural language processing for text and voice interaction have come a long way. Many people have devices in their pocket that do this pretty well (Siri on Apple and “OK Google” on Android). Products like Amazon Echo and Google Home have made voice interaction seem normal. As they become more normal, people will expect these services from you.

In the apps world there is an emphasis on making things simpler by making the apps more intelligent. Rather than expecting the user to fill in every bit of information, you default the most likely responses based on the information you have about that user. This could be a simple as pre-filling an address, or as complicated as using machine learning to make educated guesses at what they want. It’s all about making basic interactions as efficient as possible so user time can be spent more productively.

Cloud providers are a great example of software defined data centers. If you choose to move to the cloud, the cloud provider has done the heavy lifting for you. If you want to continue to work on-prem, you need to learn the lessons of the cloud providers and remove humans as much as possible from the process of deploying and managing virtual machines, containers, databases, app servers, networking, load balancers and firewalls etc. Those people can then focus on more architectural, development and performance-related issues.

We speak about the benefits of agile and DevOps all the time, but many people get caught up in the tooling and automation associated with this. Cloud providers take a lot of that burden off us, and tools like Oracle Developer Cloud Service, available for free if you have some other Oracle cloud services, save you from having to worry about some of that development tooling. Other cloud providers offer similar services.

The list goes on…

None of these messages are new, but it has taken me some time to adjust to some of them. Sometimes you have to have a personal use-case to really appreciate things. My experience of cloud services, voice devices, Docker and seeing data center automation using VMware Software Development Data Center have made me more responsive than I think I was before.

People often have a fear of change, and speaking about automation makes people think job cuts, but as I mentioned before this is about stopping people worrying about boring stuff and getting them to focus on where they add value. I don’t see this reducing the head-count in our IT department. I see it reducing the grunt work and directing resource at more important stuff. We are so preoccupied with the crap, we never get to stretch our wings…

Thanks to the Oracle ACE Program and the Oracle Developer Champions Program for making this all possible for me!

So that’s another visit to San Francisco done. Due to funding changes I don’t know if I will visit again. Time will tell.

Here are the 14 posts that relate to this trip.

Cheers

Tim…

Oracle OpenWorld 2017 : The Journey Home

For some reason I thought I was flying home early today. I wasn’t. The flight was 15:00.

I had put myself on an waiting list for an upgrade, that I didn’t get. Unknown to me, and contrary to the advice from the Lufthansa agent I spoke to on the phone, this happened to mean I also lost my aisle seat for the 11+ hour flight home, since I was advised not to check-in online. Flying on a middle seat is not fun for anyone, but for me anything except an aisle is a big problem. It pretty much makes me freak out and fidget constantly. I once stood for 9 hours on a flight where I had a middle seat.

Needless to say I was super-pissed once I got to the airport and found out. I know it isn’t the fault of the airport staff, so I was careful not to go supernova at anyone, but it was extremely hard work. I spoke to the people at the desk, who wrote down my details, but said there was nothing they could do at that time, but would see what they could do as check-in progressed. I wrote an email complaint to Lufthansa, and vented my frustration on Twitter for some time, then the plane was delayed by 30 minutes…

Eventually I was called to the boarding gate and they had found an aisle seat for me again! It was such a relief as I would have annoyed the crap out of the people next to me if I had been in a middle seat.

The flight from San Francisco to Frankfurt was fine except for one brief, but violent bit of turbulence early on in the flight. The staff had to stop the food service and strap in for about 10-15 minutes. I just closed my eyes, grabbed my tray and tried not to have flashbacks to a flight I was on that was like that for hours. There were a number of spilled drinks, vocal people and children crying, but it didn’t last too long. When that does happen, you are twitchy for the rest of the flight.

I stood a lot during the flight and watched some films.

  • Life : I enjoyed this. Quite derivative of alien sci-fi, but good.
  • Wonder Woman : The plot was very generic, but Gal Gadot was awesome and the fight scenes were some of the best I have seen in a superhero film. With the problematic origin story out of the way I’m looking forward to the future Wonder Woman films.
  • Trancendance : I re-watched this. I kind-of like it, even though it is a terribly flawed movie.

We got to Frankfurt about 30 minutes late, which meant I had about 12 minutes to get from my arrival gate to the departure gate in another terminal. I checked with a member of staff, who suggested I wait for the next flight in 4 hours time, but I decided to try and make it, which involved me stomping through the airport like an aging rhino. A couple of people took pity on me, a panting sweaty mess, and let me through the fast lane at security, and let me jump the queue. 🙂 I made it to the boarding gate just as they were closing. A triumph for fatties everywhere!

I got on the plane, went to the toilet and changed my t-shirt, after using my current one as a towel. Yuck.

It was a short flight from Frankfurt to Birmingham with no dramas. I was doubtful my luggage would make it on such a short connections, but it was there waiting for me when I got to the baggage claim. 🙂

So I’m back and dealing with jet-lag, washing, the post-event emotional crash and I’ve got to write a talk about it all to give at work.

I’ll do a wrap-up post tomorrow when I am settled…

Cheers

Tim…

Oracle OpenWorld (JavaOne) 2017 : Day 4 (Thursday)

I met up with some folks for breakfast, which was a first for this week. From there I went to my room, finished off some blogs and cleared down some work emails, then I was ready to start the day.

OpenWorld finished the day before, but JavaOne continued into Thursday, and since I was registered for both I decided to check out some sessions. A quick look through the agenda showed every session for the day was fully booked. I decided to go down and check it out, in case people didn’t show. When I got there is was really busy, with people queuing for sessions, so I turned round and went back to the hotel.

I heard later there were free seats in some of the sessions, but quite frankly waiting around on spec is not my idea of fun. There seemed to be a lot of angry people around, especially when they ran out of food. I can’t really complain as I didn’t pay for the conference, but if I was a paying attendee I would be really unhappy.

In the evening I met up with some folks to grab some foods, then it was back to bed. I’m not sure I’ve ever had such an “unconferency” day at a conference before, except when I’ve been sick.

Cheers

Tim…

Oracle OpenWorld 2017 : Day 3 (Wednesday)

I’m finally starting to sync with the new time zone, so I had to set an alarm to be up in time for an 08:00 appointment.

First up was an Autonomous Data Warehouse Cloud Hands-On Lab in the Hilton with Yasin Baskan and Hermann Baer. I wrote a bit about this separately here.

After speaking to Chris Jones I was planning on going to the next lab. Unfortunately it was full, so sat at a table and started writing up some notes. As I did I eyeballed a bunch of people turning up late for Chris’ lab and giving the ladies controlling the door a hard time because it was full. People are super rude. Some people turned up to the session 35 minutes late and still expected to be allowed in to do a 45 minute hands-on lab. Go figure…

From there I went down the road to the Marriott to see a session called “MySQL 8.0 Overview” by Morgan Tocker. I’m mediocre MySQL DBA at best, so this was just me trying to keep up on things. There was a lot of familiar stuff for an Oracle DBA/developer, like JSON support, WITH clause, windowing functions, optimizer histograms, invisible indexes, instrumentation, roles etc. It seems I accidentally know a lot more about MySQL 8.0 than I thought I did. 🙂

From there it was a quick dash across to Moscone West to see “Oracle Database Features Every Developer Should Know About” presented by my sister-in-law and son. I did know all the features, but there was one I hadn’t written about, so I sense a backfill article coming after I get back to the UK. 🙂

I was going to go back to the Marriott for a session, but got chatting and ended up missing it. After getting some food and bending David Haimes ear for a while I headed back to another session.

The next session was “Five Things You Might Not Know About the Oracle Database” presented by my sister-in-law and Dominic Giles. Once again, I had heard of everything, but there were two things I had not written about yet. One backfill article and one new article coming. 🙂

After talking a little time out to abuse David Peake, which is the highlight of any conference, I headed across to the room for my session, about 40 minute early. I got prepped, unplugged and started working through some notes again.

My session, “Make the RDBMS Relevant Again with RESTful Web Services and JSON” was down as a Java One session. That combined with it being in the last block before the evening party meant I was a bit concerned I would be presenting to nobody. I shouldn’t have worried. People came and I had a good time. I spoke to Connor later and he said I was moving really fast through the talk, 69 slides in 45 minutes, but he probably does 400 slides in that time, so I guess I was really slow. 🙂 The session finished at 17:15 and I was answering questions and chatting with some of the folks until 18:45.

By the time I got to the bloggers meet-up it was winding to a close. Just long enough to grab some food, say hello to a few people, including the wife, and get into a photo. Most of the folks then moved on to the evening event, but I had already found a good home for my wrist-band, so I ducked out and headed back to the hotel to crash. The wife streamed videos of Ellie Goulding singing “Love me like you do”, in an attempt to remind me of the time we watched Fifty Shades of Grey together, but I ignored her and went to bed. 🙂

Tomorrow morning marks the end of the craziness…

Cheers

Tim…

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…