ODC Latin America Tour : Quito to Barranquilla

There was about six of us all on the same flights from Quito to Barranquilla, so the original plan was to meet up at about 06:00 and head off for the airport, but our first flight was delayed, so we left the hotel at about 06:45. The traffic hadn’t started to pick up yet, so it only took about 30 minutes to get there.

Once checked in and through security it was just a case of waiting for our plane to arrive. We were originally meant to be delayed by about 1 hour, but it ended up a little longer.

The flight from Quito to Bogota took a little over an hour and was pretty straight forward. There was some turbulence at the start, but nothing too bad. More like a roller-coaster really.

We landed at Bogota and had to get out through international security and then in through domestic security in zero minutes. It was a bit of a panic, but fortunately the security lines moved quickly and we made it. There was some running involved, which must have been a right sight. We got to the check-in desk and got on to the plane, only to find it was delayed while they waited for a football team arrive, so we didn’t have to rush after all. Once they were on there was a delay loading their luggage. I can’t remember how long we were delaying in total, mostly sitting in the plane, but it didn’t matter. We made our connection. Once we got under way it was a pretty easy 90 minute flight between Bogota and Barranquilla.

The first thing you notice in Barranquilla is the humidity! The airport is under construction, so we had to take a bus round the new bits and pick up our bags from a hut. 🙂 I took a taxi with Pablo and Gustavo, as we were in the same hotel, and that was it for the journey.

To summarise, some delays, some panics, but we got there! 🙂

I did a quick stop at the hotel gym, mostly to do some stretching. Sitting on planes is not the best thing for your spine. A little later a group of us met up to get some food, then it was back to the hotel to sleep, ready for the next conference in the tour…



ODC Latin America Tour : Quito

The first event of the Oracle Developer Community Latin America Tour (Northern Leg) was in Quito, Ecuador. A group of us met in the hotel lobby at about 07:30 and went across to the conference venue. The event began with an introduction by Paola Pullas and Marco Galarza. This was followed by Pablo Ciccarello with an introduction to the Oracle Developer Community, the Oracle ACE program and Oracle Developer Champion program.

It was a three track event, with most of the speakers presenting in Spanish, so I’m only going to mention the sessions I attended.

The first technical presentation I attended was Alex Zaballa with “Let’s get started with Oracle Database Cloud Service”. Alex has done loads of migrations from on-prem to Oracle Cloud, so it was really interesting to hear his take on it, especially on the migration approach.

The next session was me with “Multitenant : What’s new in Oracle 12.2”. I feel like the session went well. It seems multitentant is still struggling to get acceptance. I see lots of people holding back and sticking with non-CDB at the moment. I hope this changes, as even lone-PDB is still a great solution.

The next block of sessions were all in Spanish, so I had to give them a miss.

After a coffee break it was me again with “DBA Does Docker”. Once again the session went well. One of my demos has been a little frustrating since I moved back to Windows. When I figure out the issue I’ll probably write a blog post about it. 🙂

And before you knew it the event was over! A group of us went out to get some food, then it was back early to the hotel to crash before a travel day tomorrow.

Thanks very much to Paola and the Ecuador gang for inviting us and making the event a fun day, especially considering how much trouble I caused the previous day. 🙂

Thanks as always to the Oracle ACE program and the Oracle Developer Champion program for making this possible for me.

Next stop Colombia…



ODC Latin America Tour : Birmingham to Quito

The day started at 03:00, which is a silly time to start the day. I got a taxi to the airport and after a short queue for bag drop, I was waiting for the gate to open.

The first flight from Birmingham to Amsterdam went well and we arrived ahead of schedule. After about 90 minutes I was on the plane for the journey from Amsterdam to Quito. I could see there were some free business class seats, so I asked for the price of the upgrade. At 540 euros I decided to upgrade so I could work and sleep during the 11-12 hour flight.

The first issue was my laptop charger wouldn’t work with the power from the plane. My phone charger was fine, but not the laptop charger. I was worried maybe the charger was broken, so I switched off the computer to save the battery in case I needed to look for a new charger in Quito. I decided to watch movies and sleep instead.

I watched Black Panther and Avengers : Infinity War, both of which were good. I think both were over-hyped, but still enjoyable. My main criticism of the later would be, more Hulk please!

Towards the end of the last film I started to get a headache, so I took some paracetamol, put my seat flat and slept for a short while. I woke feeling rather nauseous and that’s where the problems started. For the last few hours of the flight I was being sick every few minutes. By the time the flight was over I was in a bit of a bad way. So much so they brought medical staff on to the plane, who were giving me injections to stop the headache and nausea. I got wheeled off in a wheelchair to the medical centre, where I pretty much slept for the next 3 hours.

When I came out Diego and Paola were waiting for me. I did tell the medical centre people there was someone waiting for me, but nobody told the information desk, so the taxi driver left. Luckily my saviours were at hand! They drove me to the hotel and I slept a lot!

Big thanks to the KLM staff and the Quito medical staff for helping me. Also, many thanks to Diego and Paola for getting me from the airport to the hotel. That would have been a tough journey in a taxi.

So it seems like my mission to be sick in every country in the world is still on track.

The Ecuador event starts tomorrow (probably today by the time I publish this). Fingers crossed everything will go well.



ODC Appreciation Day 2017 : It’s a Wrap (#ThanksODC)

Yesterday was the Oracle Developer Community ODC Appreciation Day (#ThanksODC).

Thanks to everyone who contributed. Here is the list of posts I saw in chronological order. If I missed you out, give me a shout and I’ll add you. 🙂

Four people chose the “online datafile move” feature, which is a feature I love too, so I guess that comes out top of this list in terms of popularity. 🙂

It’s always good to see some of the entires in languages other than English!

It’s wrong to have favourites, but the entry that made me the most happy was that of Flora B., who was inspired by this event to write her first blog post ODC Appreciation Day : EM CLI. That’s great!

In addition to the people who posted blogs, thanks to all those people that tweeted their favourite feature, and took the time to retweet everything. It was fun to watch them all coming in.

Once again, thanks everyone for getting involved and of course #ThanksODC! 🙂

Same-ish time next year! Add a comment if you have any ideas for themes for next year. 🙂



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…



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.



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…



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.


  • 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.


  • 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?



Oracle OpenWorld 2017 : Day 2 (Tuesday)

I started the day by catching up with the blog and answering some more questions about the Autonomous Database stuff. In most cases my answers were, let’s see what gets released. 🙂

Once I had caught up I made a very brief trip to the gym to do a bit of weights and some stretching, then I cleaned up and headed down to the conference.

I did a tour of the developer lounge and demo grounds in Moscone West again, then bumped into Alex Nuijten. We got talking and I went with him to see Colm Divilly speaking about ORDS. I had my two cameras on the chair beside me during the session. When I got up to leave I left them there and we went out to get some food. Once we had eaten I noticed my cameras were missing, so we walked back to the room and some nice person had spotted them and handed them in. It’s not a proper OpenWorld unless I’ve temporarily misplaced my camera or laptop. 🙂

From there I did a tour of the Moscone South exhibition hall, then went back across to the developer lounge in Moscone West. I ended up talking to a bunch of people on a variety of subjects including community programs, APEX, ORDS, SQL Developer and Docker, to name but a few. I was also introduced to Blue Bottle Coffee, which was nice, but not life-changing as I was lead to believe. 🙂

I briefly saw the wife, who stayed long enough to show me a JavaScript app she had written, before going to meet more important people and no doubt tell them she’s not technical. It’s all getting very suspicious…

Eventually I headed back to the hotel, dumped my stuff and headed out to grab some food. On the way I bumped into Oren Nakdimon and I introduced him to the delights of Chipotle. We must have spent somewhere between 60-90 minutes geeking out about all the stuff we had seen so far. We were the last people to leave the place as they were closing, which was kind-of funny.

From there it was back to hotel to play catch-up and prepare for the following day!



PS. Don’t forget my session on Wednesday.

Make the RDBMS Relevant Again with RESTful Web Services and JSON
Wednesday, Oct 04, 4:30 p.m. – 5:15 p.m. | Moscone West – Room 2002

Oracle OpenWorld 2017 : Day 1 (Monday)

I managed to accidentally (on purpose) sleep through the bay swim. What a shame as I so wanted to swim in cold water and see Bjoern in a knitted jockstrap… Not!

The first action for the day was to watch Larry’s keynote on YouTube. It’s important to know what has been said officially, so I don’t go saying something I shouldn’t and get “disappeared” for breaking the NDA. 🙂 Once that was done I wrote, what seems to have been a controversial blog post. I’m rather disappointed at the reaction to the Autonomous Database. As I expected, very few people seem to have actually listened to what was said in the keynote and I suspect many didn’t even read the entirety of my blog post. Instead, they saw “Autonomous Database” and launched into “it’ll never work” mode. It’s like people want it to fail and want to keep doing the same old boring crap for the rest of their lives. I am hopeful this suite of services will be the start of something interesting, but time will tell. Fingers crossed!

My first stop at the conference was the Oracle Developer Lounge in Moscone West. I had a quick look around at what was going on there, including robot Tai Chi.

From there is was a quick scan of the Demo Grounds to decide what I am going to spend time on tomorrow. I said hello to a few of the Oracle staff I know, and of course told the people on the performance tuning stand they were no longer needed. I’m guessing by the end of OOW17 they will have heard that about 50,000 times… 🙂

I spent quite a bit of time talking to Jeff Smith about an assortment of things related to SQL Developer and ORDS. Then I had a chat with John Brock (JB) about Oracle JET. I’m not a proper JavaScript developer (yet), but I wanted to say thanks for the really good session he did for us at the ACE Director briefing. The demo grounds are a great place to get more information about technologies you know, but also a great place to get context about technologies you don’t know. You just have to admit you’re a noob and ask for the basics. 🙂

I grabbed some food, then went up to the Grand Hyatt to spend the afternoon at the Oracle Applications User Experience (#OAUX) Exchange. I had already seen some of this stuff the previous week at the #OAUX Strategy Day, but it gave me more opportunities to ask questions and get some more context. It’s a difficult job, but they are gradually converting me away from the command line. You can see my shock and awe at what they are doing here on this tweet from an interactive desktop. 🙂

Towards the end of the #OAUX Exchange I met up with the wife and she persuaded me to get in on a photo. Little did I know we would use these pedicabs to go down the hill, through rush hour traffic. If you saw me, I was laughing on the outside, but crying on the inside. Knowing how Debra is in a regular taxi, I’m amazed she agreed to do this.

We popped into the UKOUG meet-up in the darkest bar I’ve ever been in. You needed the flashlight on your mobile phone to see where you were going. We were only there for a few minutes before Debra had to go to some meet-up for important people, and I went back to my room to crash.

Once in my room I had to deal with the fallout from the blog post earlier in the day. I think I need to start a counselling service.

More of the same tomorrow. My feet are killing me. I really should lose some weight.



PS. Don’t forget my session on Wednesday.

Make the RDBMS Relevant Again with RESTful Web Services and JSON
Wednesday, Oct 04, 4:30 p.m. – 5:15 p.m. | Moscone West – Room 2002