Robert Freeman’s Blog…

I’ve just noticed that Robert Freeman has removed the ability to add comments to his blog and may stop blogging altogether, see his post entitled Removal of comments…

I hope he’s able to carry on blogging. I think it’s good to hear a variety of opinions and I like to read peoples off-topic posts as they give an idea of the personality behind the blog.



Happy birthday to me!

Yes, it’s that time of year again. Another year older and supposedly another year wiser.

I don’t know about everyone else, but I seem to have missed a few years between 18 and 36. Where did they go and what was I doing? It’s all a blur.

I was sure that Larry was going to release Oracle 10g Release 2 in time for my birthday!

I’m off to hit the books.



Are we big fish in a small pond?

How well do we as Oracle professionals cope on the worldwide stage?

I was struggling to answer a question on my forum yesterday. My gut reaction was that both the question and answer were simple, but I seemed incapable of grasping the issue. The reason for my difficulty was that English was not the first language of the person asking the question. This made me feel guilty on a couple of levels:

  • I’m a bit ashamed of the fact I can’t speak another language. I was terrible at French and German at school and two years of Japanese lessons left me in a position where all I can do is count to 10 and introduce myself. Not a massive return on my investment 🙂
  • I could imagine the frustration on the part of the other person. A newcomer to Oracle has enough to deal with, without having to cope with a language barrier on top of everything else.

This got me thinking about how we in the English speaking Oracle world must be percieved on the world stage.

I did a quick scan on the net and found a Population by Country breakdown. When you take a look at the numbers you’ll see that in comparison to China and India most countries seem relatively insignificant in population terms. Both these countries have recently seen a boom in their IT industries to the point where they are fast becoming IT superpowers. With that in mind, our myopic view of the IT industry seems very much like being a big fish in a small pond.

In actual fact, the IT industry is more than aware of this fact. So much so that even a certain company with the motto “Don’t be evil.” thinks nothing of censoring its content to get its foot in the door. Of course, they’re not the only people at it:

To return to my initial questions:

  • Are we big fish in a small pond? I think so.
  • How well do we as Oracle professionals cope on the worldwide stage? Not so well.

I would be interested to know the reactions of people on both sides of the debate. If English is not your first language do you feel left out in the cold, or have you come to accept that English is a prerequisite in the IT industry?



My Utopian Development Environment

Some thoughts about my perfect development environment. Of course it will never happen 🙂

Compulsory PL/SQL APIs
Client application developers would have no direct access to tables. Not even for queries. All access would be provided by PL/SQL APIs. I like this because:

  • It removes the need for triggers as all inserts, updates and deletes are wrapped in APIs. Instead of writing triggers you simply add the code into the API. I loath triggers.
  • It prevents people who don’t understand SQL writing stupid queries. All SQL would be written by PL/SQL developers or DBAs, reducing the likelyhood of dodgy queries.
  • The underlying structure of the database is hidden from the users, so I can make structural changes without client applications being changed.
  • The API implementation can be altered and tuned without affecting the client application.
  • The same APIs are available to all applications that access the database. No duplication of effort.

J2EE abolished
I like Java, but I dislike J2EE. When I look at the way J2EE applications interact with the database it worries me. Perhaps I’ve been unlucky, or perhaps I’m missing the point, but I think it’s shocking. Using container managed persistence (CMP) to generate SQL on the fly worries me. I want to know at development time what is going on. I want to be able to cut and paste the SQL, not try and capture or trace it during a run. At least with bean managed persistence (BMP) you get this, but Java developers seem to avoid BMP like the plague.

Even when J2EE developers use BMP with calls to PL/SQL APIs, the containers have some strange ideas about what’s sensible. To update a record the container requests a query, update and requery of the data, rather than just a query and update. What’s this extra work for? I know what the state of the data is. I’ve just updated it. Even if someone does sneak an update in after me, the bean is being destroyed so the extra query was pointless.

I’m not saying that J2EE is pointless, I just think that 90% of the people out there don’t know, or care, how badly their applications interact with the database. Maybe some Java guru will tell me why I’m talking rubbish, but I can only judge this on my experience and that tells me that J2EE applications are not performant.

Just a few extra points to throw into the mix.

  • All client application developers would understand the rudiments of SQL, PL/SQL and DBA work. They don’t have to be experts, but they should understand the basic concepts.
  • All DBAs would understand the rudiments of client application develpment work. Once again, they don’t have to be experts.
  • All DBAs would be skilled at SQL and PL/SQL. I feel they should be the best in the company, but I know others would disagree. Oracle has now dropped the requirement for PL/SQL in the OCP DBA syllabus. In my opinion this is a mistake.
  • Managers would understand when a decision should be made by the techies.
  • Techies would understand when a decision should be made by the management.
  • People would share ideas and information, rather than trying to empire build.
  • Companies would encourage reskilling of employees.
  • Techies would want to keep there skills up to date, or make way for someone who does.
  • Applications would be planned, designed and built using more formal methods, not RAD or iterative development.

Perhaps the most important point is that I would be presented with lavish gifts whenever I entered the room.



Firefox Livemarks

One of the guys from work has just pointed out the Livemark feature of Firefox, which allows you to create dynamic bookmarks based on XML feeds.

  • Open the Bookmarks Manager dialog (Bookmarks > Manage Bookmarks…).
  • Create a new livemark (File > New Livemark…).
  • Fill in the properties dialog with appropriate values and click OK. Try these:
    Name: “AskTom – Recently Updated”
    Feed Location: “”
    Description: “Most recently updated posts on”

The resulting bookmark is dynamically generated from the contents of the feed.

I think it’s neat, but now I have to decide between Bloglines, Thunderbird and Firefox as my blog reader 😉

By the way, the blogger spellcheck tries to substitue the word “Asthma” for “AskTom” 🙂



Personal Development

This is a random collection of thoughts on personal development, both in and out of the workplace.

Developing your skillset
Jeff Hunter has a very nice post on the relevance of certification called Does Certification Matter Anymore? The comments section includes some of my own thoughts.

On a more general note we all have to make choices about whether to try and progress our skillsets or stick with what we have. I’m reading and learning constantly, but now and then I start “the next big push” and for a moment I’m filled with dread. The more I learn the more I understand the process of learning and the more I realise there are no short cuts. The only way to understand something is to chip away at it until it all makes sense.

Putting yourself on the line
The first time I posted on a forum I was terrified. I watched the thread for ages waiting to see if someone trashed my answer, which they did. My choices were to (a) stop posting or (b) get myself up to speed and try again. I picked (b).

The same thing happened again when I started to write articles for my website. I hate to think what rubbish is still lurking on my site, but at the time I wrote it I believed it to be true…

Even after all these years it’s still happening to me. I’ve just sent out a batch of books all over the world to get reviewed. I could have picked people who would say good things out of loyalty to me, but instead I picked people who would tell me the truth. If the reviews say the book is rubbish I would rather people didn’t waste their money on it. If the reviews are positive then I know I’m moving in the right direction. Either way these reviews will have a positive affect on my life. This conveniently links into my next point.

All experiences are good
The dedication in by book reads,

“This book is dedicated every person I’’ve met, every place I’’ve been and every event I’’ve experienced.”

OK, it sounds a little cheesey, but I believe it’s true. Sometimes even the worst situations turn out to be the source something good.

I carry a small effigy of Ganesha, a Hindu deity who is known as “the remover of obstacles”, a well-timed present from a friend. Ganesha is part man, part elephant, part God and part demon. Now the interesting thing about Ganesha is that he also places obstacles in your path, as a way of teaching you a lesson. I’m not a religous person, but I love what he represents. We can learn a lot about ourselves by our reactions to both good and bad situations.

Acknowledge your ego
We all have an ego. It’s a contributing factor in our desire to progress. I heard this quote a few years ago,

“To deny your own ego is the most egotisitcal thing you can do.”

I can’t remember the source, but I think it’s pretty neat. I guess we all need to keep our egos in check from time to time 😉

Closing statements
I have two quotes to round off this post. The first is from a great sage called Jeff Hunter who said,

“Can’t we all just get along?”

I don’t know where I got this next one from, probably some hippy Yoga teacher,

“Life’s a journey, not a destination.”



My book arrived!

I got home late last night to find a note from the neighbours saying that a parcel had been delivered for me. To my delight it was some copies of my latest book.

I’ve been publishing on the web for years, but it’s quite an ego trip to actually hold a book in your hands with your own name on the cover.

I’ve already noticed a few format changes and additions that have been made by the editorial team, like the inclusion of cartoons at chapter headings, but in general I’m happy with the way it turned out.

I’m nearing the conclusion of my second book, so I’ll keep you posted.



ORACLE-BASE – Recompiling Invalid Schema Objects


I’ve just posted a new article on called Recompiling Invalid Schema Objects.

Since I added the rating and most-viewed sections to the front page I’ve noticed that the really basic articles seems to be very popular. On reflection that’s pretty obvious, but it did surprise me a little. Anyway, this is one of those topics that might interest people that are newer to Oracle, or those that have given up caring 😉



Server Room Air Con

Take a bunch of servers, add some ropey air con and what do you get? A server room that can just about stay at the correct temperature.

Now add a whole bunch of new kit and run it all on the hottest day of the year. What do you think is going to happen? Maybe, one of the RAC nodes will bomb out complaining about the temperature and you won’t be able to get in there to do anything without an asbestos suit. I figure if we install a heat exchange we can probably supply hot water for the whole city.

In the UK we seem incapable of dealing with any temperature variations. I suppose it could be worse. Global warming could flip us into another iceage…