I leave for Oracle OpenWorld 2014 tomorrow, which is normally a time when I’m super amped up, but I feel rather flat and in need of change at the moment. I just feel like I’m investing a massive amount of my time on things I don’t enjoy and are not really benefiting me or the community at large, so what’s the point?
What do I enjoy?
What don’t I enjoy?
This is not a business for me. It’s fun. When it ceases to be fun, what’s the point?
At the moment, I feel like:
This would allow me to spend a lot more time playing with Oracle and writing articles, which I feel benefits myself and others to a greater extent than what I’m doing now.
If I look at my web stats, they seem to back up my opinion. The vast majority of hits on my website are for content. Only a very small proportion relate to “interaction”, yet it is this interaction which takes up the vast majority of my time.
I guess some people would see this as going against the whole ethos of the ACE Program, but I don’t think so myself. I think I’m more use to the community by putting out content, rather than doing what I’m doing now.
Maybe I’ll come back from OOW and have a change of heart. Maybe not. Time will tell.
Update: Some people have taken this post as a message that I’m going to stop writing articles. I think the post is pretty clear on that front. This is about giving me more time to write articles.
Update 2: The forums are locked while I’m at OOW. I’ll decide if they will stay locked once I get back to the UK.
Here’s where I will hang out (and in some cases speak) during the OOW:
Sunday, Sep 28 3:30pm – Moscone South – 310
Monday, Sep 29 8:30am – 4:00pm - Creativity Museum
Tuesday, Sep 30 10:00am – Creativity Museum
Wednesday, Oct 1 – 3:00pm – Jillian’s
Thursday, Oct 2 – 10:45am – Moscone South – 104
Some of you might have followed the discussion around the number of standby redo logs on twitter, but since 140 characters are woefully short for the complete story here’s the writeup that prompted the question. This is a test with 18.104.22.168 on virtualised Linux, repeated on a proper platform with physical hardware.
First of all here’s my setup. I have a dbca-based database (CDB, but doesn’t matter) that features 3 groups for its online redo logs. They are all 50 MB in size-important for this test, but not realistic :) Following the Oracle documentation I created n + 1 groups (per thread) on the standby to stop Data Guard broker from complaining about missing standby redo logs (SRL).
The end result was positive, here’s what the broker thinks:
DGMGRL> show configuration Configuration - test Protection Mode: MaxPerformance Members: CDB1 - Primary database STDBY - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS (status updated 23 seconds ago)
The broker likes to bemoan you in case SRLs are missing on either primary and/or standby. So I’m all good to go! But wait a second, when I’m using one of the cool new 12c features to check the failover readiness, something is odd:
DGMGRL> validate database "STDBY" Database Role: Physical standby database Primary Database: CDB1 Ready for Switchover: Yes Ready for Failover: Yes (Primary Running) Flashback Database Status: CDB1: Off STDBY: Off Current Log File Groups Configuration: Thread # Online Redo Log Groups Standby Redo Log Groups Status (CDB1) (STDBY) 1 3 2 Insufficient SRLs Future Log File Groups Configuration: Thread # Online Redo Log Groups Standby Redo Log Groups Status (STDBY) (CDB1) 1 3 0 Insufficient SRLs Warning: standby redo logs not configured for thread 1 on CDB1 DGMGRL>
Pardon me? I _do_ have 4 groups of SRLs:
SQL> r 1* select group#,sequence#,bytes,used,status from v$standby_log GROUP# SEQUENCE# BYTES USED STATUS ---------- ---------- ---------- ---------- ---------- 4 27 52428800 2048 ACTIVE 5 29 52428800 11264 ACTIVE 6 0 52428800 0 UNASSIGNED 7 0 52428800 0 UNASSIGNED
And 3 online redo logs:
SQL> select group#,thread#,sequence#,bytes,status from v$log; GROUP# THREAD# SEQUENCE# BYTES STATUS ---------- ---------- ---------- ---------- ---------------- 1 1 31 52428800 CURRENT 2 1 29 52428800 INACTIVE 3 1 30 52428800 INACTIVE
But the fun fact remains that out of my 4 standby redo logs, only 2 are ever used. @pioro suggested that it’s because there is no need to use any of the other two because of a lack of redo to be applied and that sounds plausible. To validate this I created a test environment on physical hardware with proper storage because my tests on the lab turned out to suffer from IO problems.
The setup is the same.
I created a couple of sessions that start off by creating a 1,000,000 rows table, then delete from it only to roll back after the delete completed. That’s a lot of redo for 50 MB files (again you wouldn’t use 50MB online redo logs in production-this is just a test). My observation remains: only groups 4 and 5 are used. When the redo generation on the primary gets too far ahead, there will be RFS transfers of the archived redo log. Here are a few queries with their output:
PROCESS STATUS CLIENT_P GROUP# THREAD# SEQUENCE# BLOCK# ACTIVE_AGENTS --------- ------------ -------- ---------------------------------------- ---------- ---------- ---------- ------------- ARCH CLOSING ARCH 5 1 149 83968 0 ARCH CONNECTED ARCH N/A 0 0 0 0 ARCH CLOSING ARCH 5 1 147 86016 0 ARCH CLOSING ARCH 4 1 148 83968 0 MRP0 APPLYING_LOG N/A N/A 1 147 85766 25 RFS IDLE UNKNOWN N/A 0 0 0 0 RFS IDLE UNKNOWN N/A 0 0 0 0 RFS RECEIVING LGWR 3 1 150 85744 0 RFS IDLE ARCH N/A 0 0 0 0
Is this a problem? Not as far as I can tell. And maybe I did something incorrectly on my side too. There wasn’t a problem-my archiver process was quick enough to archive the SRLs and as soon as it fell behind it resorted to fetch archived redo logs from the primary. When it uses the FAL process you see line like this in the alert.log:
2014-09-17 02:34:45.164000 -05:00 RFS: Selected log 4 for thread 1 sequence 211 dbid 788205474 branch 857548261 Media Recovery Log +RECO/STDBY/ARCHIVELOG/2014_09_17/thread_1_seq_209.368.858479683 Archived Log entry 141 added for thread 1 sequence 210 ID 0x2efbcba0 dest 1: 2014-09-17 02:34:46.215000 -05:00
When Real-Time-Apply was active (whenever redo transfer rates dropped), I saw this, alternating between group 4 and 5:
2014-09-17 02:35:33.653000 -05:00 Media Recovery Waiting for thread 1 sequence 230 (in transit) Recovery of Online Redo Log: Thread 1 Group 5 Seq 230 Reading mem 0 Mem# 0: +DATA/STDBY/ONLINELOG/group_5.380.858076769 Mem# 1: +RECO/STDBY/ONLINELOG/group_5.342.858076769
So for some reason yet unknown to me there are only ever 2 SRLs in use.
I joined Oracle Consulting Services (OCS) as an employee on 15-January 1990 and worked my way to Technical Manager when I resigned to start my own consultancy on 31-July 1998. I worked as an independent Oracle consultant from then (with a side trip into company-building with friends) until 30-April this year. On 01-May 2014, I joined startup Delphix.
Throughout this quarter-century of La Vida Oracle, I’ve made a great living, but it has also been a great way of life. I started presenting at the Rocky Mountain Oracle Users Group in 1993, and joined the board of directors in 1995. I’ve since worked with many other Oracle users groups as a volunteer and I’ve found the experiences to be incredibly educational, in so many ways. I’ve also met a lot of amazing people through volunteering at Oracle users groups. I met the junta of the Oak Table Network, and joined that group in 2002. I was elected as an Oracle ACE in 2007, before I even knew the program existed, then I was made an ACE Director in 2012, which is an elevation I appreciate but still never sought.
But over it all, all throughout, is Oracle. The Big Red O. Some people have had bad experiences at Oracle Corporation, some have had REALLY bad experiences, just as people have good and bad experiences at any huge corporation. In the spirit of a comment made famous by Winston Churchill, “Democracy is the absolute worst form of government. Except for all the others.” Oracle is populated by, and led by, some very human … beings. I love them all, some more than others.
So for 25 years now, out of the 37 years Oracle has been in existence, I have had a really great life. La vida Oracle. I am so GLAD I met ya! And I love this life!
And so it continues today. For the first time in a quarter century, I’m out of the direct orbit of Oracle, now that I’m working at Delphix. I’m still heavily involved with Oracle as an Oracle ACE Director and adviser to the boards of three local Oracle users groups (RMOUG, NoCOUG, and NEOOUG) and a board member at ODTUG.
Delphix builds data virtualization software for Oracle, PostgreSQL, SQL Server, and Sybase ASE, as well as file-system directories on Unix/Linux and Windows. Virtualizing Oracle databases is a big part of Delphix’s business, but it is not the only part, and the non-Oracle parts are growing rapidly. It’s refreshing to work with other database technologies. But I still love working with Oracle Database, and I’m continually impressed by Oracle’s technology prowess, with the In-Memory option of Database12c a brilliant example.
Some say that Delphix competes with Oracle. Be serious – please name a technology company that doesn’t compete with Oracle in one way or another, as the breadth of Oracle products and services is so expansive.
As an independent contractor at EvDBT for 16 years, I myself competed with Oracle Consulting in my own very small way. But, at the same time I cooperated with Oracle by optimizing the implementation of Oracle technology. I sure as heck understand who hold the tent up.
The same is true with Delphix. As a company, Delphix products can be said to compete with Oracle Enterprise Manager 12c Cloud Control, in the niche area known as Database-As-A-Service (DBaaS) in the specific SnapClone functionality. The Delphix software appliance is very similar to this SnapClone piece, but this part of the Oracle product is just a small part of the scope the vast EM12c Cloud Control product suite.
In the same way, I as an independent consultant could have been said to have competed with the EM12c diagnostics pack and performance tuning pack, because the techniques I used and taught tended to make people independent of those tools.
That’s not to say I steered people away from EM12c; it’s just that I myself didn’t use it for performance tuning, though gradually I learned to appreciate many of its features, not least through paying attention to my wife Kellyn Pot’vin.
In fact, the Oracle Enterprise Manager 12c Cloud Control, using the Cloud API, can fully administer virtual databases created by Delphix. After all, Delphix is just an alternate mechanism to implement data virtualization. Instead of using the mechanism of Oracle DBaaS SnapClone, customers can also use Delphix. So Delphix can become a part of EM12c.
So there is no competition between Delphix and Oracle. Delphix is an alternative to the SnapClone mechanism underlying DBaaS, but Delphix virtual databases can still be orchestrated through the EM12c console. It need not be an either-or choice.
Of course, I still have to write that extension through the EM12c cloud API, and I’m getting right on that. Unless someone else gets to it first.
Keep your eye on the Oracle EM12c Extension Exchange webpage for more progress on integrating Delphix within EM12c…
We are deep into RMOUG’s abstract submissions and reviews, preparing for the following:
With this weighing so heavily on my mind, I felt it might be a good time to put down on paper why I’m so proud of how RMOUG does it’s reviews and why this conference has such a great lineup. This not only should tell you why you should submit or attend, but if you are considering submitting an abstract, it can help you submit a better one when you know what most conferences are looking for.
There are a number of ways that conferences perform their reviews of abstracts and fill their slots for a conference schedule. I can honestly say, that considering how many conferences I’ve reviewed, been content lead for, etc., RMOUG has by far the fairest and best structure as to how abstracts are chosen.
RMOUG Training Days has the following goals:
1. We are a technical conference. We do not want sales or marketing presentations in our 100 scheduled sessions or in our 1/2 day deep dive/Hands on labs.
We do this for the following reasons:
2. We give our attendees the best content in the world.
Something to know about RMOUG’s Abstracts:
If you aren’t getting accepted as a speaker or speakers for your company aren’t getting accepted as much as you would like, here are some pointers:
If you’re still interested in submitting an abstract to RMOUG, please do so by clicking here. I also have a blog post on how to write an abstract if you want to know more, but for now, I’ll get back to getting prepped for Oracle Open World!
Followers of my blog and website know I play around with installations on Fedora for fun. All of my installation guides on Fedora come with a link at the top that points to this disclaimer.
A few times recently I’ve been contacted by people saying their boss, teacher or customer is insisting they install Oracle on Fedora. Rather than repeat myself, I’ve added another point at the bottom of this disclaimer that reads:
Q: My boss/teacher/customer is insisting that I should install Oracle on Fedora. What should I say to them?
A: Your boss/teacher/customer is making a mistake, probably because they do not understand the implications of what they are asking you to do, or do not know about the free alternatives. You should probably get them to read this Oracle Linux FAQ. If they are still unsure, feel free to put them into contact with me and I will happily educate them.
If you are being asked to do something that is blatantly incorrect, it is your responsibility to educate those around you so they can (hopefully) make better choices in future.
Last week we had a great webinar with Jonathan Lewis as he explained his hands on experience of Delphix, how Delphix works internally and some use cases that Delphix solves for Jonathan.
Jonathan will be joining us a the Delphix booth at Oracle Open World and giving shorter version of the presentation at 10am on Monday and Tuesday and 11am on Wednesday.
Also Jonathan will be speaking at Oaktable World on Monday 1pm and both Monday and Tuesday for Ted Talks at Oaktable World between noon and 1pm.
If you are interested in trying Delphix out, we will be hosting a hands on labs for the first time ever to install Delphix trial copies on your laptops. We will be in the OTN lounge on Monday between 3:30 and 5pm and Tuesday between 10am and 5pm at Oaktable World Labs.
Below are Jonathan’s slides and recording of the webinar:
I put out a post yesterday called The Future of PL/SQL : My Opinion.
For an Oracle-related blog, putting something out at the weekend is a sure fire way to get nobody reading it. If I look at my website, the hit rate at the weekend is about 1/5 of that of a week day. By the time most people get back to work on Monday they have a stack of blog posts to read and yours will probably fall into the “mark as read” pit of their RSS reader. In a similar fashion, people’s timelines on social media are generally so crowded, your “look what I’ve just written” tweet will probably be lost amongst the talk of alcohol, bad food and photos of the kids…
So having said that, I chose a Sunday to put out my manifesto for the future of PL/SQL and was surprised by the volume of feedback. I know there are a lot of PL/SQL programmers out there, but it’s easy overlook that when many of the other programming communities are so much more vocal in comparison. It’s good to know there are so many people out there who still care about PL/SQL! You’ve made an old man happy.
In case you hadn’t noticed it, partitioning has finally reached clusters in 12c – specifically 22.214.171.124. They’re limited to hash clusters with range partitioning, but it may be enough to encourage more people to use the technology. Here’s a simple example of the syntax:
create cluster pt_hash_cluster ( id number(8,0), d_date date, small_vc varchar2(8), padding varchar2(100) ) -- single table hashkeys 10000 hash is id size 700 partition by range (d_date) ( partition p2011Jan values less than (to_date('01-Feb-2011','dd-mon-yyyy')), partition p2011Feb values less than (to_date('01-Mar-2011','dd-mon-yyyy')), partition p2011Mar values less than (to_date('01-Apr-2011','dd-mon-yyyy')) ) ;
I’ve been waiting for them to appear ever since 126.96.36.199 and the TPC-C benchmark that Oracle did with them – they’ve been a long time coming (check the partition dates – that gives you some idea of when I wrote this example).
Just to add choice (a.k.a. confusion) 188.8.131.52 has also introduce attribute clustering so you can cluster data in single tables without creating clusters – but only while doing direct path loads or table moves. The performance intent is similar, though the technology and circumstances of use are different.
Although a lot of my effort at the moment is focused on DBA features, I have written some articles on PL/SQL enhancements. There are a few neat new features for PL/SQL developers in 12c, but you could be forgiven for thinking it is a little underwhelming. There are two ways to look at this:
From a base language perspective, I think option 2 is closer to the mark. PL/SQL is a really stable, fast and mature language. There really isn’t very much that you can’t do with PL/SQL these days. So what is the future of PL/SQL in my opinion?
As part of his role as PL/SQL evangelist, Steven Feuerstein contacted a number of people about their opinions of PL/SQL. When he asked me about my wish list, I suggested all functionality in the Alexandria PL/SQL Utility Library should really be in PL/SQL. A quick look at the Alexandria site shows it includes code that supports a large variety of functionality from a variety of authors. Among other things, this library includes:
You may see some things in that list that look like duplication of functionality we already have. Oracle 10g introduced UTL_MAIL for sending emails from PL/SQL, but the functionality is so limited, you invariably end up coding your own APIs using UTL_SMTP (like this). Oracle 10g also introduced UTL_DBWS for consuming SOAP web services, but once again, it is often easier to do it yourself directly, or using a simpler SOAP_API based on UTL_HTTP. We don’t even have any reasonable tracing functionality. Instead we have to write our own wrappers for DBMS_OUTPUT, or use someone else’s. So although the PL/SQL language is great, when it comes to integration with other technologies you end up having to do a lot of the heavy listing yourself, or rely on using someone else’s unsupported solution.
So in my opinion, the future for PL/SQL is not in major changes to the language itself, but in bringing these sort of support and integration packages into the database. I think we should avoid forcing overly complex frameworks on people. I’m very much talking about simple utility packages. This could be done in one of two ways:
I think option 2 would make a lot of sense. If you think about it, we almost have a precedent for this in the form of APEX.
Imagine how exciting it would be if part of the Oracle 12cR2 or Oracle 13c announcement included a huge library of support packages like this!