orawin.info

Niall's Oracle Pages – Oracle Opinion since 2004

Archive for November, 2011

Spam Poetry

without comments

Here is a spam comment that I thought deserved publishing in its entirety but without the spam links. I hope you all enjoy the lyricism as much as I did.

Incomparable Blog. I tot up this Blog to my bookmarks.Thanks for alluring the in the nick of time b soon to examine this, I lean to strongly yon it and fondness information more on this topic.

Possibly Related Posts:

  • No Related Posts found

Written by Niall Litchfield

November 17th, 2011 at 11:00 am

Posted in Uncategorized

Tagged with

New Defaults, Old Side Effects

without comments

When 11.2 came out I posted about deferred segment creation at http://orawin.info/blog/2010/04/25/new-features-new-defaults-new-side-effects/ and a couple of odd side effects. Oracle published a Note  1050193.1 that makes the quite extraordinary claim that

Sequences are not guaranteed to generate all consecutive values starting with the ‘START WITH’ value.

It’s absolutely true that sequences don’t guarantee no gaps – but the fact that start with no longer specifies the starting value either is a bit rich in my view.  Anyway Martin Widlake ran into this issue and has blogged about it here today. I posted a quick comment and then was going to re-run his scripts with and without deferred_segment_creation=true on my 11.2 instance. My test script is exactly the same as his (copy and paste is wonderful) but includes an initial SHOW PARAMETER line and the addition of a set serveroutput on line. My results are not the same.

<pre>NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE

Table dropped.

Sequence dropped.

Sequence dropped.

Table created.

Sequence created.

Sequence created.

1 row created.

I have just created male name number 1

PL/SQL procedure successfully completed.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

I created 10 men and last value was 10

PL/SQL procedure successfully completed.

1 row created.

I have just created female name number 1

PL/SQL procedure successfully completed.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

I created 10 women and last value was 10

PL/SQL procedure successfully completed.

S MIN(FORN_ID) MAX(FORN_ID)
- ------------ ------------
M            1           10
F            1           10

SQL>

The difference. This database has been upgraded to 11.2.0.3, however there doesn’t appear to be a reference to a fix for this behaviour in either the 11.2.0.3 bug fix list or that for 11.2.0.2 . I guess the lesson is the same old one, make sure you run your regression tests on all new releases including patch sets and be alert for silent behaviour changes.


Possibly Related Posts:

Written by Niall Litchfield

November 17th, 2011 at 10:52 am

Posted in Uncategorized

Tagged with , ,

UKOUG Agenda

without comments

As in previous years the UKOUG allows you to create a personalized agenda for the upcoming conference. To give you a flavour for some of the excellent presentations and to encourage you to register I’ve reproduced mine below, as with previous years this is a ideal wishlist, I’ll probably “die” halfway through various days and so take a break, or get caught up in the many networking and informal learning opportunities this conference gives.

Sunday

12:15 – 13:15      Tales From The OakTable – Mogens Nørgaard

Mogens is always entertaining and thought provoking, a great way to start the Oak Table Sunday.

13:25 – 14:10      Faster, Leaner, More Efficient databases – Index Organised Tables - Martin Widlake

If  you’ve been following Martin’s excellent IOT blog series (start here if not) you’ll know what I’m expecting.

14:35 – 15:20      Optimizer Statistics – a fresh approach - Connor McDonald

Connor is always worth listening to, for both content and style (not to mention slide count).

15:30 – 16:15       Statistics Gathering and Histograms – DOs and DON’Ts - Wolfgang Breitling

Wolfgang has huge experience specifically in this area and  a great clear style

16:40 – 17:30       Performance & High Availability Panel Session

Well the word beer is mentioned :) , I believe there will also be various giveaways including books that I and other Oakies have contributed to or written.

Monday

10:00 – 10:45       SQL Tuning - Kyle Hailey

I’ve never yet seen Kyle present, but his written material and design flair are both excellent, to this day he remains the only Oakie to be nominated and win for a fashion photography award!

11:05 – 12:05       Partitioning 101 - Connor McDonald

It’s that aussie again.

12:15 – 13:15       Going deeper into Real Application Testing – Learn how to make smoother migrations to 11g - Mariusz Piorkowski

RAT is a product with huge promise, hopefully Mariusz will let us know if the promise is fulfilled.

14:30 – 15:15       Automatic Diagnostic Repository – a look at how and when it can be used - John Hallas

John blogs here  and we share a number of interests, including performance management and Grid Control. Another first for me.

15:25 – 16:10       MySQL: the least an Oracle DBA needs to know - Patrick Hurley

Criminally Patrick doesn’t appear to have a blog so pester him to get one via twitter at @phurley.

16:35 – 17:35       Database I/O Performance: Measuring and Planning - Alex Gorbachev

Alex is the founder of Battle Against Any Guess, oh and CTO at Pythian, always well worth hearing.

17:45 – 18:30       Performance and Stability with Oracle 11g SQL Plan Management - Doug Burns

Yep, another Oakie and another favourite subject for me. Maybe the Cuddly Toys will yet see him present.

18:45 – 19:45       Learning about Life through Business and Software - Cary Millsap

A keynote I’ll actually attend – that’s because Cary speaks well, has clear insights to share and is an all-round nice guy.

Tuesday

09:00 – 18:35       RAC Attack workshop - Jeremy Schneider

Clearly I won’t be here all day, but I do intend to be there for at least some of the time.

10:10 – 10:55       First Things First: Getting the basics right - Niall Litchfield

This is a presentation I gave (and got positive online reviews!) a while back covering the things you really really shouldn’t get wrong.

11:15 – 12:15       Troubleshooting RAC - Julian Dyke

I’ve know Julian for a very long time now, but it’s been nearly 4 years since I last heard him talk about RAC. Time for an update methinks.

12:25 – 13:25       Instrumentation: Why You Should Care - Cary Millsap

Yep, Cary again.

14:40 – 15:25       ASH Outliers: Detecting Unusual Events in Active Session History - John Beresniewicz

JB always speaks well, played a core role in the engineering effort for the EM performance pages and improvements introduced in 10g and the subject is great.

15:35 – 16:20       Oracle on the Amazon Cloud – What should you consider - Stephen Priestnall

Over the next decade (maybe even 5 years) many databases will likely end up somewhere “in the cloud”, this is a must attend for me as a result.

16:40 – 17:40       My Case for Agile Methods - Cary Millsap

I’m not a fan of Agile – Cary is.

17:50 – 18:35       Challenges and Chances of the 11g Query Optimizer - Christian Antognini

Again another presentation on a personal hot spot by the author of the excellent Troubleshooting Oracle Performance

Wednesday

09:00 – 10:00    Redo - Jonathan Lewis

No UKOUG conference is complete without a Jonathan Lewis session, and redo is an often misunderstood area of the database.

10:10 – 10:55       Using Oracle GoldenGate to Minimize Database Upgrade Risk - Marc Fielding

Another excellent writer, who blogs here, whom I have yet to meet or see.

11:20 – 12:20       Oracle Database Smart Flash Cache Overview -Harald van Breederode

The advent of affordable reliable, enterprise ready SSD storage, for example FusionIO cards or SSD Arrays likeViolin,  is probably the biggest game changer for I/O intensive workloads such as database operations  for years. I’ll be interested particularly on whether and how the smart flash cache works compared to, say, locating datafiles directly on reliable low-latency flash storage.

12:30 – 13:30       Oracle RAC One-Node: What, Why, & How - Asif Momen

I’ve followed Asif through the OTN forums for some while now, so I’ll be interested to hear what he has to say on this new Oracle feature.

14:25 – 15:10       Six Easy Pieces: Essentials of Database Tuning for Packaged Applications - Mike Swing

This and the following presentation may not make the cut depending on the state of my mind regarding the final presentation of the day. Here I’m mostly interested in the message.

15:20 – 16:05       Simulating Workloads with RAT and Simora - James Morle

Those of you who can stay till my final session will realize that good workload simulation is a big part of getting performance design right.

16:15 – 17:00       What shape is your data? - Niall Litchfield

That nice Dawn R blog|twitter says she’ll be there. If you come perhaps they’ll be 2 people in the audience.

Possibly Related Posts:

Written by Niall Litchfield

November 15th, 2011 at 2:02 pm

Posted in Uncategorized

Tagged with , ,

Black Boxes and Product Complaints

without comments

Update — My attention has been drawn to this follow up. Had I read the follow up before the blog entry was written I’d have worded it somewhat differently or not published at all. 

There’s a rant against the document oriented database MongoDB doing the rounds. You can find it on PasteBin. You can also find a somewhat official response on YCombinator. I’ll leave you to assess which is the more reasonable and professional. Having read through the original rant and the response it seems to me that the root cause is listed in this early paragraph from the rant, emphasis mine.

Databases must be right, or as-right-as-possible, b/c database mistakes are so much more severe than almost every other variation of mistake. Not only does it have the largest impact on uptime, performance, expense, and value (the inherit value of the data), but data has *inertia*. Migrating TBs of data on-the-fly is a massive undertaking compared to changing drcses or fixing the average logic error in your code. Recovering TBs of data while down, limited by what spindles can do for you, is a helpless feeling. Databases are also complex systems that are effectively black boxes to the end developer. By adopting a database system, you place absolute trust in their ability to do the right thing with your data to keep it consistent and available.

Wikipedia defines Black Box in computing in the following 2 key ways:

  • In computer programming and software engineeringblack box testing is used to check that the output of a program is as expected, given certain inputs.[4] The term “black box” is used because the actual program being executed is not examined.
  • In computing in general, a black box program is one where the user cannot see its inner workings (perhaps because it is a closed source program) or one which has no side effects and the function of which need not be examined, a routine suitable for re-use.
It seems likely that the author of the rant had the second definition in mind. It was certainly this that rang warning bells in my mind. The author up-front seems to be saying both
  • that databases are absolutely critical and important to the success of application development and migration.
  • databases internal workings are not understood by the developers.
If both of these statements are true then all sorts of problems are almost bound to follow. Take complaint 1 and the response from the Mongo guys.

**1. MongoDB issues writes in unsafe ways *by default* in order to win benchmarks** If you don’t issue getLastError(), MongoDB doesn’t wait for any confirmation from the database that the command was processed.

================

The reason for this has absolutely nothing to do with benchmarks, and everything to do with the original API design and what we were trying to do with it. To be fair, the uses of MongoDB have shifted a great deal since then, so perhaps the defaults could change.The philosophy is to give the driver and the user fine grained control over acknowledgement of write completions. Not all writes are created equal, and it makes sense to be able to check on writes in different ways. For example with replica sets, you can do things like “don’t acknowledge this write until its on nodes in at least 2 data centers.”

It goes without saying that this behaviour is documented, the only way you’d run into problems (other than blindly relying on defaults)  would be if you assumed that the database would do what you wanted without checking its actual behaviour.  Similarly the author rants against several more well understood characteristics both of the product and the problem set that MongoDB addresses, including at least.
  • changing sharding scheme under load.
  • recovery model implications.
  • replication operational implications.
Well I’m afraid it seems to me that if you select as a core part of your project a complex, configurable and documented distributed infrastructure component and then proceed to treat it as a black box then you really are asking for trouble.

Possibly Related Posts:

  • No Related Posts found

Written by Niall Litchfield

November 8th, 2011 at 1:26 pm

Posted in Uncategorized