10g Release 2, Oracle Spending Spree and Unsecured Wireless Networks

I’m struggling to come to terms with the fact that 10g Release 2 is still not available for download. If you’re struggling to cope with its absense you can get ahead of the game by reading these articles:

Oracle Database 10g: Top Features for DBAs – Release 2 Features Addendum

Some very cool stuff has been added in this release!

Oracle has continued it’s spending spree. See: Oracle goes shopping again.

We often talk about the lack of security on wireless networks, but could we find ourselves in court if we use them? Sounds like the answer could be yes! See:

Man Arrested for Using Open Wireless Network



PS. Did I mention I was still waiting for 10g Release 2?

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.



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 ORACLE-BASE.com 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 😉



Integration of Oracle products…

OK. I know I’ve posted lots of stuff today, but this is a new blog so I’m venting my spleen. Hopefully over time it will become a little more positive. I love Oracle. I really do, but…

When will Oracle get all their product certifications up to the same level?

Our plan was to have a single production RAC and application server cluster for all our systems, but we use one RAC for our main application, along with clustered 10g application servers with their own Cold Failover Clustered infrastructure. Sounds fine!

Trouble is we also run OCS. Now that needs an infrastructure and application server(s), but it can’t run on the same ones as our production applications. What’s more, it’s not certified against the 10g database, so it has to have a separate database.

We also run Oracle Payroll. Guess what? It doesn’t use standard application servers so it needs to be run on separate servers. Also, it’s not certified on 10g so it needs it’s own database instances.

We tried running grid control. Needs it’s own DB instance and is made up of 9iAS components by the look of it…

We’ve got two third party applications that are certified against various versions of Oracle, two more DB instances (OK, this isn’t Oracle’s fault).

I could go on, but I’m starting to bore myself and I guess by now you get the idea.

Now I know that all the products are produced by independent teams and there is a real “time to market” pressure on them, but how Larry Ellison can talk about product integration and keep a straight face is beyond me.

As a result of attempting to use a single vendor we are using about 3 times the hardware we should be, and all those boxes require Oracle licenses. I think we are single-handedly keeping Oracle UK in profit…

I’m off to Yoga to chill out 😉



Does anyone use Oracle Enterprise Manger and Gird Control?

I’ve been running Oracle 10g RAC in production since it was released, but in all that time I’ve probably had the DB Control running for about 10 minutes. Now admitedly we’re talking about an Oracle product on Tru46, but I can not believe how much memory it takes up. If I leave it on for more than a few minutes it grabs about 450M of memory. I don’t know about you but I can think of much better uses for that memory.

I foolishly decided to give grid control a go. Now the agents on database nodes were fine. They didn’t take up too much memory or CPU, but on the app servers they went berserk. We’re talking 500M of memory and 20-40% of the CPU. The crux of it is, in order to monitor the performance of your box you have to kill the performance of your box. I suppose the plus side of it is that it sends you an email to tell you that the agent processes are killing the box.

Needless to say, the whole OEM and grid control thing is not what I expected. Of course the TAR I raised about the problem resulted in a generic platform bug report that now claims it has been fixed in the next version of Grid Control, which I guess will come out soon after 10g Release 2.

So back to the question that is the title of this post, has anybody got this stuff to work without a massive investment in hardware just to run the agents?



Old fart of Oracle in the making…

My company has just bought several PL/SQL Developer licenses and it’s a pretty good tool, but every time I edit a source file I keep accidentally using my beloved UltraEdit (a posh text editor). I then compile the code using SQL*Plus.

Now I know that PL/SQL Developer is designed for the job, but I have everything I need with UltraEdit. I don’t need a code beautifier because I know how to indent code. I don’t need a debugger as I instrument my modular code. I’ve had syntax highlighting for years in UltraEdit.

I’m seriously starting to think I’m becoming an old fart.

Please, somebody validate me. Tell me it’s OK not to use posh IDEs…



PS. I’m thinking of switching from FireFox to Lynx as my main browser. Those new fangled graphical browsers will never catch on…

Debugging the debugger…

I’m having an intermittent problem with a Java Stored Procedure. I raised a TAR with Metalink who asked me to run oradebug against the process to pull out errorstacks. Doing this not only killed the session, but brought down the whole instance and OS!

Next I started to get errorstacks out using dbms_system.set_ev. This seemed to work, but it produced truncated errorstacks.

Now I’m debugging the errorstack production in order to allow me to debug the original Java issue.

The joys of running Oracle on Tru64…

Oracle supporting multiple platforms???

Oracle support their products on a ridiculously large number of operating system platforms. It’s a statement of fact, but in reality what does this mean. Over the last coupe of years I’ve come to believe that Oracle “port” to many platforms, but they can only effectively “support” a limited range of those platforms.

These are my thoughts on the relevance of several operating systems on a per-product basis…

Oracle 10g Database:

Linux – Works very fast and is extremely reliable, provided you are VERY careful about what OS packages you update.

Solaris – I like Solaris, but I question using expensive Sparc hardware when Linux on x86 runs faster. Never used Solaris on x86, but then why would I? That’s what Linux is for 😉

HP-UX – Works well, but it’s a dead platform. Ask anyone within HP and you will know that Tru64 and HP-UX are not long for this world. HP-UX on x86? Yeah, right!

Tru64 – Contact Oracle support for help on Tru64 and you will soon find out they don’t have access to Tru64 instances to test anything worth doing. It’s a great platform but it’s already been end-of-lifed by HP so don’t even go there!

Windows – Oracle works well on Windows, but it’s not as fast as running it on top of Linux, so why put money into Bill’s pocket for lower performance?

Oracle 10g Application Server:

It’s a Linux product. Running it on any other operating system is a waste of time and money.

Please don’t try and run it on Tru64. You’ll spend months fighting it and eventually get HP to replace your Alpha kit with x86 kit for free. It happened to me 😉

Oracle Collaboration Suite:

It’s a messy and overcomplicated product built on 9iAS components. In my opinion 9iAS was a total abortion, and I’m not too fond of OCS.

Anyway, it’s a Linux product. To paraphrase a conversation with Oracle consultants, “It’s supported on a number of platforms but it’s a Linux product.” Enough said.

Oracle E-Business Suite:

See AS10g and OCS.

From this post you might conclude one of two things:

  • I’m a rabid Linux fan.
  • I’ve used Oracle on many platforms and always found the best way to get support is to use the latest version of a product on the platform Oracle prefer and Oracle currently have a love affair with Linux.

I like to think it’s the latter, but I do find myself foaming at the mouth in the presence of penguins…