I’ve often found in my travels that I’ve come up with a (potential) solution to a problem and wanted to test it “right now” – only to run onto the horns of a dilemma. A typical client offers me one of two options:
- Option 1: test it on the production system – which is generally frowned on, and sometimes I can’t even get access to the production system anyway.
- Option 2: test it on something that looks nothing like the production system – and hope that that’s in some way a valid test.
The first option – when it’s offered – is quite stressful, especially if the original performance problem had involved updates; the second option – which is the commoner offer – is also quite stressful because it’s quite hard to prove that the fix is doing what it’s supposed and that it will do it at the expected speed when it gets promoted to production. What I’d really like to do is clone the production system and run and tests and demonstrations on the clone. In fact, that’s exactly what does happen in some rare cases – but then it usually takes several hours (or couple of days) rather than the few minutes I’d prefer to wait.
This is why I like Delphix and why I’m prepared to say so whenever I see a need for it on a client site. It’s also why I’ve agreed to do a little on-line webinar about the product on Thursday 18th Sept at 10:00 am Pacific Time (6:00 pm UK time). The event is free, but you need to register to attend.
Disclosure: The company paid me to visit their premises in Menlo Park CA last year so that I could experiment with their product and talk to their technical staff, without requesting any right to edit or limit any review I might subsequently publish about their product. The company has also paid me for my time for Thursday’s webinar but, again, has made no attempt to exercise editorial control over the content.
If you’ve been keeping an eye on my Public Appearances page you’ll know that I am scheduled to go on line with Kyle Hailey for a second (more technical) discussion about Delphix and virtual databases on 19th June (tomorrow). If you haven’t registered, there’s still time to do so. It’s scheduled for 5:00 pm (BST), which makes it 9:00 am in San Francisco.
Update 1: Delphix have got 10 copies of Oracle Core to give away and they’ve decide to give one to every 10th registrant (until stocks run out) for the webinar.
Update 2: Over the last few days Kyle Hailey has been writing a short series comparing the commonest technologies currently available for Virtual Databases (or “Thin cloning”):
Update: Here’s the link to the recording of the webinar
I’ll be online tomorrow morning (Friday 5th, 9:00 Pacific time, 5:00 pm UK) in a webinar with Kyle Hailey to talk about my first impressions of Delphix, so I thought I’d write up a few notes beforehand.
I’ve had my week in Palo Alto with the Delphix people. I really don’t know where the time went to – but I had a lot of interesting conversations with a number of very able people; plenty of time to experiment; and I’ve even been able to install Delphix on my laptop (as a 64-bit Open Solaris 10 VM under VMWare). I liked the product, and I was impressed with the team they’ve got working on it.
We’ve pencilled in an intial online webinar for Friday 5th April which will probably feature an informal chat where Kyle Hailey and I talk about my impressions of the product and what I’ve done with it so far. Then, in about a month’s time, we’ll have a more technical discussion.
In the meantime, it occurred to me that my next blog post ought to be about LOBs as this would be a nice way to introduce you to one of the key ideas behind DxFS (the Delphix-extended file system that’s based on ZFS).
Update 22nd March
The link to register for the online conversation is now up. We’re timetabled for 5th April 9:00 am PDT (which is currently 4:00 pm GMT, but it will be 5:00 pm BST by then.)
If you’re a regular follower or my blog you may recall Kyle Hailey and the joint webinar we did nearly two years ago on “Visual SQL Tuning” covering an approach I’ve written about in the past and a product that he developed at Embarcadero to automate the work that I’d been doing by hand and eye.
Kyle has now moved on to Delphix, and has become involved with another really interesting piece of technology – database virtualization. How do you supply a terabyte sized database to five different development teams without using up 5TB of disc space ? Create an operating environment that keeps one master copy of the database while maintaining a set of (small) private files for each team that hold private copies of the blocks that have been changed by that team – and that’s just one feature of the product.
The product is sufficiently interesting (plus I have a healthy regard for Kyle’s opinions) that I’ve accepted an invitation to go over to California for a few days next month to experiment with it, see what it can do, try to stress it a bit and so on. The people at Delphix are so confident that I’ll be impressed that they’re going to let me do this and then write up a blog telling you how things went.
Have a browse around their documentation and if you’re interested add a suggestion to the comment telling me what you’d like me to test, and how, and I’ll see if I can fit it into my timetable (no promises – but if you come up with interesting ideas I’ll see what I can do).
One of the people attending my seminar in Munich last week has emailed me some details about a nasty little surprise you may get if you’re thinking about TSPITR (tablespace point in time recovery), and happen to have a few materialized views in your database.
You might have wanted to use the “duplicate target database” from rman with the “skip tablespace” option to create a duplicate database, excluding tablespaces that you’re not interested in, if you needed to recover a particular tablespace (or set of tablespaces) to a specific point in time. (Once you’ve done that you can extract the data that you want and then discard the duplicate database). But there’s a requirement for recovery is that the set of tablespaces should be “self-contained”; but what does “self-contained” mean ?
Amongst other things it means that none of the tablespace you skip should contain materialized views. Note carefully, that’s not saying the schema you’re interested in shouldn’t have created any materialized view, or the tablespace you want to duplicate contains a base table for a materialized view in another table; it really does mean – if you’ve got ANY materialized view ANYWHERE in the database, you have to duplicate those tablespaces as part of the process.
Here’s the restriction note from MoS (note the exclamation mark – maybe the Oracle analyst was surprised too):
You MUST NOT exclude
- SYS-owned objects
- or tablespaces with rollback segments,
- nor tablespaces containing “MATERIALIZED VIEWS”!
Implementation suggestion – always put materialized views (and materialized view logs, and indexes on materialized views) in their own tablespace(s), just in case one day you want to do a tablespace point in time recovery and find you’ve got a few bits of materialized views scattered all around your database.
When I first heard this comment I didn’t believe it (but take a look at MoS document ID: 1287276.1 if you’re finding it hard to believe). Naturally my engine of doom went into overdrive immediately after I was convinced and made me wonder what would happen in a 12c container database with several plugged databases; obviously the existence of a materialized view in one plugged database shouldn’t have any impact on TSPITR for another pluggable database – but I wouldn’t mind if someone tested the hypothesis and reported back what they found.
It’s just occurred to me that this type of TSPITR problem simply won’t exist if you’re using Delphix as part of your working environment.
I’m heading off to Heathrow airport later on today to fly out to San Francisco for my week of experimenting with Delphix. I’ve done a little preparation work, of course, including browsing around the Internet to read about related technologies. Some of the material I found was very interesting, so I thought I’d go publish a few of the links that might be useful to other people.