I won’t go into any details on ADRCI as others have already done a better job than I could. The key piece of information for this post is that the MMON process shoulders the responsibility for ADR purging. So what if there isn’t an MMON process?
Note: All ADRCI “show control” output on this page has been edited for readability
Below is the ADR purge details for my local listener. These settings were defined using “set control (SHORTP_POLICY = 168,LONGP_POLICY = 336)”. “168” = 7 days and “336” = 14 days.
adrci set home diag/tnslsnr/n01/listener show control ADRID SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME LAST_AUTOPRG_TIME LAST_MANUPRG_TIME ---------- ------------- ------------ -------------------------- ----------------- ---------------------------- 1794992421 168 336 2012-01-25 20:41:09.052526 adrci> host $ date Thu Feb 16 21:26:16 GMT 2012 $ cd /u01/app/oracle/diag/tnslsnr/n01/listener/alert $ ls -ltr total 30260 -rw-r----- 1 grid oinstall 10485934 Jan 25 03:45 log_1.xml -rw-r----- 1 grid oinstall 10485779 Feb 4 03:11 log_2.xml -rw-r----- 1 grid oinstall 9954308 Feb 16 21:43 log.xml
Notice that the “LAST_AUTOPRG_TIME” column is blank. It looks like this system is not being purged automatically. Also notice that the date of this test was Feb 16th and the oldest file in the “alert” directory is dated “Jan 25”. According to M.O.S note “Which Files Are Part Of SHORTP_POLICY And LONGP_POLICY In ADR? [ID 975448.1]” the “alert” directory is under LONGP_POLICY which is 14 days so the file “log_1.xml” should have been purged.
Below I force a manual purge
adrci> purge adrci> host $ cd /u01/app/oracle/diag/tnslsnr/n01/listener/alert $ ls -ltr total 20004 -rw-r----- 1 grid oinstall 10485779 Feb 4 03:11 log_2.xml -rw-r----- 1 grid oinstall 9960304 Feb 16 21:53 log.xml
It has now gone. And LAST_MANUPRG_TIME has been set to record the fact.
ADRID SHORTP_POLICY LONGP_POLICY LAST_MOD_TIME LAST_AUTOPRG_TIME LAST_MANUPRG_TIME ---------- ------------- ------------ -------------------------- ----------------- -------------------------- 1794992421 168 336 2012-01-25 20:41:09.052526 2012-02-16 21:53:51.761639
So my recommendation is that alongside ADR’s auto purging and your own maintenance on the alert.log & listener.log files in the “trace” directories you should also routinely call something like below:
for i in `adrci exec="show homes"|grep listener`;do echo "adrci exec=\"set home $i;purge\"" adrci exec="set home $i;purge"; # maybe check $? here done
I noticed this M.O.S note recently too. I’ve never seen the symptoms but it’s worth taking a look.
ADR Auto Purge Does Not Work On All RAC Instances, ASM and Standby Databases [ID 1326983.1]