set transaction read only
at the start of the session. This prevents me accidentally dropping a key table due to a sudden moment of madness (or just because I have lost track of which PuTTY session is logged on to which database).
This morning I was monitoring the status of a job going through the system. It seemed to have been stuck on one stage for over half an hour. I was worried because this stage ought to have taken a few seconds. I checked the V$SESSION_WAIT view and there was loads of activity: a different wait event every time I queried on that session.
Of course, what I had forgotten was that setting the transaction to READ ONLY doesn't just prevent me executing DML
One to file under Oracle Things I Shouldn't Forget.
In his comment Hemant Chitale points out that
SET TRANSACTION READ ONLYdoes not prevent DDL (because DDL issues an implicit commit and so ends the transaction). Actually in real life I really just worry about changing production data; I just used the DROP TABLE example for dramatic effect. But of course, this is no excuse for not writing something wrong in article, especially as the documentation I linked to makes that very point.
As an ironist I can only applaud the name I gave the article.