Oracle RMAN and archivelog

September 19, 2012

As usual, I start saying I’m not a DBA, but sometimes perform some DBA task, so…

I had again a problem with a database server running out of disk space due to Oracle database usage. This time it was archivelog and RMAN. I’m pretty sure you could find information of archivelog and rman out there, so I won’t repeat it here. In order to be able to uses RMAN a database must be in archivelog mode. In archivelog mode, the redo logs, are archived in separate files instead of overwritten. This actually means that, under some circumstances your disk will be fully used.

Our knowledge base says that, if you need to free disk space, you must do this:


RMAN> DELETE OBSOLETE;
RMAN> CROSSCHECK ARCHIVELOG ALL;

If you don’t get enough space after that, then


RMAN> BACKUP ARCHIVELOG ALL;
RMAN> DELETE ARCHIVELOG ALL;

However, in my experience what it actually happens when you do this is:

  • RMAN creates a new backupset for archivelogs
  • The archivelog files are removed

So it doesn’t free any space if you don’t move the backupset outside the filesystem. Even worse, it actually uses more disk space until you delete archivelog.

After removing (lot of times) archivelogs and RMAN backupset, the problem was still there, because new archivelogs files appeared, so, as it’s a critical database, and we still have export backups, we decided to put noarchivelog mode, until we realize what’s going on with this database.

More information about archivelog and RMAN:


Oracle ADR

September 9, 2012

Although I’m not a DBA, from time to time I do some DBA tasks. I decided to include them here.

Last friday, I got an alert of disk usage from an Oracle database server. As usual I started using the command “du” to trace the problem to the directory causing it. And I found the directory was called diag. After that I looked inside and found lots of trc files. After some google I knew it’s a new feature in 11G called Automatic Diagnostic Repository. Every time Oracle database has a problem, meaning returning some error, it stores a dump and some log files regarding the incident. The default policy is quite conservative, it stores traces for a whole year, while dump files for 30 days

To manage these files you should do it from a tool called “adrci”. Here is how I did the purge, after having a look to the policy used.

adrci> show control

ADR Home = <home_path>:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                             
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
2741315226           720                  8760                 2012-03-27 08:25:55.733126 +01:00        2012-09-05 00:13:23.940809 +01:00                                                 1                    2                    80                   1                    2012-03-27 08:25:55.733126 +01:00      
1 rows fetched

adrci> purge

</code>