Showing posts with label Conference. Show all posts
Showing posts with label Conference. Show all posts

Monday, December 05, 2016

UKOUG Tech 2016 - Super Sunday

UKOUG 2016 is underway. This year I'm staying at the Jury's Inn hotel, one of a clutch of hotels within a stone's throw of the ICC and all the action of Brindley Place. Proximity is the greatest luxury. My room is on the thirteenth floor, so I have a great view across Birmingham; a view, which in the words of Telly Savalas "almost takes your breath away".

Although the conference proper - with keynotes, exhibition hall and so on - opens today, Monday, the pre-conference Super Sunday has already delivered some cracking talks. For the second year on the trot we have had a stream devoted to database development, which is great for Old Skool developers like me.

Fighting Bad PL/SQL, Phillip Salvisberg

The first talk in the stream discussed various metrics for assessing the the quality of PL/SQL code: McCabe Cyclic Complexity, Halstead Volume, Maintainability Index. Cyclic Complexity evaluates the number of paths through a piece of code; the more paths the harder it is to understand what the code does under any given circumstance. The volume approach assesses information density (the number of distinct words/total number of words); a higher number means more concepts, and so more to understand. The Maintainability Index takes both measures and throws it some extra calculations based on LoC and comments.

All these measures are interesting, and often insights but none are wholly satisfactory. Phillip showed how easier it is to game the MI by putting all the code of a function on a single line: the idea that such a layout makes our code more maintainable is laughable. More worryingly, none of these measures evaluate what the code actually does. The presented example of better PL/SQL (according to the MI measure) replaced several lines of PL/SQL into a single REGEXP_LIKE call. Regular expressions are notorious for getting complicated and hard to maintain. Also there are performance considerations. Metrics won't replace wise human judgement just yet. In the end I agree with Phillip that the most useful metric remains WTFs per minute.

REST enabling Oracle tables with Oracle REST Data Services, Jeff Smith

It was standing room only for That Jeff Smith, who coped well with jetlag and sleep deprivation. ORDS is the new name for the APEX listener, a misleading name because it is used for more than just APEX calls, and APEX doesn't need it. ORDS is a Java application which brokers JSON calls between a web client and the database: going one way it converts JSON payload into SQL statements, going the other way it converts result sets into JSON messages. Apparently Oracle is going to REST enable the entire database - Jeff showed us the set of REST commands for managing DataGuard. ORDS is the backbone of Oracle Cloud.

Most of the talk centred on Oracle's capabilities for auto-enabling REST access to tables (and PL/SQL with the next release of ORDS). This is quite impressive and certainly I can see the appeal of standing up a REST web service to the database without all the tedious pfaffing in Hibernate or whatever Java framework is in place. However I think auto-enabling is the wrong approach. REST calls are stateless and cannot be assembled to form transactions; basically each one auto-commits. It's Table APIs all over again. TAPI 2.0, if you will. It's a recipe for bad applications.

But I definitely like this vision of the future: an MVC implementation with JavaScript clients (V) passing JSON payloads to ORDS (C) with PL/SQL APIs doing all the business logic (M). The nineties revival starts here.

Meet your match: advanced row pattern matching, Stew Ashton

Stew's talk was one of those ones which are hard to pull off: Oracle 12c's MATCH RECOGNIZE clause is a topic more suited to an article with a database on hand so we can work through the examples. Stew succeeded in making it work as a talk because he's a good speaker with a nice style and a knack for lucid explanation. He made a very good case for the importance of understanding this arcane new syntax.

MATCH RECOGNIZE is lifted from event processing. It allows us to define arbitrary sets of data which we can iterate over in a SELECT statement. This allows us to solve several classes of problems relating to bin filtering, positive and negative sequencing, and hierarchical summaries. The most impressive example showed how to code an inequality (i.e. range) join that performs as well as an equality join. I will certainly be downloading this presentation and learning the syntax when I get back home.

If only Stew had done a talk on the MODEL clause several years ago.

SQL for change history with Temporal Validity and Flash Back Data Archive, Chris Saxon

Chris Saxon tackled the tricky concept of time travel in the database, as a mechanism for handling change. The first type of change is change in transactional data. For instance, when a customer moves house we need to retain a record of their former address as well as their new one. We've all implemented history like this, with START_DATE and END_DATE columns. The snag has always been how to formulate the query to establish which record applies at a given point in time. Oracle 12C solves this with Temporal Validity, a syntax for defining a PERIOD using those start and end dates. Then we can query the history using a simple AS OF PERIOD clause. It doesn't solve all the problems in this area (primary keys remain tricky) but at least the queries are solved.

The other type of change is change in metadata: when was a particular change applied? what are all the states of a record over the last year? etc. These are familiar auditing requirements, which are usually addressed through triggers and journalling tables. That approach carries an ongoing burden of maintenance and is too easy to get wrong. Oracle has had a built-in solution for several years now, Flashback Data Archive. Not enough people use it, probably because in 11g it was called Total Recall and a chargeable extra. In 12C Flashback Data Archive is free; shorn of the data optimization (which requires the Advanced Compression package) it is available in Standard Edition not just Enterprise. And it's been back-ported to 11.2.0.4. The syntax is simple: to get a historical version of the data we simply use AS OF TIMESTAMP. No separate query for a journalling table, no more nasty triggers to maintain... I honestly don't know why everybody isn't using it.

So that was Super Sunday. Roll on Not-So-Mundane Monday.

Thursday, November 24, 2016

UKOUG Conference 2016 coming up fast

The weather has turned cold, the lights are twinkling in windows and Starbucks is selling pumpkin lattes. Yes, it's starting to look a lot like Christmas. But first there's the wonder-filled advent calendar that is the UKOUG Annual Conference in Birmingham, UK. So many doors to choose from!

The Conference is the premier event for Oracle users in the UK (and beyond). This year has another cracker of an agenda: check it out.

The session I'm anticipating most is Monday's double header with Bryn Llewellyn and Toon Koopelaar's A Real-World Comparison of the NoPLSQL & Thick Database Paradigms. Will they come down on the side of implementing business logic in stored procedures or won't they? It'll be tense :) But it will definitely be insightful and elegantly argued.

Oracle's bailiwick has expanded vastly over the years, and it's become increasingly hard to cover everything. Even so, it's fair to say in recent years older technologies such as Forms have been neglected in favour in favour of shinier baubles. Not this year. There's a good representation of Forms sessions this year, including a talk from Michael Ferrante, the Forms Product Manager. These sessions are all scheduled for the Wednesday, in a day targeted at database developers. If you're an Old Skool developer, especially if you're a Forms developer, and your boss will allow you only one day at the conference, then Wednesday is the day to pick.

Hope to see you there

Monday, December 17, 2007

UKOUG 2007: Ruby Tuesday

Tuesday was a long day for me. I was awake at 5:00am. On Monday I was awake at 5:30am. If it wasn't for the fact that I'm still in the same timezone I would swear I was jet-lagged. It isn't "jet-lag" either - I mainly drank water at the bloggers' meet-up last night. Anyway, it gave me the chance to run through my presentation before breakfast.

The first session of Tuesday was Sue Harper's overview of SQL Developer's new features. These transpired to be the new features in the coming 1.5 release rather than the latest production release. The upcoming release is special because its features are ones suggested and voted on by SQL Developer users on the SQL Developer Exchange site. The team deferred the planned 2.0 release because its manifest contained no features which users were clamouring for, at least not according to the SQL Dev Exchange rankings. So if there's some functionality you want to see added to the product, suggest it. If enough other users agree with you there is probably a reasonable chance you might get it. Power to the people!

Most of these new features are enhancements to existing functionality - a new SQL formatter, better code insight. This is because the SQL Dev team is quite small and has only one real developer. The team piggy-backs on the work of the JDeveloper team, so to a large extent the feature-set in SQL Dev depends on what is in the other tool. That is why the next release will feature the ability to see queue tables but not to create or alter them. In the long run we can hope that the JDev modelling features will be included in SQL Dev.

Database vs middle tier


My chairing of Toon Koppelaar's session got off on the wrong foot. Of course I should have checked how to pronounce his name before I introduced him - Dutch names tend to sound like a cough - but as it turned out it was the name I thought I knew which I had in fact got wrong. Toon (pronounced tone) was generous. Apparaently he gets call "Tune" quite a lot.

Toon's talk was another waltz around the question of where business logic properly belongs. Toon distinguishes three times of logic:
  • data logic - directly manipulating the data;
  • UI logic - directly affecting the user's interaction with the system;
  • business logic - everything else.
Toon rehearsed the familiar arguments. We have moved almost full-circle from text-based stateless apps in the seventies and early eighties through client server apps to the current fad for graphical stateless apps. The main difference between the green screen dumb terminals of yore and today's browser-based apps is responsiveness: the new apps do try to respond to the user in the client layer. This comes at a price: the presentation layers have a large number of moving parts, drawn from an exploding range of widget toolkits and frameworks. Keeping up with all these different bits requires a significant knowledge investment, which in turn leads to teams of specialists overseen by architects (you have to hear Toon say "architect" to realise that he means it as an insult).

But the real problems arise when the business logic is written in Java or .Net or one of these other fancy-dan languages. These applications tend to be very chatty - Toon quoted an example where a single search spawned 7000 separate calls. They also tend to date very quickly, which makes them hard to maintain and hard to migrate. Most applications are "Window on Data" - the user retrieves data and updates data. This is precisely what databases are meant to do. Consequently the underlying database design is paramount. The DBMS and PL/SQL have been the single stable constant in system architectures for more than fifteen years now. So put your business logic in the database (PL/SQL and views) and just change the front-end layer to keep up with the Next Big Thing.

The interesting thing is that these talks - due to the nature of the conference - are usually singing to the converted. However, I noticed an ex-colleague, who is a Java head, in the audience. I chatted to him afterwards. He was spitting feathers. Strawman arguments... business logic is object-oriented....PL/SQL is too hard to maintain. In the end I had to calm him down by proposing that he present his opinions at a SIG. He said he'd think about it. I have heard this a number of times now. Both sides try to bludgeon the other side into admitting defeat. The trouble is finding people who are equally experienced in both database and middle-tier architectures. Almost everybody is a specialist on one side of the fence or the other. There are good reasons why this tends to be the case but it does make it difficult to hold a discussion in which everybody understands the issues involved.

So I think it comes down to numbers. Front-end developers generally outnumber database engineers in any organisation, so most of the application will be written in the programming paradigm which suits them. This will lead to the business logic in the middle tier, because that's what they understand. Whether this is the correct solution is a different matter.

11g for developers


Well at least I managed to pronounce Tom Kyte's name correctly. In this session Tom covered the key new features for developers. As with the other session, I'll list the features he mentioned, and just expand on a couple of points which were news to me:
  • Client result cache
  • server result cache
  • PL/SQL result cache
  • virtual columns
  • the long awaited PIVOT clause
  • finer grained dependency analysis
  • Advanced compression
  • PL/Scope
  • Method 4 dynamic SQL
  • compound triggers
  • change to WHEN OTHERS exceptions (see below).
The more I hear about the result caching features the more I think my project ought to move to 11g. Currently we are on 9i with only the vaguest plans to migrate to 10g. For the last few months I have been, in effect, implementing something like result caching, only not as efficient. A crusade for the new year. Something I had not picked up on before is that the PL/SQL result cache only applies to functions, not procedures, and also doesn't work with functions which have OUT or IN OUT parameters.

Bryn Llewellyn, the PL/SQL product manager, offered Tom the choice of three new features. Tom asked to have the WHEN OTHERS exception banned; regular readers of AskTom will know that the use of this exception without an accompanying RAISE or RAISE_APPLICATION_ERROR is one of his bugbears. In the end they compromised: WHEN OTHERS without a RAISE or RAISE_APPLICATION_ERROR will throw a compilation warning. But only if the compilation is set to the correct level. I rather suspect the sort of developers who code such silent bugs in their exception handlers probably don't use the compiler flags.

The duplicity of duplicate rows


Hugh Darwen started the third talk in his series of SQL's biggest mistakes with a discussion of the Bellman's line from the Hunting of the Snark, "What I tell you three times is true." He followed this up with Ted Codd's observtion that "If something is true saying it twice doesn't make it any more true."

Duplicate rows in a resultset are duplicitous because they can represent two different problems. One is that the table contains duplicated data. The other is that the SQL has generated duplicate rows, for instance through an imperfect join. Either way it is an offense against relational theory, which requires that a relation consist of unique records. The possibility of valid SQL generating duplicate rows is a fundamental flaw in relational theory, which wasn't anticipated by Ted Codd. There are workarounds. We can introduce artificial uniqueness through sequences or or on the fly row number generation. We can suppress duplication through the use of DISTINCT or UNION, or we can ensure we include all the key columns in our select statements and include differentiating tags in UNION ALL statements.

No solution is entirely satisfactory. Synthetic keys do not address the underlying problem of duplicate data in the table. That really needs to be tackled by a decently normalised data model and building unique constraints on the natural keys. Removing duplication from the resultset has performance implications. We wouldn't want to pay the overhead for applying DISTINCT to every query but how else can we guarantee uniqueness in the resultset. Hugh suggested this problem was down to the database vendors but I think that is a bit cheeky. DISTINCT inevitably requires additional work on the part of the database and that has to cost something. It can be optimized (with the kind of hashing algorithm Oracle introduced for GROUP BY in 10gR2) but as Scotty was wont to observe, "Ye cannae break the law of physics".

Incidentally, Hugh owned up to introducing the NATURAL JOIN syntax into the ANSI standard. He acknowledged that it was a controversial addition. Indeed. Some people I know regard it as a mistake; perhaps not on a par with NULLs but a mistake none the less. Personally I think it's a heffalump trap. It may be a boon for the experienced SQL practitioner but it's just a bug waiting to happen for the unwary. And if my experience on the OTN forum is at all representative the clueless outnumber the clueful, and they appear to breed faster. It's not the way we'd like it to be but it's the way it is. Of course this is just the sort of pragmatic approach which often enrages the theoreticians (or at least Fabian Pascal).

Hugh rounded off his presentation with the observation that fundamental mistakes are often irrevocable. Furthermore they don't often reveal themselves until it's too late. So maybe it's time for a Truly Relational Database. This call for for arms was delivered with a knowing smile - most of us in the audience are Oracle wranglers first and foremost. So he asked the question of himself, why does he keep doing this? Because somebody has to, otherwise the importance of theory will disappear off the practitioners' radar altogether.

Understanding statspack


Jonathan Lewis also started his presentation with a quote:
"------ is the art of looking for trouble, finding it everywhere, diagnosing it wrongly and applying unsuitable remedies."
This turns out to be Sir Ernest Benn on politics, but as Jonathan rightly says it acts as a neat summation of the state of Oracle tuning.

All database performance problems mean one of two things:
  • the database is working too hard; or
  • it is waiting for someting.
Waits are due either to the inherent slowness of a particular step or because there is a queue for a particular resource. There are only issues:
  1. disk I/O;
  2. CPU consumption;
  3. network delays;
  4. application contention (locks);
  5. internal contention (latches)

It's almost always the SQL at fault:






SQL ordered by getsCPU
SQL ordered by readsDisk (CPU)
SQL ordered by executionsCPU (network)
SQL ordered by parse callsCPU (internal contention)
SQL ordered by version countsCPU, internal contention
SQL ordered by CPU timeCPU
SQL ordered by elapsed timeapplication contention

The problem with Statspack is that it just gives us a list of symptoms. It can be hard to distinguish the flow of the events which underlie the bald statistics and even harder to determine possible causes. What sort of database activity might generate lots of logfile sync waits? So Jonathan advises us to play with Statspack. Run a query many times; check the Statspack output. Change the statement and repeat the operation. Stress Oracle and see what happens.

The other important thing is to keep an archive of Statspack results. Quite often performance problems arise because something has changed. The current output may flag up a problem but it might not be enough to diagnose it. Having a history of Statspack output will allow us to spot trends, repeating patterns or sudden changes in behaviour.



..occurrence
..rarefrequent
impacthugeeasy to seeeasy to see
.tinyirrelevantstatistically visible

This tied in nicely with Robyn Sands's observation that performance tuning is about reducing variability.

Tuesday evening


In the evening we had the SIG Focus Pubs. This is supposed to be an opportunity for delegates to meet others with similar interests. I'm afraid I took it as an opportunity to find presenters for my next SIG (27th February 2008 - save the date!) I did chat with somebody who is still happily using client/server Forms 6i. Well, it's table, quite richly featured, highly productive and it works - at least for the time being. This person expressed the hope that Forms 6i would run on Vista. Somehow I doubt it (and so did a former Forms guru of my acquaintance). Apart from anything else, archaic software like Forms is exactly the sort of thing which will display very slowly on Vista's new rendering architecture.

Afterwards a few of us went for a mealy at a rather upmarket curry house called Lazeez (hence "ruby Tuesday"). The food was very nice but there were no side dishes. An innovation too far. Anyway, my thanks to Joraph, who picked up the tab.

Monday, December 10, 2007

UKOUG 2007: Presentations available.

I haven't finished writing up the conference and already the presentations are downloadable from the conference agenda page. Sigh.

The password is the usual one. If you don't know it, your membership's regular contact should be able to tell you. Otherwise e-mail the UKOUG office, which is quicker than attempting to crack it yourself (although as it's a regular dictionary word with no baroque capitalisation or numbers your rainbow tables won't break a sweat).

Not all the presentations are available. As speakers we had until Friday 7th December to upload the really final version of the slides so perhaps some people didn't make that deadline. Also, putting our slides online was not compulsory. It's a shame, because there are a couple of talks which I missed which are not there yet.

Tuesday, December 04, 2007

UKOUG 2007: Monday, Monday

The first session I chaired was Martin Widlake talking on "Avoiding Avoidable Disasters and Surviving Survivable Ones" He took as his sermon the text What could possibly go wrong? Well, for starters, there could be a problem with the USB drive so that the wireless slide controller doesn't work. Martin disappeared to try and find a replacement, which left me with the possibility of having to vamp for an hour if he didn't come back. Fortunately he did return, albeit without a replacement gadget, so his presentation was more static than useful usual [see Comments - Ed]. Fortunately the ideas were lively. I was particularly taken with the Formica Table. This would be a forum where "not bad" DBAs answered questions which fitted 95% of all scenarios; sort of an Oak Table For The Rest Of Us.

His main theme was that projects tend to fail because decision-makers aren't realistic in their risk assessments. So projects are planned on the basis of everything going right. Staff are told to work extra hours and weekends without any recognition that tired people make mistakes, and fixing mistakes costs time. Or additional people are recruited which just increases the number of communication channels, to the point that the overhead of keeping everybody in the loop becomes excessive.

Martin advises us to install disaster tolerant hardware, because it gives us more interesting problems to solve. Of course we shouldn't really switch to clustering technology just for the sake of it. But if we think we are eventually going to need RAC we should move to it now. That way we'll have learned to live with it and smoothed all the wrinkles before the technology has become critical to the system.

There were some entertaining war stories. One concerned a failed powerpack in a cluster. A sysadmin noticed and helpfully substituted the powerpack from another machine. When he connected the first node without a hitch but the second node promptly fried that power pack too. So he called an electrician. In order to get at the problem the electrician had to climb a ladder. The ladder slipped and the flailing electrician grabbed at the nearest thing to hand, the power rail, which collapsed and took out the leccy for the entire server room. We can't plan for such things, we can merely acknowledge that such stuff will happen.

The solutions are the obvious ones: realistic planning, smaller units of delivery, delivering something on a regular basis. One neat idea for solving the communication problem came from somebody who works for Unilever. They use Jabber to post small messages to a central message board, so everybody can see what everybody else is doing in real time. At last a business use for Twitter.

An Industrial Engineer's Approach to DBMS


Problems with the AV set-up seem to have become a theme in the sessions I've chaired. Cisco's Robyn Sands turned up with a Mac but without the requisite dongle which would allow her to plug it into the hall's projector. So she ended up having to drive her presentation from a PDF on a loaned Windows machine. She handled the transition to an unfamiliar OS but it was an unlucky start to her session.

Industrial engineering concerns itself with "design, improvement and installation of integrated systems of people, material, equipment and energy", which is a pretty good definition of the role of a DBA too. Industrial engineers focus on efficiency, value and methodology; they are the accountants of the engineering world. The application of IE methods to DBMS has the aim of producing a consistent application. For instance, every database in an organisation should be consistent: same installed components, same init parameters, same file locations, with transportable tablespaces and reusable code/scripts/methods. This results in safer and more flexible systems. The installation process is a flowchart; in effect the database instance is deployed as an appliance.

Another IE practice is value analysis. This says that a cost reduction adds value to a system just as much as adding a new feature. Which brings us to Statistical Process Control . Every process displays variability: there is controlled variability and uncontrolled variability. We need to use logging to track the elapsed time of our processes, and measure the degree of variability. Benchmarking is crucial because we need to define the normal system before we can spot abnormality. Abnormal variability falls into three categories:
  • special case;
  • trend;
  • excess variation.
Once we have explained the special cases we can file and forget them. Trends and excess variation both have to be investigated and fixed. The aim is achieving a consistent level of service rather than extreme performance. If you can accurately predict the Mean Response Time then you understand your system well.

Robyn described a project she had worked on which focused on systems reliability. The goal was to reduce or eliminate recurring issues with a view to reducing outages - and henceout-of-hours calls - to increase the amount of uninterrupted sleep for DBAs and developers. A worthy end. The problem is simply that a DBA or developer woken at three in the morning will apply the quickest possible fix to resolve the outage but there was no budget to fix the underlying problem when they got back into the office. Usually old code is the culprit. There's lots of kruft and multiple dependencies, which make the programs brittle. The project worked to identify the underlying causes of outages and fix them. The metric they used to monitor the project's success was the number of out-of-hours calls: over the course of the year these fell by orders of magnitude.

Robyn finished her presentation with some maxims:
  • Rules of thumbs are not heuristics.
  • Discipline and consistency lead to agility.
  • Reduce variation to improve performance.
  • No general model applies to all systems.
  • Understand what the business wants.
  • Model and benchmark your system accurately.
  • Understand the capabilities of you system.

The licensing round table


This event was billed as "Oracle's Right To Reply". Unfortunately there wasn't an Oracle representative present and even when one was rustled up they could only take away our observations to pass them on. This confirmed an observation from Rocela's Jason Pepper that Oracle employees are expressly forbidden from discussing licencing unless they are an account manager. This can lead to situations where advice from Support or Consulting leads to customers having exposure to increased licences.

The issues aired were the usual suspects. Why isn't partitioning part of the Enterprise Edition licence? Why aren't the management packs available for Standard Edition? Why isn't there a single, easily locatable document explaining pricing policy? How can we have sensible negotiations when the account managers keep changing? There was one area which was new to me. There is a recent initiative, the Customer Optimization Team, whose task is to rationalise a customer's licences. Somebody asked the pertinent question: what is the team's motivation - to get the best value for customer or to sell additional licences for all the things which the customer is using without adequate licences? Perhaps we'll get answers. I shall watch my inbox with bated breath.

Index compression


This was a bonus session I hadn't been meaning to attend but it was worthwhile. Philip Marshall from Joraph presented his research into the effects of compression, because these are not well documented in the manual. Compression works by storing the distinct values of the compressed columns and then linking to each instance of that value, which obviously imposes a small overhead per row. So the space saved on storing the compressed column is dependent on both the length of the column and the number of instances of those values. The overhead means that compressing an index with small columns which have high variability could result in very small savings or even a larger index.

Also we need to remember that the apparent space saving could be due to the act of rebuilding the index rather than compressing it. This matters because (as we all should know) the space savings from rebuilding can be quickly lost once the index is subjected to DML. Furthermore there is a cost associated with uncompressing an index when we query its table. This is can be quite expensive. The good news is that the CPU cost of uncompressing the columns is incurred by the index read only: so it is usually only a small slice of the whole query. Still it's a cost we should avoid paying if we aren't actually getting a compensating saving on space. Also compression does not result in more index blocks being cached. More blocks will be read in a single sweep, but the unused blocks will be quickly discarded.

I thought this presentation was a classic example of the Formica Table approach. A focused - dare I say compressed? - look at a feature which probably most of us have contemplated using at some time without really understanding the implications. It was the kind of presentation which might just as easily have been a white paper (I will certainly be downloading the presentation to get the two matrices Philip included) but there is already so much to read on the net that a paper would have just got lost.

11g for DBAs


This was the first of a tie-less Tom Kyte's two selections from the 11g chocolate box. I think the 11g features have been sufficiently rehearsed over the last few months that I have decided to skip the details. So here is just a list of the new features Tom thinks DBAs most need to pay the attention to.
  • Encrypted tablespaces
  • Active Dataguard
  • Real Application Testing
  • Enhancements to Data Pump (EXP and IMP are now deprecated)
  • Virtual columns
  • Enhancements to partitioning
  • Finer grained dependency tracking
  • the xml version of the alert log
  • invisible indexes
Of that list encrypted tablespaces, Active Dataguard, Real Application Testing and partitioning are (or require) chargeable extras. In the earlier round table Ronan kept reminding us that we must distinguish between licensing and pricing: we have to accept that Oracle has 47% of the database market so lots of CTOs and CFOs must think it offers value for money. Which is a fair point, but it is hard to see a compelling reason why a Standard Edition DBA would choose to upgrade. Actually the enhancements for developers are very attractive, but alas we don't carry as much sway.

One notable thing in Tom's presentation occurred when he was demonstrating the new INTERVAL operation for partitioning. The new partitions had a year of 2020, but the dates were supposed to be from this year. It turns out Tom had been tinkering with his demo code and had removed an explicit date conversation without checking the default date format. It's nice to know even the demi-gods fall prone to such things ;)

Monday, December 03, 2007

UKOUG2007: Make It Great

Most great cities have a quarter. Paris has its Latin quarter. Prague has the Jewish Quarter. Lankhmar has a Thieves Quarter. Birmingham has two quarters, the sparkling Jewellery Quarter and the slightly less sparkling Conference Quarter. No, really. It's a area dedicated to conferences, which means it has lots of hotel and lots of bars. No I don't know what bars have to do with conferences either ;)

Outside of the Conference Quarter Birmingham is gearing up for Christmas in a big way. The German market is doing a thriving trade in Gluhwein and Stollen. The central shopping area is thronged with people. Every structure is festooneed with lights and tinsel. And the weather is sufficiently chilly to make mulled wine and hot mince-pies seem like very good ideas.

Last night we had the UKOUG volunteers' meeting. Apparently this year is the biggest UKOUG conference yet: 2900 delegates registered, 600 speakers and 450 presentations (up from 350 last year). The conference is scaling out from the ICC and running some sessions in the Birmingham Rep theatre next door. But it's still relatively compact compared to OOW2K7 - I have already met several colleagues and ex-colleagues without trying, because there are fewer people - and obviously there is a greater preponderance of people from the UK than there was in San Francisco.

I have already attended the keynotes from Ian Smith and Tom Kyte. Ian was keen to stress the point that Oracle UK are responding to customer feedback, and in particular the responses to the UKOUG customer survey. He cited as evidence their initiatives for the JD Edwards and PeopleSoft communities, who felt bewildered by the sheer size of the Oracle range. Oracle is now "the world's leading enterprise software vendor", with the database just being one of its offerings (although it has 47% of the database market, more that #2 and #3 combined). Tom made a similar point. He skated through a list of twenty new or enhanced features out of the 400 in the 11g database release in thirty minutes. He said that when he joined Oracle in 1992 he could have covered the features of their entire product range in the same time. That's the scale of innovation in Oracle.

So the UKOUG conference is going to have to keep growing just to be able to keep up.

Friday, November 30, 2007

UKOUG 2007: My schedule

Although it's nice to go to both OpenWorld and the UKOUG conference it is difficult when they're both so close together. I haven't finished digesting the stuff from OOW2K7 yet. Also being part of the UKOUG committee means I have a few light pre-conference chores. Furthermore, I'm presenting, so there's all that to prepare. Plus the small matter of the day job, which doesn't really respond well to two separate absences so close together; that's why I'm not doing the full UKOUG this year (again). Anyway, enough whinging.

My standard take on the two conferences is that OpenWorld is more fun but you learn more at the UKOUG. This is because OpenWorld is usually dominated by Oracle's marketing and placed presentations (there is no open Call For Papers). The UKOUG is independent of Oracle and casts its net wider. Consequently you generally get a better range of speakers and topics, and a more honest appraisal of Oracle's products. However, OpenWorld07 was a valuable learning experience for me and - compared to previous years - quite low key in the hype department. So the UKOUG Conference has a tougher challenge this year.

One thing I do know is Birmingham in December will not be T-Shirt weather.




For those of us on the committee the conference starts at 16:15 on Sunday with the Volunteers' meeting. Followed by a few sherbets at a local watering-hole.

Monday, 3rd December 2007


12:10-13:10 - "Avoiding Avoidable Disasters and Surviving Survivable Ones" : Hall Exec 8

I felt like easing myself into the conference, so I chose my first session for its potential entertainment value (which isn't to say it won't be useful too). The speaker is the Martin Widlake and it's got another one of his arresting titles. I'm chairing this one.

13:30-14:15 - "TimesTen: Anatomy of an In-Memory Database" : Hall 11a

Having attended Susan Cheung's session at OOW2K7 I now know something about TimesTen, and its capabilities. So I know right now it's not appropriate for my current project, but I want to find out more because I think it has some interesting potential for future projects.

14:10-15:10 - "Oracle right to reply on Oracle Licensing" : Hall 1

This is a roundtable facilitated by Mr UKOUG himself, Ronan Miles. I have only just noticed that this is Oracle's response, I guess to the earlier session by from Rocela. I thought it was going to be a chance for us, the customers, to have a therapeutic bitch about Oracle's licensing policies. Apparently not. Given that it is a round table the agenda can be seized by the attendees, so ....

15:20-16:05 - "An Industrial Engineer's Approach to Oracle Management and Performance" : Hall 11b

Like most conferences these days the UKOUG is dominated by features and functionality rather than process. This session from Cisco's Robyn Sands is one of the exceptions. I'm chairing this one.


17:35-18:35 - "11g new features for DBAs" : Hall 1

I didn't get to see Tom Kyte strutting his technical stuff at OOW2K7, because I knew I was going to catch him here.

Monday rounds off with the Bloggers' drinks. Once again the redoubtable Mark Rittman has organised this and arranged for a cash injection from the UKOUG team. Nice one, Mark.

Tuesday, 4th December 2007


09:00-10:00 - "Oracle SQL Developer Latest Features" : Hall 5

I've downloaded the recent SQL Developer patch but haven't really used it much. Sue Harper should provide some inspiration. I'm chairing this one.

10:20-11:05 - "Harvesting the Advantages of a Database Centric Development Approach" : Hall 8a

I haven't heard Toon Koppelaars talk before but I have heard of him. The topic is a key area for me. I'm chairing this one.

11:15-12:15 - "11g new features for DevelopersSs" : Hall 1

A mad dash over to the main hall to see Tom Kyte give expression to the other side of his personality. I'm chairing this one.

13:30-14:15 - "The Duplicity of Duplicate Rows" : Hall 9

For the third year running Dr Hugh Darwen will be giving us a bracing dose of database theory. I'm chairing this one (which is the end of my chairing duties).

14:25-15:25 - "Understanding Statspack" : Hall 1

It's always good to hear Jonathan Lewis talk about anything.

17:30 - 20:00 - "COMMUNITY FOCUS PUBS"

I'll be reprazentin' the Development Engineering SIG at wherever we get allocated. Probably lumped in with the MAD and App Server SIGs. These are birds-of-a-feather things where you can meet people who have the same Oracle interests as you, so do come along.

Wednesday, 5th December 2007


10:40-11:25 - "Every Performance Problem Is One Of Two Things" : Hall 5


James Morle with a promising title. If it was followed by "Discuss" it could fit nicely into a Philosophy exam paper.

12:30-13:15 - "Modelling on the cheap" :

As Mike Yarwood used to, "And this is me." At the time of writing I am still working on the words but I have met all the other deadlines (just!) so I should be alright. However I am open to taking this one off-piste, so if you have some opinions or suggestions about alternatives to expensive CASE tools please bring them along.




I am leaving UKOUG on the Wednesday afternoon. I might attend another session or so, it depends how I feel.

Tuesday, November 27, 2007

UKOUG 2007: Chair registration - for real

The UKOUG conference website is now open for any delegate to volunteer as a session chair. Yes I know I said this once before but this time it's the truth. I have had the green light from Lauren so it must be okay !

Chairing sessions is not too onerous. We have to remind delegates to switch off mobile phones and fill in the critique forms. We also have to introduce the speakers. However most of them already have prepared their own introductions, so "without further ado" is a handy phrase. The key thing is to ensure the session finishes on time; this means giving the presenter discreet time signals, although most of them should be able to keep their sessions on track without prompting.

The value of volunteering is that you get a free pass to the conference when you chair six or more sessions. I know it is only a few days away, but if your boss is wavering this might just be the extra leverage you need. Sign up now!

Update


At the time of posting the Conference site still displays a message saying you cannot register to chair sessions if you haven't had an invite from Lauren Edwards. Just ignore this and go ahead. I have e-mailed the UKOUG office and I hope the site will be amended soon.

Update again


The website has now be amended.

Monday, November 19, 2007

OOW2K7: Not so San Fran Psycho

Last year OpenWorld seemed crowded, manic and just generally too much. By contrast OpenWorld07 was pretty chilled. There was only one session where I had to wait in a really long queue. There was the one occasion when I was in a long line of people tramping into Moscone South as another long line of people going in the opposite direction to Moscone West. And only once was I in a queue for the restrooms - and that was during OTN Night, when the amount of beer on offer had generated, um, extra throughput. Certainly this morning, as I found myself pressed up against some bloke's wet raincoat in a crammed tube train, I really missed the light and space in San Francisco.

I think this calmness wasn't because there were fewer people - there were more - but because the OOW Team learned lots of lessons from last year. They couldn't really scale out - they are at the limits of what is possible in San Francisco - but they organised things to spread the load as evenly as possible and to avoid the need for too many people moving from building to building. You can figure out your own RAC/PQ metaphor :)

The other reason why this year was calmer was due to the lack of hype. I think many of us were expecting to be continually hit over the head with 11g. But really it was quite low key; lots of sessions on New Features but no real publicity blitz. this is partly to do with the early release of the software taking the edge off things but I also think the licensing issue has something to do with it. Many of the coolest features are chargeable extras to the Enterprise Edition. If you have already got customers who have to rip chips out of their servers to be able to afford to run Oracle it's hard to get a sympathetic audience for news about stuff that's going to cost a whole lot more.

The thing that disappointed me most this year was missing out on presenting in the Unconference. The Unconference sessions were scheduled on the hour. The nature of Unconference is to be different from the conference. But attending one Unconference session meant skipping two regular conference sessions. Wednesday was the only afternoon I had a free two-hour slot but I didn't nab the last remaining 3:00pm slot when I had the chance, so I really have only myself to blame.

The thing I liked best was the series of presentations from the Real World Performance group. I know before the conference I downplayed the significance of the sessions. So sue me. Meeting some old friends from cyberspace and putting faces to new ones was very pleasant too. And at least I didn't suffer too much from jet-lag.

The next OpenWorld is in September 2008. That's only ten months away.... I'm keeping my fingers crossed I get to go again.

OOW2K7: The Real World Performance Group

The Real World Performance Group is not Peter Gabriel jamming in a muddy field with a bunch of Senegalese drummers. It is a small unit on Oracle's development side, dedicated to understanding database server performance and investigating customers' problems. I included Andrew Holdworth's session on Database performance trends in my schedule having never heard of the group. After that presentation I went to the Group's Round Table session and Andrew's other session the following day, neither of which I had scheduled. He was that good.

The whole series of sessions switched on a number of light bulbs, joining up some of the dots from earlier presentations I had attended. The resulting illumination made me realise I had spent the a large chunk of the last six months barking up the wrong tree. Basically, the sort of session which justifies the whole idea of going to conferences. That's why I've forgone my usual pithy reports in favour of a full-blown dump of my notes from the three sessions. Where the same topic came up more than once I have aggegated all the material in the section which seems most appropriate.

Database performance trends


Andrew Holdsworth opened his session with the observation that most sub-optimal applications are running well enough, because of improvements in CPU speeds and the availability of cheap RAM, which means we can have bigger DB caches. However, in larger databases disk I/O becomes more significant: an SQL statement which requires disk reads for one percent of the data will run one hundred times slower than a query which can be wholly satisfied from memory. Interconnects to remote RAC clusters perform much better than disk I/O.

Most database applications out there are very small. Frequently there are multiple databases on a single server (the most he has seen was forty-nine databases on one host). This is not a problem because the applications are generally used quite lightly, with barely one SQL statement running on the box at any given time. The main challenge is to prevent a single rogue statement stealing all the resources from the other applications. However, there are also a relative handful of really big systems which are rigorously designed and with a single database deployed per host. These applications are owned by significant Oracle customers and have high visibility within the company. Consequently such databases drive the direction of Oracle's development program. These are the sort of databases which demand tuning, because their performance issues cannot be resolved simply by faster CPUs.

The basic practices for good performances are:
  1. Spend time on data modelling. It is easier to tune against good schemas; they are simpler and less error-prone.
  2. Pay attention to cursor and session management, Use the middle tier to protect the database.
  3. Do proper capacity planning. If possible, use intelligent extrapolation from existing systems. Either way, test and validate.
  4. Use database features correctly and appropriately. Always start with the default values and change them only with good reason. (This point was expanded in another session.
  5. Design for predictable perform. Strive for SQL plan stability, but be prepared for dealing with increasing data volumes, which may demand new execution plans.
Andrew devoted a lot of time discussing benchmarks, as the group spend a lot of time running them. Of TPC benchmarks he asked, "Who likes TPC benchmarks? Who believes them?" A vast amount of work goes into them: the time spent optimizing a server for a TPC benchmark is an order of magnitude greater than a customer would spend on tuning their database. Price performance figures are suspect. There is no redundancy (because in the context of a benchmark that inflates the cost without offering any performance advantage), so the configurations are unreliable even dangerous.

They also see a lot of client benchmarks. About nine in ten are dysfunctional: ill-conceived, incomplete and unrealistic. They are time-consuming and expensive to run, and stressful for all concerned: if you inflict a poor benchmark on the RWPG team be sure that they will respond by picking on your cluelessness. Common failings are:
  • an invalid mix of transaction types;
  • no "think time" for the emulated users;
  • poor data sets;
  • in particular, the use of random numbers to seed the data sets so the tests are not repeatable;
  • not allowing for the resources used by the application server;
  • data warehouse tests which fire off 2000 concurrent parallel queries on a twenty CPU box;
  • data warehouse tests which don't distinguish between small, medium or large queries.
His advice is to run it in-house before sharing it with Oracle Support.

His final point was about priorities. The four layers of a database system are, in increasing order of expense: server, interconnects, I/O fabric, storage. Often the cheapest element - the server - is chosen first, and insufficient attention is paid to balancing all the hardware. Storage and network technology has not kept up with CPU speeds: by comparison with them server costs are a rounding error.

The round table


Members of the audience wrote questions on index cards which were passed to the panel. The panel filtered questions according to some strict rules of engagement. The topics had to be of relevance to the largest possible chunk of the audience. On-stage debugging was expressly forbidden. There was some overlap with the preceding and subsequent presentations, so here are a few points which weren't covered in depth elsewhere.

How much SGA is too much? There is no upper bound. Just don't exceed the physical RAM. With DSS we want sorts and joins to write as little as possible to the temporary tablespace so set the PGA to a high value. Aim to have 4-8GB of SGA per core.

The 11g resultset cache uses CPU and RAM. This offers a more favourable price performance than disks, which are just getting bigger without getting better.

The AUTO_SAMPLE_SIZE option with DBMS_STATS is an iterative process. So using it is likely to produce a more accurate sample size than us just picking a percentage value, as we tend not to validate our choice.

There is a problem with bind variable peeking, if the first instances of a query happens to use unrepresentative values. We can solve this through seeding the library cache at start-up by running our key queries with representative bind values.

The answer is always in the data.

Making appropriate use of database technology


The team's original idea for this session had been to cover every database feature. Realising that would have required a four day course (at least) in the end Andrew Holdsworth decided to focus on three key areas:
Parallel Query - lots of people pay for the licences but don't use it properly.
The Optimizer - the part of the database customers find most frustrating.
Session and Connection management - a new but increasing problem.

The code for parallel query has improved considerably over the years but customers are not using it because CPUs have got so fast. The trend is to substitute processor brawn for good design. This is not a sensible strategy with DSS databases, because the chance of resource contention is much greater if the queries take too long to run.

Making Parallel Query work well places a premium on capacity planning. There has to be sufficient bandwidth to support the required throughput down the entire hardware stack. If the server has only got two 100MB HBAs PQ is impossible. Don't just focus on the server; CPUs are the cheap bit ... apart from the licences (AH's joke).

A thumb nail guide to capacity planning. To support a throughput 100MB per second per core (based on the de facto standard unit of a server with four quad-core processors):



4 CPUs x 4 cores x 100MB = 1.6GB of I/O
4 CPUs x 4 cores x 100MB = 1.6GB of interconnect
# of disks = 1.6GB/s / 20MB/s per disk = 80 disks

Note: this doesn't include redundancy for high availability (data warehouses are not allowed to be down anymore).

"Death by indexes". Indexes are great for OLTP but not for DSS which generally rely on aggregation which in turn requires large amounts of data. Indexed reads which accesses only 0.1% of the data performs worse than a full table scan. Lots of indexes will lead to low CPU utilisation. A better approach is to use PQ to haul in large amounts of data quickly and use the powerful CPUs to winnow it: 5ms is a lot of computation time. Partitioning the object to take advantage of query pruning will increase the percentage of relevant rows retrieved, which will further reduce the need for indexes. Use hash partitions for fast joining.

Designing for PQ:
  • Take the database's default for the Degree of Parallelism.
  • Use the resource manage to define the user's DoP.
  • Make the number of hash partitions a power of two.
  • Also, make it a multiple of the DoP.
  • Allow for the concomitant impact on loading, data dictionary management, stats gathering.


The Optimizer is the most maligned, most misunderstood and most misused part of the database. This is in no small part due to Oracle's failure to explain and document it properly. Consequently people tune by Google or witchcraft, which usually means setting underscore parameters. This is a bad idea. Setting init.ora parameters has a global impact: fix one query and break three others. We're setting the values blindly - often underscore parameters have magic values. Most bad execution plans are due to bad stats. The quality of the stats is under our control. We know our data. Whereas the execution of the optimizer is under Oracle's control and it is rocket science. Tweaking the settings of underscore parameters is fiddling with the bit we don't understand instead of fixing the bit we do.

Optimizer basics
  • Run with the default parameter values.
  • Don't make global changes.
  • Hints do not guarantee stability over time.
  • Get the statistics gathering right.
  • Accept change will happen.
  • TEST!
  • When upgrading, accept that your database's previous good performance may just have been luck rather than a testament to your tuning expertise ;)


Gathering stats: start with default values. AUTO everything. Remember, the aim is to get good cardinality estimates.

Table stats are easy. Don't sweat them. An increase in 10% of the rows is unlikely to mean your stats really are stale: think order of magnitude changes.

Columns stats are the key to good performance - size and number of columns, histograms, indexes. Use your knowledge of the data model to figure out whether you have uniform or skewed distributions. Columns with uniform distributions don't need histograms; watch out for bind variable peeking with skewed data. Minimum and maximum values are the ones most susceptible to change (especially for columns populated by sequences) so maybe refreshing the high and low values after each data load is sufficient.

The key to query tuning is to check the correctness of the cardinality estimates. Use DBMS_XPLAN.DISPLAY_CURSOR to see the estimated cardinality alongside the actual cardinality. No need for a 10053 trace (which doesn't give us the real cardinality values anyway).

Connections stress servers, especially SMP, causing latch contention and using lots of CPU. There is a tendency for Java and .Net programmers to be very bad at managing sessions (and cursors). This is because their memory model means they tend to take stuff and not give it back. Connection storms occur when a connection pool floods the server. Connection storms are caused by a problem in the database server which prevents it from satisfying the app server's demands for new connections The app server responds by spawning further sessions. This can escalate quickly to tens of thousands of sessions, which will kill the database server.

Best practice for connection management:
  • 5 - 10 connections per core (I/O dependent);
  • minimise logons and logoffs;
  • avoid parsing;
  • set parameter for minimum and maximum connections per server to the same value.

Final thoughts


I was a bit concerned that I found so much of value in these sessions. Perhaps I had been living in a cave for too long? However, I met up with Doug Burns afterwards and he said that he was going to have rewrite his presentations and whitepapers. As he is Mr Parallel Query I found this quite reassuring.

Andrew Holdsworth observed, when talking about the recommendations for parallel query, we can try this stuff for ourselves but they do it for a living.

Monday, November 12, 2007

OOW2K7: What's the story?

The opening salvo in the OpenWorld 2007 campaign was the Sunday Night keynote. When I arrived at Moscone Center at 5:30 the queue for stretched around the block. Literally round the block. I'm sure I wasn't the only person asking whether we were all mad. At least it wasn't raining and at least we all got in. Actually it turned out to be a good thing to be one of the last people into Hall D, because it meant I had to sit through considerably less Billy Joel than the early birds must have had to endure.

Most of the event was devoted to Larry's account of the history of Oracle's thirty years. I'm sure he's told these stories a thousand times already but many of them were new to me. The best story was John Kemp, the first Chief Finance Officer, who used to deliver pizza to the Oracle offices but who was studying Accountancy at Berkley. Also the famous first sale to the CIA was for a product, Oracle version 2.0 (there was no version 1.0) which hadn't been written yet. How times have changed. Unfortunately the speech became less focused and eventually turned into a recitation of people who joined the company over the years.

The rest of the session consisted of some slightly desperate sketches from the cast of Saturday Night Live. There was also a worthy presentation on Oracle's global responsibility programme. There are a number of initiatives in the education arena (mainly encouraging schools and students to use Oracle software). Also, Oracle employees do lots of volunteering. The event was finished off by a pub rock band composed of Oracle employees and customers, fronted by the Senior Vice President for Alliances, playing a song about Oracle rocking for ever. The band was called Eardriver but I'm afraid Hallclearer would have been more appropriate.

Of course I had to leave anyway because of the ACEs' dinner. The Fly Trap is a nice place. I got to drink Pinot Noir from Francis Ford Coppola's vineyard and the food was good. The one problem with these occasions is that the restaurant layout prevents you circulating too much, so you end up talking to a handful of people. Eddie Awad asked my advice about user groups; I'm not sure I completely answered his question but it has stimulated some thoughts which I may blog later. Doug Burns was extremely jet-lagged; you may think that's a euphemism, I couldn't possibly comment. We all got issued with our new Oracle ACE fleeces, which are actually gilets with a large Ace of Spades symbol on the back. I don't know whether the ACE directors' fleeces have the tiara as well. Inevitably Mogens Norgaard wore his for the entire evening. Steven Feuerstein threatened me with a steak knife. These liberal peaceniks are all the same.

So, what is the story?


Is there a big theme? Beats me. One of the Oracle people I spoke to last night said they all don't know what's going on. If there is a big announcement it will be just as much of a surprise to the employees as to the rest of us. One of the ACE Directors who had spent the day in the Directors' briefing sessions said they had been told that there would be no mention of features currently under development. Apparently all that stuff is being saved up for next year's OpenWorld when Oracle are going to make a big deal out of 11gR2.

In the afternoon I was wondering through the Yerba Buena Gardens. A young chap on a bench clocked my OpenWorld pass. Jerking his head at the big tent which is blocking off Howard Street he asked me, "Do you know what the party's about?" "Oracle," I said. "Database software." He turned to his friends and told them, "Computer shit."

Friday, November 09, 2007

My OOW2K7 schedule

The OpenWorld conference starts slowly this year. There is no Oracle Xtreme event to warm up the proceedings . Sunday does feature user group sessions, but I'm not a member of any of the groups so I'm not particularly interested. I think I shall most of Sunday acclimatising, perhaps with a trip to the SF Museum of Modern Art. They've got a major exhibition of Joseph Cornell's work on at the moment. I've only ever seen pictures of his work so I'm ridiculously excited about the prospect of seeing over 200 of his boxes. Also I need to do some shopping: does anybody know a place in SF where I can buy a Beckham LA Galaxy shirt for a six year old boy?

Here is my schedule. It starts strongly. The opening three sessions are from speakers whom I've heard and enjoyed before. The schedule peters out towards the end of the week but then on past experience so do I; it's better not to have too firm a plan.


Sunday, 11 November 2007



5:45 PM - "Keynote: Sunday Night Live" : Moscone North - Hall D

I think I will try to make the opening keynote, as it might be the best chance to share oxygen with Larry. In previous years this event has tended to clash with the ACEs' dinner but this year the OTN team have rescheduled it.

7:30 PM - "ACEs' Dinner" : The Fly Trap Restaurant, 606 Folsom Street @ 2nd

Monday, 12 November 2007


11:00 AM - "'Thick Database' Techniques for Oracle Fusion Developers" : Hilton - Yosemite Room B

Dr Paul Dorsey combines a very deep understanding of database design and development with some strong opinions and a nice line in wit. A promising mixture.

12:30 PM - "Break Your Addiction to SQL!" : Hilton - Grand Ballroom A

Steven Feuerstein (Whom God Preserve) is another great presenter.

1.45 PM - "Oracle Database 11g PL/SQL" : Hilton - Grand Ballroom A

Last year I missed Bryn Llewellyn's talk on enhancements to PL/SQL in 11g. I'm not going to make the same mistake again.

3:15 PM - "Back-of-the-Envelope Database Storage Design" : Moscone South - 310

I don't know nearly enough about storage and the back of an envelope is my avourite design tool so this is an irresistible title.

4:45 PM - "Oracle Database 11g: Next-Generation Performance and Scalability" : Moscone South - 104

My current project (a data warehouse) is still on 9i (I know, I know, it's not my choice). Scalability is an issue, so I want to know if it's worth skipping 10g and going straight to 11. Insert your own Spinal Tap joke here.

7:30 PM - OTN Night : The Westin St. Francis, 335 Powell Street

Loud music, beer, Linux: something for everybody!

Tuesday, 13 November 2007


9:15 AM - Keynote Tom Kyte : Grand Ballroom B - Hilton

"Everyone’s favorite Q&A chief and Oracle expert" will be talking on How Do You Know What You Know.

10:45 AM - "Oracle Database 11g Business Intelligence and Data Warehousing" : Moscone South - 102

Gotta find out more about 11g.

12:000 PM - "Oracle Magazine lunch" : Lulu, 816 Folsom St

I hope to tear myself away in time to make the next session, but it rather depends how good the wine is.

1:45 PM - "Binary XML and XML Index: Scalable, Performant XML Processing for Schemaless XML" : Hilton - Continental Parlor 7 & 8

XML in databases is Teh Suck. On the other hand the pesky X-stuff isn't going away any time soon, so it will be useful to discover any better methods of handling it.

3:15 PM - "The Future Challenges of OLTP and Data Warehouse DBMSs" : Moscone South - 104

A theme is emerging.

4:45 PM - "Best Practices for Oracle Database Auditing" : Moscone West - 3005 - L3

With a bit of luck this presentation will provide a definitive answer for this chestnut of the OTN forums.

7:30 PM - The Oracle Bloggers' meeting : the Thirsty Bear Brewing Co, 661 Howard St

Once more the redoubtable Mark Rittman has organised this meeting. Nice one, Mark.

Wednesday, 14 November 2007


I'm intending to have a go at running an Unconference session today. So I have left lots of space in case a sore head prevents me being first to the whiteboard.

8:30 AM - Keynote, Jonathan Schwartz, Sun Microsystems Inc. : Moscone North - Hall D

I just hope I can get through this without mentioning My Little Pony. Oops.

9:45 AM - "Current Trends in Database Performance" : Moscone South - 102

Um...Bigger, better, faster, by any chance???

12:45 AM - Keynotes, Michael Dell and Larry Ellison. : Moscone North - Hall D

Is it a good strategy to sit through Michael Dell's keynote in order to get a seat in the auditorium for Larry? Or does a wise man just decide to find a TV screen to watch and skip the need to carry an empty bottle?

4:30 PM - "Data Caching Application Deployment Use Cases for Oracle TimesTen In-Memory Database" : Moscone South - 309

People keep suggesting TimesTen as a possible solution to various problems but I really know almost nothing about it. So this is an opportunity to rectify this lamentable situation.

Thursday, 15 November 2007


11:30 AM - "Oracle Database 11g: Can I Do That? Introducing 11g SQL and PL/SQL Enhancements" : Marriott - Salon 9

A last chance to find out more about 11g.

I'm staying in the King George Hotel. I know a few of the other ACEs and sundry bloggers are there too.

And here are my Connect details again. I'm not intending to take a laptop. As I'm not presenting I don't need one and I don't need the hassle of travelling with one. But I shall take advantage of the internet villages to keep in touch.
Join Me at Oracle OpenWorld Connect!

Wednesday, November 07, 2007

Here comes OOW2K7

Gosh, it's almost time for Open World 2007. Work has been somewhat random and stress-y over the last couple of weeks so I've not really been focused on the upcoming conference. This will be my fourth tour of OOW duty in five years. I have yet to get a handle on this one at all.

Last year the theme of the conference was just sheer size. Oracle had ramped up the scale of the conference to cope with all the acquisitions. The number of attendees went from 29,000 to 41,000. This year's projected attendance of 45,000 is a smaller increase (although it will still be mad).

In 2005 the theme was Fusion. There's recently been some upheaval in the Fusion programme, with slippage in both the scope and the delivery schedule, so it'll be interesting to see what the message will be. They'll have to say something. Let's hope senior executives are hot-pluggable too.

In 2003 the hype was all about 10g: The Grid Has Landed. Even though the actual software was still several months from delivery. Obviously there will be a lot of noise around 11g at this conference. The difference is the database has been available, at least in Linux flavours, for several months now. A large chunk of the audience will be in a position to rebut any wild assertions. So whilst there will undoubtedly be a lot of noise about the new software there will have to be less hyperbole. At least I hope so.

Jason Jones published some useful tips for OOW newbies. I think the key thing is to make the best use of the opportunities for personal contact. A lot of the conference resources will be available as downloads, podcasts, blog articles and whitepapers. So don't get hung up on attending presentations (although make sure you do go to some, just in case your boss asks). Instead, take advantage of the main thing which online can't offer: talking face to face with actual people. I think the evening events tend to be rather too crowded and noisy for networking. So look to some of the extra-mural daytime sessions, particularly the OTN Unconference and the No-Slide Zone which should provide useful arenas to engage with like-minded delegates.

Friday, October 19, 2007

Oracle Open World Unconference sessions

Prompted by Laurent Schneider's posting I have also proposed a session on PL/SQL design. Some of the other proposals seem to be presentations by another name, which to my mind is not in the unconference spirit. It's supposed to be an alternative to regular presentations rather than safety-net for people who who didn't make it through the Call For Papers.

My proposal is definitely for a group discussion on PL/SQL design: approach, tools, methods, best practice. I've described myself as a facilitator rather than a presenter. I might try to make it an actual fishbowl session, if the room will permit such a layout.

The thing which puzzles me is how this Wiki stuff is going to link up with the whiteboard on the 3rd floor of Moscone West. Are our proposals actually booking sessions in the Unconference or are we just flaoting ideas? If all the slots get booked up on the wiki, will there be any scope for spontaneity at the Unconference itself?

Monday, September 24, 2007

OOW2K7 Scheduler Builder open

Those of us fortunate enough to be going to Open World this year can now start planning our days with the conference Schedule Builder. I've begun the process but be warned: it requires a lot of time and mental stamina. In a world which has gone Web2.0 mad, the Open World Schedule Builder is proudly, defiantly Web1.0.

Yes, it's the user-unfriendly single long HTML table which makes it impossible to see which sessions you've booked and which sessions clash. It's the agonising network round trip every time you book a session. And it's the long scroll back from the top of the page after every booking. Oh, and Firefox users will need to use the IE Tab add-on to see the popup boxes but you probably guessed that already. In short, a trying experience, and one which shows the UKOUG agenda builder in a very good light (to be fair the UKOUG sites require the IE Tab too).

Whilst choosing sessions I noticed that just about all the developer sessions are in the Oracle Develop stream. At first I thought this was just Oracle's policy of making all the best stuff a chargeable extra. But it's actually more complicated than that. Looking at the web site it seems that Oracle Develop is not a licenceable pack. Rather it's an semi-autonomous event running alongside Open World, with some overlap (access to the OTN social events, the exhibition hall and the keynotes). So I guess Oracle have decided that not only is there a difference between developers and DBAs, the difference is so vast the two groups require separate conferences.

Wednesday, September 12, 2007

UKOUG 2007: Chair registration

Yesterday I wrote a blog article saying that the registration to chair conference sessions was open. Unfortunately I was premature on this and have deleted the original article. The UKOUG asks its volunteers who assist throughout the year with SIGs and the conference agenda to select sessions first. Once they have made their selections, the UKOUG may be able to open up the opportunity to members outside of the UKOUG's regular volunteer community.

So I really shouldn't have said it was open to all. I wish to apologise to the UKOUG staff for jumping the gun, and also to anybody who experiences inconvenience or frustration because they acted on my advice.

Now, where did I put my sackcloth and ashes?

Monday, August 20, 2007

Open World 2007

In the Comments section of Tim Hall's recent musing on the new two-tier ACE programme, Doug Burns said:

"Once you put together lost wages or fees, accommodation and flights, it doesn’t take long before this becomes a serious financial commitment. I wonder sometimes whether people who attend presentations whilst being on company wages and expenses really appreciate that."

What contractors sometimes fail to appreciate is that it isn't necessarily easier for permies, just different. We still have to ask the company to pick up the tab for our expenses (not to mention lost billing for us consultants), and the company reserves the right to say, "No, you cannot go". For some reason Open World is a harder sale than UKOUG. Perhaps our bosses think going to San Francisco might be more of a jolly than going to Birmingham....

Fortunately I have have some supportive managers at LogicaCMG and my business case has finally been approved. So I'll have to dig out that company polo shirt again.

Join Me at Oracle OpenWorld Connect!

Tuesday, July 17, 2007

MiniSPA 2007: Better than working

I took yesterday off to attend the 2007 MiniSPA conference. This was a greatest hits compilation of sessions from this year's SPA conference. I almost typed "presentation" but relatively few sessions actually consist of a speaker at the front of the room reading PowerPoint slides to a passive audience. The SPA principles value interactivity and participation. Instead there is a variety of sessions types, most of which involve the audience in some way; tutorials, case studies, workshops, panel discussions, simulations and goldfish bowls. So agenda decisions have another dimension ("how much thinking do I feel like doing?").

The opening session was a think tank. We were divided into teams and each team had to complete the following sentence in no more than ten words:
"Hey, I hear your business depends on delivering software. Well the most important thing about software development is ..."

Each team had to agree on its own phrase; then everybody voted on the phrase they liked the best. The secret of these things is to come up with something snappy and comprehensible. One team came up with a suggestion which had three clauses and used bullet points. That is a dead loss. You can't buttonhole somebody in the corridor and then ask them to wait whilst you boot your laptop and fire up PowerPoint. Here are a few of the final sentences.

  • If it's any good, software lasts a long time.
  • It encodes people's knowledge of the business to provide value.
  • Get the best project manager you can.
  • It's about people not computers.

That last slogan was the one for which most people voted, thus proving that people repsond to the clarity and focus which abstraction provides.

Designing Collaborative Workspaces


Mike Hunt (Mandu Ltd) led this workshop. Working in teams we had to build models of workspaces out of art card, Lego, Plasticine, Playmobil and various other craft materials. In the first round we had to build a bad working environment, then in the second round we had to build a good workspace. Although each team had a different scenario, the various models had certain common traits. The bad environments all tended to be cramped with people working in fenced-off isolation and with inadequate space for intra-team communication. Fans and other symptoms of poor air-condition featured a lot. The good workspaces were all spacious, with different rooms for different work modes. Bespoke desks and lots of whiteboards were common, and fresh fruit and/or baked goods were provided.

The striking thing was how much closer to real life the cartoon bad environments were. Most of the laughs came from recognition. The good environments on the other hand were largely wish fulfillment, and not just the ready availability of pastries. Floor space is expensive, particularly in London, and I doubt whether most companies would be prepared to devote so much square footage to pamper the developers. It is also unlikely that minions would be given so control over their own working environments. I was also amused to see that I had collaborated in designing an office which was basically open plan. I currently work in an open plan office (albeit cramped), and it can be very hard to concentrate. Sometimes a walled off cubicle seems a very attractive notion,

One interesting aspect of the process was how each team used the materials provided. In the first round we all tended to use the stuff closest to hand. The team with the Plasticine on its table had lots of blobs. Another team had been very creative with card. My team had the Lego so our office was largely built out of plastic bricks. However in the second round we had seen how the other teams had used different materials, so the good workspaces were a lot more heterogeneous in their construction. One team devoted lots of time to writing down the characteristics of their environments. Not surprisingly their models were the least-well realised. An object lesson in the perils of Big Design Up Front.

This session vindicated my decision to take a day's leave to attend the conference. "Logo, Plasticine and Playmobil? And you're trying to say you're working? Get outta here!"

Key lesson: developers want to be free range

Serious JavaScript


This tutorial was an attempt by David Harvey (Sibelius Software) and Peter Marks (indie) to persuade us that JavaScript is a proper richly-featured programming language, and not just a mechanism for undermining the robustness and security of web sites. I'm not sure they entirely succeeded. It didn't take long to discover some quirks in the language. For instance how JavaScript doesn't seem to be consistent in how it evaluates empty or undefined things.

JavaScript is an embedded language. It has no I/O routines of its own and a very small core library. It inherits most of its capabilities from the environment it runs in, which is part of the reason it has such a poor press. We normally come across it in browsers, which are Teh Suck as programming platforms.

JavaScript rarely raises exceptions. For instance strings are immutable, but we can assign to a string without an exception being raised (the assignment is just ignored). Another example: dividing 1 by zero returns infinity, a magic value like undefined or NaN. I suspect this tolerance of wrong code explains why so many JS enabled web-pages seem to hurl.

Key lesson: JavaScript - it's not just for irritating pop ups.

The Scoping Game


The last session I attended was a simulation run by Mark Delgarno (Acumen Software). Again we were in teams. The point of the game was to develop a range of mobile telephones. Marketing had provided us with a list of models, with mandatory and optional features and development costs. Each team started with the same pot of money. The challenge was to decide which features we would develop for a specific product, which we develop as reusable components and which we wouldn't bother with at all. The game was played over two rounds, with our revenue from the first round's models funding working on the second round's new models. Part of the fun was that we only knew the specs for the first three models. So we could hazard guesses about which features would be useful in the second round but we couldn't be sure.

Our team (Yodafone) spent a lot of time discussing the merits of developing Java as a reusable component in the first round, because the marketing brief hinted that it would be on increasing importance in the second round models. However, of the first round models, only one could use Java, which meant a return of a $2m on an outlay of $10m. So we decided instead to develop a reusable SMS component and a product-specific monochrome display for the starter model. We were the only team to bother with the entry-level model (I blame Idiot Toys). But our strategy paid off because Yodafone won the first round which meant we had more money than the others to spend in the second round.

When we got to see the next three models we had to develop a Java component, because it was mandatory for one of the models. However it was also a lucrative optional feature for the other two. So developing it as a reusable component in the second round still generated a profit. Building it earlier would have cost too much money without generating compensating revenue, whereas the reusable SMS component paid for itself in the first round and made lots of money in the second round too. The upshot was Yodafone actually increased its lead at the end of the game. Win or not win, there is no try.

Obviously this simulation is not very realistic. In real life it is often difficult to assign costs and predict returns in such a clear cut fashion. But it was a pointed lesson in making the best of constrained resources. I think something like this game would be helpful as a warming-up exercise to play with users at the start of a requirements workshop.

Key lesson: YAGNI rules in even the unlikeliest of places

Lessons for the UKOUG


Overall I found this to be a very invigorating day. I'll be honest and say that not much of it will be immediately relevant to me in my day job, but the MiniSPA experience gives me some lessons for me as chair of the UKOUG Dvelopment Engineering SIG.

With the UKOUG the rooms always have serried ranks of chairs facing a screen. By contrast the SPA rooms are setup on the presumption of interactivity, with six chairs arranged around smallish tables. In the UKOUG we ask every presenter for their PowerPoint before the day, so we can print them out and put them in the delegates' packs. The feedback form even includes a question about the quality of the presenter's slides. At the SPA only one of the three sessions I attended featured any PowerPoint at all, and that was just to set the scene. The session chairs often weren't presenting at all; rather they were acting as facilitators.

The other thing was that the sessions were about a variety of things. In the UKOUG we tend to have presentations about Oracle's product sets. So it's usually a cookbook format: how to tune a query, how to code a drop down list in JSF, how to call a web service. It's all good, useful stuff which people need to know but it does rather tend to induce a passive receptivity in the audience. By contrast, these SPA sessions tended to deal with practices, and in particular practice improvement. The games and exercises weren't a gimmick: active engagement with the topics stimulated creative thinking, which is the start of the improvement process.

So the challenge for me is to inject some of this excitement into the UKOUG or at least the DE SIG.

The Unanswered Question


In his introduction to the day, the SPA chair David Harvey said that developing software was the third most fun thing we could do with other people. I never did manage to ask him what the second thing was....

Thursday, June 28, 2007

UKOUG 2007: Abstracts redux

Well, I have finished judging all the abstracts in my stack (214 of the blighters!). How are you all doing? According to the latest e-mail from the UKOUG back office there's still a big chunk of abstracts which nobody has evaluated. I would guess these are mainly in the Apps domain, but I could be wrong. As I mentioned previously it is important for as many people as possible to vote on the abstracts, so if you are in the eligible camp and still haven't checked in, please find the time over the next few days (judging closes Monday 2nd July, 10.00am BST).

This week I have been looking at the database server papers. The usual suspects - tuning, RAC, RMAN - are present in the usual numbers. But there are some new hot topics (several people submitting papers in the same vein) for the database too. They are:
  • Virtualisation
  • Data and Audit Vault
  • Linux administration
  • 11g New Features

Hmmm, there must be a good reason why we haven't had papers on that last one before now....

Evaluating the abstracts is an interesting exercise. We get to see the range of topics which people feel strongly about (because nobody bothers to volunteer to spend the time and effort to talk about something which bores them). And those of us who have also submitted papers get to size up the opposition.

Tuesday, June 19, 2007

UKOUG 2007: Judging the abstracts

The Call For Papers for the 2007 UKOUG Annual Conference has closed and the next phase has begun: judging the submissions. Unlike certain other conferences I could mention the judging process for the UKOUG is quite open. If you are on the UKOUG committee or if you submitted a paper you are entitled to act as a judge (you won't be allowed to mark your own abstracts). If you fall into either category and you haven't already registered you can do so on the conference website. Please do so: the more people who evaluate the submissions, the more useful the marks will be when it comes to making the final selection.

The marking categories have been expanded. Last year there were only four gradations and the majority of presentations were marked as 1. Which makes it hard to distinguish the very good from the run-of-the-mill. This year there are six grades, ranging from Must have to Don't bother, with some helpful variations in the middle range. So, with a bit of luck we'll get better differentiation of marks.

I have just been doing my bit. There are some very interesting submissions (and a few dogs). In the development stream the hot topics (the ones with the most submissions by different people) are:
  • Application Express
  • Incorporating AJAX into ADF applications
  • Migrating client/server Forms apps to the web

Once again, not that much on PL/SQL or Java outside of building UIs. On the other hand this year had several submissions on process (as opposed to "cookbook" presentations) which is a hopeful sign.

I have tried to reflect the feedback from the DE SIGs, to select papers which I know address common concerns of the delegates, even though they might bore me. But after a while the abstracts for certain topics (such as AJAX and ADF) all start to read the same. And of course, my take on what constitutes a Must have presentation is idiosyncratic. That's why we need more judges.