Wednesday, March 29, 2006

New laptop

I managed to blow up my computer at the weekend. I've had problems with the hard drive since a repartitioning exercise went wrong, so I'd picked up a new hard drive to replace it. That's very easy to type, and is a relatively easy hardware task (and would be very easy if it wasn't for those ribbon cables which seem to lots of twisting to get the plug the right way up). Not sure whether it was static, dust, a loose connection or what, but when I plugged it in there was a flash from the power supply, a bit of smoke and one dead box.

So after some discussions with the holder of the budget (my wife) we went off to the David Jones to get a snazzy new laptop. We went for an Acer Aspire 1642 configured with 1Gb of RAM and 60Gb of hard drive. David Jones is a department store that sells computers as an afterthought. Asking the salesman about firewire, he looked blank and pointed at the Ethernet port. To be honest, I didn't expect much technical nounce from them (and I'll need to get a PC card with a firewire adapter at some point). Still 18 months interest free and Microsoft Office Student+Teacher edition thrown in were the reasons I went there.

I've got the dubious drive (80Gb) and the new one (120Gb) which I want to get rigged up as external hard drives. Then I can have what I'd consider a REAL backup regimen rather than relying on two drives in a single box.

The only weird thing is that the drive is set up as two FAT32 partitions rather than NTFS. Haven't decided whether/when to convert it over. I have decided to give up on the Linux dual-boot thing. I tried Ubuntu once. but couldn't figure out how to get the dialup modem working. The HELP wasn't. Yeah, it's great to talk about community support and such, but I couldn't access that support without going back to Windows and switching back and forwards trying things. Instead I switched to Fedora 4, for which I could buy a physical book and with the book I was able to get the modem working pretty quickly. But I've never really used it, and am happier with cygwin to drop down to a shell-like environment. Now I hear Fedora 5 is out, and I really can't be bothered (especially after Dizwell's review of FC5).

I did get a nice new install of the Production version of Oracle XE and was able to confirm that the DB18 fix is in the Production build. It will be interesting to see how future patches get incorporated into XE, and how we'll get to know what fixes are in which XE build.

To test whether the fix made it in, I had to learn how to do the initial exploit. It was surprisingly (frighteningly) simple once I found the right tidbits to install.

Monday, March 06, 2006

When is a schema a squema ?

Squema : (noun) a database schema that provokes nausea, disgust or fear in developers and/or DBAs. [from Latin 'schema' and Middle English 'squeamish']

Okay, it's not a real word, but it was prompted by a typo/spelling error in a post in the XE support forum.
What structures will put shivers down your spine when you first set eyes on a database schema ?

  1. There's only half a dozen tables, the largest of which has just three columns similar to 'Entity Id','Attribute Id' and 'Attribute Value'. Every query in this database will include forty-two joins.
  2. Lots of columns defined as CHAR rather than VARCHAR, all constrained to NOT NULL. A sure sign of a generic product designed to be database-independent.
  3. Lots of columns names like USERDATA..., USER_DEFINED..... or similar, so the column names give you no idea what the contents are. Normally the sign of a third-party product. You can guarantee that there won't be any practical constraints and that, at some point, the wrong data will find its way into the wrong column.
  4. Columns defined as VARCHAR2, but with names suggesting they contain dates/numbers or, in conjunction with 'generic names', just data values that are suggestive of dates and numbers. Look forward to a life of invalid date and value errors.
  5. Spelling mistakes in table, procedure or column names. I once worked with an application that included a table column "proccess_status". A giveaway that some steps are missing from the review process and bound to trip up programs written in languages that don't validate SQL syntax and semantics at compile time.
  6. select * from user_constraints where constraint_type = 'R' gives no rows selected. No foreign key enforcement, no data integrity, no data found....
  7. select * from user_constraints where constraint_type in ('P','U') gives no rows selected. Trust me, the application will enforce it. Yeah, right, with the help of the tooth fairy.
Anything else which makes you squirm ?