DBA Lounge

MERGE Without an INSERT — It’s Not Always Like an UPDATE

Before you proceed with reading this post, I strongly encourage you to read Tom Kyte’s trilogy about write consistency, since I’ll do only a brief introduction to the subject. The way Oracle ensures UPDATE write consistency is through a mechanism called restart. Let’s take a look at an example before we proceed with the main topic of this blog post, Will there be any difference if we substitute the following MERGE for the last UPDATE?

Using Block Dumps to Read Uncommited Transactions

My team and I still use old-style rollback segments for one of my client’s 10g production databases. We just never found the need to switch to automatic undo management. There are a number of 1GB rollback segments. They are that size because they need to be able to support large transactions. At the same time, we don’t want to have transactions bigger than 1GB as this is an OLTP system. For the past few weeks we’ve had a strange problem. One of the web calls would cause one of the rollback segments to become full by using 1GB of undo data.

Battle Against Any Guess

Greetings everyone. I would like to announce that last weekend the BAAG party was born. If you are tired of observing troubleshooting by guessing day by day, by day, by day, by … — join the forces of BAAG party. We can make a difference together! See you there.

How Not to Use Shell Commands

Here are a few nice typos that had quite disastrous consequences. After having fought some network problems to get a distribution of Oracle installation binaries from OTN to a Linux box, a colleague found a revolutionary way to unpack a cpio archive. Have a look.


I’ve never really liked the idea of REMOTE_LOGIN_PASSWORDFILE=SHARED, probably just because I haven’t seen much use for it. As a result, I’ve never paid any attention to it. If you don’t recall the difference between EXCLUSIVE and SHARED settings for 9i, here is the quote from the documentation.

Forensic DBA: Oracle LogMiner Helps Detect Sabotage

One of our customers contacted us to help them recover from a situation where one employee, departing the company, left behind quite a bit of hidden damage. We had an option to restore the database to a certain point in time and try to capture previous versions. Using LogMiner was another idea and, as we later saw, a superior one.. Log Miner is an extremely useful tool to investigate harm done to your databases, whether it was deliberate or not. In many cases you are able to use it for recovery too, even though it might not be directly available.

Changing Hostnames in Oracle RAC

Sometimes there is a desperate need to change hostnames for one or all nodes of an Oracle RAC cluster. However, this operation is not officially supported. One way to do it is to remove a node from a cluster, change its hostname, and then add it back to the cluster as a new node. If you are brave enough, there is another way to do this. Find out here.

21-hours Phantom SELECT Causing ORA-1555 ‘snapshot too old’

One of our clients had an ORA-1555 “snapshot too old” error two nights in a row. The quick and dirty fix would be to increase the retention_period and the potential size of the UNDO tablespace. I was looking at it together with Dave, my new team mate, and a small detail popped up right away — Query Duration=76584 — 21+ hours? I checked the retention period, and it was 2 hours, so the dirty fix would probably fail unless it’s very dirty — dumping undo retention to something like a day and blowing the UNDO tablespace, and still without guarantee that the query finish within a day.

‘plus archivelog’ and RMAN optimization

I just want to raise a warning flag for DBAs using RMAN and flash recovery area in Oracle 10g. The lesson is, to avoid backing up archivelogs that have already been backed up when using plus archivelog in a backup script, make sure you enable RMAN optimization.

Reporting Space-Wasting Objects in Oracle

I chose to talk about a technique I used at a client’s site to report the topmost space-wasting objects in an Oracle database. I was looking for a way to detect these objects without having to run some expensive analyze statements or dbms_stats jobs. I found out that I can use the dbms_space package to do this. It worked very well for me and I’m sure lots of DBAs could use this technique too.

Page 52 of 67« First Page...10...5051525354...60...Last Page »