Sunday, July 31, 2011

Starting and Stopping OBIEE 11g on Linux

I mostly get to play around with OBIEE on Linux at home. Clients are only running it on Windows now.

I suppose that's due, partially, to the Admin tool running on Windows only and for some, it might just be the comfort level. I've been running on Ubuntu for the last couple of years and I'm definitely more comfortable in that environment. I guess I'm no long scared of it, that's the biggest thing.

Since I don't run it all that often, I tend to forget the scripts to run (and the order) to start up the services.

On the Windows side, there's one "script" to run which can be done from the Start --> Programs bar. Easy.

Here's how you do it on Linux (Oracle Enterprise Linux in my case).

cd into your FMW_HOME:
[oracle@demo ~]$ cd /bishiphome/Middleware
Then cd into user_projects/domains/bifoundation_domain/bin
[oracle@demo Middleware]$ cd user_projects/domains/bifoundation_domain/bin
There you'll find the following:
[oracle@demo bin]$ ls -la
total 68
drwxr-x--- 5 oracle oracle 4096 May 11 10:30 .
drwxr-x--- 17 oracle oracle 4096 May 18 23:52 ..
drwxr-x--- 2 oracle oracle 4096 May 11 10:29 nodemanager
-rwxr-x--- 1 oracle oracle 2003 May 11 10:30
drwxr-x--- 2 oracle oracle 4096 May 11 10:29 server_migration
drwxr-x--- 2 oracle oracle 4096 May 11 10:29 service_migration
-rwxr-x--- 1 oracle oracle 19359 May 11 10:55
-rwxr-x--- 1 oracle oracle 3165 May 11 10:55
-rwxr-x--- 1 oracle oracle 3219 May 11 10:55
-rwxr-x--- 1 oracle oracle 5697 May 11 10:55
-rwxr-x--- 1 oracle oracle 2439 May 11 10:55
-rwxr-x--- 1 oracle oracle 2125 May 11 10:55
First up,
[oracle@demo bin]$ ./ 
using default 32-bit Oracle JVM memory args
JAVA Memory arguments: -Xms256m -Xmx512m
WLS Start Mode=Production
classpath and path being set
* To start WebLogic Server, use a username and *
* password assigned to an admin-level user. For *
* server administration, use the WebLogic Server *
* console at http://hostname:port/console *
starting weblogic with Java version:
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Oracle JRockit(R) (build R28.1.3-11-141760-1.6.0_24-20110301-1430-linux-ia32, compiled mode)
Starting WLS with line:
more stuff here...
You'll be prompted for the username and password you entered upon installation
Lots more stuff here and finally you'll see these lines
<Jul 31, 2011 11:07:18 AM PDT> <Notice> <WebLogicServer> <BEA-000329> <Started WebLogic Admin Server
"AdminServer" for domain "bifoundation_domain" running in Production Mode>
<Jul 31, 2011 11:07:18 AM PDT> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING>
<Jul 31, 2011 11:07:18 AM PDT> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
I'll usually set the title for this terminal so I can tell which window is doing what.

Now I open up a new terminal window and navigate to the same directory, this time, I'm running also known as the node manager.
[oracle@demo bin]$ ./ 
Need to set SERVER_NAME and ADMIN_URL environment variables or specify
them in command line:
for example:
./ managedserver1
Oops, forgot those. Try again:
[oracle@demo bin]$ ./ bi_server1 http://localhost:7001
using default 32-bit Oracle JVM memory args
JAVA Memory arguments: -Xms256m -Xmx512m
WLS Start Mode=Production
...blah blah blahweblog
Again prompted to enter the weblogic username and password.

Set the Title of the Window to "Node Manager" like I did for the WebLogic Server.

Open up a 3rd window and I need to navigate to a different directory.
[oracle@demo ~]$ cd /bishiphome/Middleware/instances/instance1/bin
[oracle@demo bin]$ ls -la
total 56
drwx------ 3 oracle oracle 4096 May 11 10:33 .
drwx------ 13 oracle oracle 4096 May 11 10:34 ..
drwxr-x--- 2 oracle oracle 4096 May 11 10:33 essbase_ha
-rwx------ 1 oracle oracle 44593 May 11 10:33 opmnctl
Now I run the opmnctl
[oracle@demo bin]$ ./opmnctl startall
opmnctl startall: starting opmn and all managed processes...
[oracle@demo bin]$ ./opmnctl status

Processes in Instance: instance1
ias-component | process-type | pid | status
coreapplication_obiccs1 | OracleBIClusterCo~ | 4627 | Alive
coreapplication_obisch1 | OracleBIScheduler~ | 4625 | Alive
coreapplication_obijh1 | OracleBIJavaHostC~ | 4626 | Alive
coreapplication_obips1 | OracleBIPresentat~ | 4800 | Init
coreapplication_obis1 | OracleBIServerCom~ | 4624 | Alive
Not everything has started yet, try again.
[oracle@demo bin]$ ./opmnctl status

Processes in Instance: instance1
ias-component | process-type | pid | status
coreapplication_obiccs1 | OracleBIClusterCo~ | 6505 | Alive
coreapplication_obisch1 | OracleBIScheduler~ | 6511 | Alive
coreapplication_obijh1 | OracleBIJavaHostC~ | 6504 | Alive
coreapplication_obips1 | OracleBIPresentat~ | 6503 | Alive
coreapplication_obis1 | OracleBIServerCom~ | 6502 | Alive

One thing to note here, you have to wait until the WebLogic Server is in the RUNNING mode before you start the opmnctl components.

Unlike Windows, the Linux version doesn't have a one-stop-shop startup script. I found one in the OTN Forums here. If you can write shell/bash (whatever) scripts, I don't think it would be terribly difficult to do on your own either.

Mark Rittman left a comment (which seems to have disappeared) and hopefully it will show up eventually.

Anyway, his comment forced me to look more closely at what each of the above scripts actually do.

FYI, I stole the instructions for starting up OBIEE from the SampleApp Lite guide that was recently released. Here's a snapshot of the instructions:

Looking at, it actually calls

The NodeManager script is located in the <FMW_HOME>/wlserver_10.3/server/bin directory.

Even after messing around with this beast for close to a year now, I still have much to learn.

Friday, July 29, 2011

katezilla: 6.56

6.56. That's about how old the little monster is now. She'll be 7 in December. Wow.

Just about a year ago, she had been admitted to the ICU at St. Joseph's Children Hospital. She spent 7 days or so on a ventilator.

Fortunately for her (and us), she's been strong as an ox over the past year. No visits (knock on wood) since then.

There have been a few moments, oh shit moments; she's coughing or congested and we think "oh no..." but nothing serious enough to warrant a visit to the "Man in White."

Where do we stand?

Kate is still not talking, but is making progress, however slow it might be.

I learned today that she knows how to sign "sorry" (as she apparently stabbed her teacher with a pencil today and also smacked one of her friends).

She's still not able to walk up the stairs. That means I am safe, unless she decides to crawl. If I'm on a call around 3, I warn the other participants that I'm about to be attacked by a little monster.

Her hair is super long now and I try to put it in a pony tail every day. She doesn't care much for that, but I try.

She'll be in the 1st grade this year, which boggles the mind. First, she's old enough to be in first grade? Second, WhyTF is she in first grade?

Of course she still lights up a room. As Dad, I am her pressure there huh? Makes me happy though, tough to complain about that.

Someday I'll get around to starting her charity; currently, if you buy John Piwowar's eBook, that money goes to her. T-Shirt money does too. Let's not forget the tons of money I make from Google for hosting ads!

For now though, I just enjoy.

Wednesday, July 27, 2011

Things That Are The Devil

I can't remember the first time I was introduced to the term, I'm guessing it was via The Waterboy and Mama Boucher:

Bobby Boucher: [after Reading A Question About Benjamin Franklin] Ben Franklin
Young Bobby Boucher: [Flashback To Bobby's Childhood] Mama, When Did Ben Franklin Invent Electricity?
Mama Boucher: That's Nonsense, I Invented Electricity. Ben Franklin Is The Devil!

There's a thread on Google+ related to my last post, Managing Database Entries (tnsnames.ora) that rekindled the word for me.

Today I posted something to the effect on Twitter. I've decided to start adding things I would consider The Devil, in Mama Boucher's terms, here.

Cary Millsap is The Devil. Why? A year or 2 ago he posted a link on Twitter about why we don't need to double-space anymore after a period. Each and every time I go to double-tap the space bar, I think of that post and curse Cary appropriately.

Triggers are probably The Devil. Rarely have I seen them implemented in a halfway decent manner. Usually, they're used as some work-around because someone was too lazy to update their PL/SQL...or just couldn't figure out a way to accomplish their goal without them (say, like removing direct INSERT/UPDATE/DELETE privileges on the source table...?).

From that last post, tnsnames.ora can be The Devil.

I would say that commas in front of the line are The Devil.

My friend Jason Baer is The Devil. Go to 2:40 in:

That's all I have for now.

What do you consider The Devil?

Me. I can think of at least 47 people who believe I am The Devil. could I forget something like that.

Tuesday, July 26, 2011

Managing Database Entries (tnsnames.ora)

For the past 18 months or so I've been arguing that if you would just manage your tnsnames.ora file, things would be much easier. I'm talking about through your various SDLC environments, DEV --> QA --> PROD.

This is true for tools like OBIEE.

In OBIEE, you can use the OCI client and specify your tnsname entry for a particular connection. Of course you'll still have to change the password for the connection, but you'll never be at risk of accidentally connecting to the wrong database.

Guess what? My worst case scenario occurred.

Here's what I have suggested; use a generic name for your connection. Let's say TESTING. How it works right now is we have one for each environment, TESTING_DEV, TESTING_QA and TESTING_PROD.

Each server has a tnsnames.ora file with every single connection.

For OBIEE, that means not only changing the password for each environment, but changing the DNS (TNS) entry as well.

Only bad things can come from this.

(I realize there are much more sophisticated ways of managing this, OID (I believe) for instance, but that's outside the scope).

So what happened?

Last week I built out an Informatica PowerCenter server which connected to the Dev database. Following that, I wrote up the instructions, including the particulars of my installation.

The next person up the chain, installing the QA software, read it literally.

Guess what happened?

The Dev server got borked because they used the Dev connection information and all the configuration stuff (technical term) got messed up.

Guess what else?

I get to rebuild the dev machine.

I would contend that the QA server should only have an entry for the QA database...that way this type of thing would never occur. If we had used a generic name for the database, say TESTING, I wouldn't be working tonight.

Something to think about when you end up managing, not only multiple servers, but multiple "platforms" as well.

Friday, July 22, 2011

SOUG: Thinking Clearly About Performance

Alternate Title: Cary Millsap is Awesomesauce.

Last night the Suncoast Oracle Users' Group hosted Cary Millsap of Method-R Corporation. You may have heard about Mr. Millsap, he's written a few books, a few papers, done a couple of presentations...

Thinking Clearly About Performance
Find his paper here.

While the paper is good, I don't think it compares to the presentation.

This was my first second Millsap presentation I've gotten to see this year, the last was in June in Long Beach on My Case for Agile.

We were treated to 2+ hours ending a little after 9. There wasn't a dry eye in the house. Oh wait, that was something else. It was a packed house, approximately 50 attendees including Enrique Aviles (aka "evil Les" or @eaviles94) and his friend Eric, who drove down from Orlando.

One of my (many) takeaways was finally understanding what the prepare, execute and fetch were.

Here's the sequence diagram...

Here's the profile...

I had never thought of it in the context of what something like java does. Once I did, easy. Here's some pseudo-code:
ps = prepareStatement( "SELECT table_name FROM user_tables" );
rs = executeStatement( ps );
OK, not the best example, but it helped me finally make the connection.

It's All About the Skew
So you have CPU, Network, IO and Something Else. Is it divided evenly among the 4 components (talking about performance here)? 25% CPU. 25% Network. 25% IO. 25% Something Else. No, typically it's not. When you see the spike, you know that's where you start to look (is that Axiomatic?). I can't do it justice (pun intended) read the paper.

The beauty of this approach though is that it's not just confined to database performance, it's software performance in general. I think the "software" people get it more than we database people do too. You have to instrument your code if you are ever going to be good at Performance Tuning.

If you ever have the opportunity to see Cary speak on this topic (really, on any topic, he's incredibly good a breaking down a complex topic and making it digestable by mortals), don't hesitate, go see it.

The Future
Cary's got some plans for the near future too, so you may just get that opportunity sooner than you think. I won't spoil it, but I will announce it after he goes public.

Tuesday, July 19, 2011

Oracle Mix + Suggest-a-Session

A little over a month ago, I saw this tweet from Neil Kodner (@neilkod).

That links to this set of data on github (using gist?).

The data gets interesting the further down you go.

Annoying, yes, but no big deal.

I was then off to KScope for a week of fun.

This weekend, I decided to open up Google Reader for the first time in, well, a long time. Scanning through my Oracle folder, I found the little gem.

Data Science Fun with the OOW Mix Session Voting Data

That was written by Greg Rahn (@gregrahn) on June 23rd, 6 days after Neil's post.

On July 1st, the winners were announced on the Oracle Mix blog.

A little tidbit from Greg's post that Bex (see below) quoted as well:
-- number of users who voted for exactly one author
| users_voting_for_1_author |
| 828 |

-- number of voters who voted for every session by a given author
-- and total # of votes per voter is the same # as sessions by an author
| users_who_voted_for_every_session_of_an_author |
| 826 |

I think it's safe to say that Greg's analysis predicted the outcome.

It's also...unfortunate.

Which brings me to this post by Brian 'Bex' Huff today, Has Oracle MIX "Suggest-A-Session" Jumped the Shark???

I'm thankful that Bex wrote this up because, quite honestly, I was rock the boat I guess.

This conversation needs to take place. I don't believe anything was done illegally, but I think it broke the "spirit" of the rules that were set up.

I'm all for using Twitter, your blog, whatever ("whatever" gets us into trouble) to get people to vote for your stuff; but this seemed to go to far.

Bex has some suggestions for changing the rules over there, check out his piece and chime in.

Sunday, July 17, 2011

SOUG: Cary Millsap

We (SOUG) have the fortunate pleasure of hosting Mr. Cary Millsap.

Perhaps you've heard of him?

The topic is Thinking Clearly About Performance.

Here's the abstract:

Creating high-performance as an attribute of complex software is extremely difficult business for developers, technology administrators, architects, system analysts, and project anagers. However, by understanding some fundamental principles, performance problem solving and prevention can be made far simpler and more reliable. This paper describes those principles, linking them together in a coherent journey covering the goals, the terms, the tools, and the decisions that you need to maximize your application’s chance of having a long, productive, high-performance life. Examples in this paper touch upon Oracle experiences, but the scope of the paper is not restricted to Oracle products.

Here's Mr. Millsap's Bio (note the inclusion of the word "teacher", my favorite description):

Cary Millsap / @CaryMillsap /

Cary Millsap is a public speaker, author, teacher, software designer and developer, entrepreneur, and software technology advisor. In 2008, he founded Method R Corporation, a company dedicated to making people's application software run faster and more efficiently. Mr. Millsap's technical papers are quoted in many Oracle books, in Wikipedia, in blogs all over the world, and in dozens of conference presentations each month. His blog reaches thousands of people each month. He has presented at hundreds of public and private events around the world. He wrote the book "Optimizing Oracle Performance" (O'Reilly 2003), for which he and co-author Jeff Holt were named Oracle Magazine's 2004 Authors of the Year.

RSVP here.

Thursday, July 14, 2011

How To: Run a Silent Install with Response File

Many of you have done this many, many times.

Tonight was my first.

HP-UX, 64bit, Itanium (oops).

I'm using cygwin to ssh into the server. Thanks to John Scott for helping me figure out how to run the GUI installer, well, pointing me in the right direction.

(At one point I asked The Twitter Machine for help, offering T-Shirts in trade for services rendered. Martin Berger, as usual, offered to help. Also, Fuad Arshad, TedC and others that I can't remember right now, I'm sorry).

I tried running xclock and got an error:
$ xclock
Error: Can't open display:
Ah, when I run the ssh command, I have to add a switch/flag thingy in there.
$ ssh -X oraclenerd@hpux
I found that solution here.

After restarting my session, I was able to successfully run xclock. OK, let's try it with the installer.

Wait a second...this line is too slow. 10 minutes for the GUI console to render. Don't ask about trying to do anything, like specify the directory or something silly like that.

I was back to the console method.

However, the first time I did it successfully, I got the Instant Client, which I didn't want.

How do I specify that which installation type I want while using the console? I was not prompted for anything.

Reading around...response file!

Read about response files here.

Like many things that intimidate me, I never bothered to look into it...but it was easy, too easy. That's about the point I kicked myself for being intimidated by that fancy DBA stuff.

So I grabbed the sample file out of response directory, edited it to suit my needs, and I was off and running again.
$ ./runInstaller -silent -responseFile /tmp/client/response/client_response.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 415 MB. Actual 772 MB Passed
Checking swap space: must be greater than 150 MB. Actual 8192 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2011-07-14_10-22-31PM. Please wait ...

$ You can find the log of this install session at:
The following configuration scripts need to be executed as the "root" user.
#Root scripts to run

To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue

Successfully Setup Software.

Or so I I need to run the as root? I'm not root, I'm not in the SUDOers file (or whatever it's called). It took 3 days for me to get the necessary privs to write to /opt/oracle

So now I have to wait for someone with those privs to complete the install.

But hey, I learned something new today.

Tuesday, July 12, 2011

The Value of Reflection

I'm not talking about meta-programming, I'm talking about taking time removed from a situation (work in this case) to consider what you have done, what you have learned and what you want to do.

I was struck by this last night, this morning really, in a discussion with a stalker...I mean friend over IM.

I was describing something I wanted to do in the RPD (OBIEE) and his reponse was, WTF are you thinking? (nicely, of course).

It was then that I realized that I had not taken the time to reflect on my last 2 years.

There are a number of reasons for this.
1. I've been really busy (a good thing)
2. I've been working from home.

Being busy is a no-brainer. Most of us go through periods where we work a lot, that's me. I'm thankful for that, especially in light of my time just before this run started. Things were...not so settled. I've also got a family to support and a daughter who requires more (time, attention and money) than the average child.

During the time when life wasn't so stable, I was full of rants and opinions about how things should be. It's because I had a lot of free time to think.

Working from home is different as I am learning. I've been home (from work) for over 8 months now. I spend all my time in front of the computer. I rarely just sit around.

Sitting in front of the computer all day long occupies my mind and prevents me from reflecting. Perhaps it is distraction? As Jake mentions in that article:

even worse with unread counts, the most heinous weapon in the psychological warfare armory an app can use to ruin your productivity.

Or maybe I just haven't learned yet to step away for a little while. A few weeks ago, I was spending my lunch hour on the bike, I felt great but even better, I allowed myself to step away for a mere hour. Verboten!

So I'm going to take some time in the next couple of weeks to step away; "it's OK Chet, the world will not fall apart while you are away."

Hopefully it will give me the needed time to reflect on what I have done...

Sunday, July 10, 2011

KScope 11 Awesomesauce

I had planned on writing about each session I attended, but I just can't seem to pull it off. Previous years, I've blogged while on site...but it was difficult this year as I didn't have a lot of down time.

This was my very first Kaleidescope conference, and I would vote it as my favorite. The biggest difference between the others, intimacy. This event is smaller than COLLABORATE by a few thousand and smaller than OOW by a few million. I ran into Brent from Regina, SK, CANADA about 32 times. (He kept telling me it rhymed with...nevermind). I witnessed Brent drink a pint of Guiness in 3 seconds across the street from the convention center at the Auld Dubliner, along with a few others. Yikes. I can't, and don't, do that anymore.

But it was fun to run into him every 39 minutes as he would remind me that Regina rhymed with...

Of course there was work to be done.

Sunday was the symposium for the Database Development track, which I orchestrated (yo @ddelmoli, you like that?). You can read about my preparation here and here. I never did write it up officially, but it was fun.

Monday I did write up, here. Along with Cary Millsap's presentation on My Case for Agile Methods, Maria Colgan's presentation on Top Tips to Get Optimal SQL Execution All the Time and Jean-Pierre Djicks presentation on Managing Parallel Execution without Tuning in 11gR2.

One I didn't write up was Lonneke Dikman's Business Logic: The Debate Continues.... This one was fun because it was Lonneke vs. me, Eddie Awad, Mark Farnham, Dominic Delmolini and Paul Dorsey. If I didn't mention, Lonneke's presentation was in the Fusion Middleware I thought it would be fun. Unfortunately, those "put it in the middle tier" people didn't show up.

Here's Lonneke telling us how much business logic should go in the database

Then her reminding us that it should go over here, in the application tier

Seriously though, it was a fun hour. I think we all came away with a better understanding that the business logic should be in the database. :)

Did I mention the Queen Mary party, I mean event? That was fun, a lot of fun.

I'm going to work hard to participate in this again next year...

Next year's registration is open, FYI.

If you are a hardcore technical person, this is where you want to be. The people are great, the content is great and you can hear Brent tell you about Regina.

OBIEE: Breaking Stuff

A conversation with some colleagues the other day prompted some more research on my part on what exactly would break when making changes to the Presentation (metadata/RPD) layer in OBIEE.

It was understood that, at least in 10g and prior, changing the name of a column within a presentation folder would not necessarily break it. The reason is that OBIEE automatically creates an alias for the column so that it doesn't break reports.

I don't like aliases, they're similar to synonyms, and should be used with caution. When I change the name of a column, I intentionally go in and delete the created alias so that it will break on the presentation side.

This is relatively easy to handle when you can control the writing of the reports. However, if you have ad-hoc users, one of the huge reasons to use OBIEE in my opinion, things get a little complicated.

With a little bit of history, let's go back to the original issue; what kind of metadata/RPD changes would facilitate the need to fix reports?

My conclusion, it's the same as 10g. A column change would automatically create an alias, thus not breaking reports. When that column is moved from one folder (presentation table) to another, the reports will break.

A simple test.

From the sample app, A - Sample Sales --> Time presentation table/folder I choose T05 Per Name Year

First, I'll simply rename it and keep it in the same folder

To verify the alias is created

Run the same report

Now let's move it to the "tttt" folder and see what happens

Unresolved column, I broke it. Good.

Moral of the story, breaking stuff is fun. Wait, that's not it.

The issue that was discussed with my colleague had different results. I had performed this same test to demonstrate that he was incorrect...but he wasn't.

Let's add another column to the report from the Products folder, P1 Product

In OBIEE, you nest folders in the Presentation layer by putting a hyphen and a space before the name like this "- ". As I've found out working with this sample app, there is another way to do it as well, add "->" to the description text box

This does not create an alias, but to me, seems to change the name of the Presentation table (and on the presentation side, nests the folder underneath Time). It looks to me like OBIEE ignores certain characters, thus does not effect the rendering of the report (unresolved column error).

The moral of this story? Verify.

Tuesday, July 5, 2011

KScope 11: Managing Parallel Execution without Tuning in 11gR2

I've gotten to see Jean-Pierre Djicks speak a couple of times over the last month or so, and he doesn't disappoint.

Last month at the BI Forum, it was Big Data: Achieve the Impossible in Real-Time, which was really cool because he talked about the fusion of data capture/mining/whatever in regards to sailing, specifically the BMW-ORACLE sailing team.

It wasn't quite as exciting as that, but some pretty cool nuggets came out of it.

As a pseudo dba, or someone who's never had to manage some of the massive systems that many of you have to manage, memory management has been...well, intimidating (theme for the week, month and year).

Throw parallel into the mix and I'm pretty much a lost cause.

Now I can enable parallel, I have rudimentary knowledge of it...but you don't want me managing that on my own.

Enter Managing Parallel Execution without Tuning in 11gR2 (if I find the presentation, I'll link it up).

The one item that really stuck out at me was the idea of queueing. Prior to 11gR2, if all other resources were taken up by other SQL statements, your SQL statement would run serially. That's no longer the case (if enabled). Now, Oracle will queue up your SQL statement to run with the amount of resources that has been designated for it. In my experience, that's a good thing.

Prior to this release (and again, if you have it enabled), your SQL statement would run at the same exact time at the others, but since there are no resources for it, it would be slow as...well, slow. Now, you may have to wait a little bit for it to actually run, but it will run with the parallel resources that were intended (excuse my lack of articulation, I'm sure someone will correct me).

Monday, July 4, 2011

KScope 11: All Hail the Queen

The big event was hosted on the historic Queen Mary this year.

All I can say is, wow.

Let me try to run through a list of things to do on won't be complete, I'm sure, but it should give you an idea.

- Food. +1 - lots of food, everywhere.
- Booze. +1 - again, everywhere.
-- Beers available: Corona, Heineken and something else. No fancy IPAs or anything, but I'm perfectly OK with that.
-- Wine and liquor was also available, but I rarely partake in either of those. This is especially true with liquor, it's why it took me close to 10 years to graduate from college. Bad things man...

- Events. +1
-- Ghost Tours - I didn't partake, but it was available. Check out the site for more details.
-- Live Band - I can't seem to remember the band's name, but they were apparently quite the hit. Playing requests from the crowd and heckling them a bit too.
-- Poker - Missed this one too, but many people did not. Reports suggest that the poker room was packed the entire night.
-- Dueling Pianos - I missed this one too, but rumor has it that Maria Colgan had quite the time there.
-- The Champagne Room, I mean VIP room. I believe this was for the Presenters and volunteers for KScope, a special section near the top (?) of the boat with a great view of the band and the aft side.
-- Don McMillan. +2 He had 2 shows, each with slightly different content tailored to the ODTUG/KScope crowd. If you don't know who he is, check out his page or watch this video.

Myself and Patrick Hurley (@phurley) were eating dinner and Mr. McMillan joined us for a spell. Remember, this is the guy (whom I didn't know at the time) who had interviewed me earlier in the week (oh yeah, I'm not that shy). I got to share my dream of being a comedian someday and shared with him my story of...well, I can't really share it here, but if you've met me and there was beer involved, you've heard it.

Throughout the day, we were told of a mystery guest...none of us could figure it out. Kathleen McCasland gave us a small clue, inadvertently, in a video address after was a boy.

9:30 rolls around and the lovely ladies of ODTUG/KScope were trying to get us to go upstairs to where the band was, and the mystery guest would be making an appearance shortly.

Wow. Young MC. He seems to have the same problem as me...once a good looking, thin, not so thin. However, he was a huge hit and I have to admit it was fun seeing him live.

Sometime after that, I was caught in a "decent" picture of myself with a few others:

From left to right, that's Marc de Oliveira, Patrick Hurley, Dominic Delmolino, me, Cary Millsap and Eddie Awad. Picture by Sheeri Cabral.

To end the night, fireworks off of the back (aft) side of the ship. Awesome.

Thanks to everyone at KScope and ODTUG for a fantastic night. I had an absolute blast and many of the people I talked to did as well.

Sunday, July 3, 2011

KScope 11: Top Tips to Get Optimal SQL Execution All the Time

This was my final session of the conference.

Prior to this one was Jean-Pierre Djicks on Managing Parallel Execution without Tuning in 11g Release 2. Conveniently, it was in the same room. Especially convenient given that it was in the same room the day after the Queen Mary event. I did want to see JP's other talk, Speed Up Your Data Warehouse with in-memory Processing, but it was just too much effort for me.

Besides, I had never seen Maria speak and I was trying to broaden my horizons. I wish I had seen her speak years ago...would have made life a lot easier.

Maria is not on Twitter but you can find her writing at the Oracle Optimizer blog.

The optimizer subject has always been a bit intimidating to me. I don't know why, it just has. I've mostly glossed over it.

No longer.

Despite my state (post Queen Mary event), a lot of things came together. The optimizer really isn't magic. Surprise!

The importance of statistics, which I've always known but never truly understood, was made clear. Extended statistics? Neat. Histograms, explained (better).

Awesome stuff...and really not as magical as you might think. Take a gander at the Optimizer group's Explain the Explain Plan for more details.