(ed. Yes, I suck. I’ll start doing this more. I promise)
One of the things I’ve been thinking about recently is load testing. It seems like the great white whale of Oracle testing, to validate the effects of load on a running system. I think the reason it proves elusive is:
1) It seems so easy. C’mon. You think, there has to be an easy way of doing this…
2) Simple hardware changes between systems make big differences. Getting a ‘perf’ installation to look JUST like production is expense and difficult to justify. No one cares about performance until it sucks.
3) Just what data am I load testing? Things like Swingbench aren’t very specific about what data they are using. And the devil is in the details here – if you aren’t testing transaction for transaction, like for like, you’re screwed.
4) Pseudo testing. ‘We don’t need to do real testing or transactional replay – we can simulate the load. We won’t be pushing transactions through the system.’ Doesn’t work, no matter who says it.
In the 9i days, I was a huge fan of using logminer to get the transactions then replaying it on a sister system. It gave completely accurate results – but it was still costly in terms of time and resources (human and otherwise).
In 11g, Database Replay (discussed here) does the job nicely. I still worry that this kind of functionality strains the redo management a little too much, warping the internals a bit. But, in testing, it tends to get within 5% of the actual results, which is impressive.
Its a slick tool, that may be the final word in load testing an Oracle database.