Re: gather_stats_job died due to AUTO SGA error

There is a bug in 10.2.0.2 that presents as 4031 errors when rebuilding
indexes with the compute statistics clause.  It causes state objects to be
created in the shared pool that are never destroyed.  Flushing will not
help, only a bounce will clean these objects up.  Perhaps by increasing your
PGA Oracle reallocated some memory from the shared pool and caused you to
hit this error during your gather stats job when you previously had enough
head room to get through.  I believe 10.2.0.3 has a fix for this problem.  I
would verify with Oracle support that this is what you hit since the only
thing I am basing this theory on is that you got the same error that the bug
produces.

On 4/11/07, Don Seiler <don@xxxxxxxxx> wrote:

Guess the fun never ends.  I'm (still) on Oracle 10.2.0.2 on RHEL3,
32-bit.  I have sga_max_size and sga_target set to 1456M.  Nothing SGA
related has been adjusted in a few months.  One memory-related note is
that I did bump pga_aggregate_target from 24M to 512M this past
Sunday.  The advice table indicates that 1024M would still be a better
value.  `free` indicates that I have plenty (over 29G) of memory
available on the linux box.

My system freaked out around 2:30 AM.  Things appear to be fine now
that the stats gathering job is dead.  Alert log first reports this:

AUTO SGA: Disabling background sga tuning due to err 604
AUTO SGA: Dumping call and error stack to file
/u00/app/oracle/admin/xcede/bdump/xcede_mmon_3409.trc

Google gives me nothing on that quoted first line.  It went downhill
from there.  I'll post the rest of the alert log errors at the end.
There's a lot of mention of not being able to find the DBMS_UTILITY
package, but I can call dbms_utility.compile_schema() just fine at the
moment.

Google does tell me that these parameters might be factors in an
ORA-04031, so I'm presenting my values:

shared_pool_reserved_size            big integer 31876710
shared_pool_size                     big integer 0

large_pool_size and java_pool_size are also 0, which was done when I
switched to ASMM and set sga_target.  The first trace file mentioned
in the errors below lists this query as being involved:

SELECT java_pool_size_for_estimate s,
java_pool_size_factor *100 f,
estd_lc_load_time l,
0
FROM v$java_pool_advice;

I can run this query fine just now, perhaps the query itself isn't the
problem.  Obviously I'd rather not have the gather_stats_job die every
night and page me at 2:30 AM.  I can't raise the SGA too much more on
this 32-bit box, and we've been on these ASMM settings for a couple of
months now without problem.  Any ideas?

Also, is the sga auto tuning still disabled?  Where can one check?

Here is the rest of the errors from the alert log:

Wed Apr 11 02:28:42 2007
Errors in file /u00/app/oracle/admin/xcede/bdump/xcede_mmon_3409.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select j
                    ava_pool_size_for_es...","sql area","tmp")
Wed Apr 11 02:28:58 2007
Errors in file /u00/app/oracle/admin/xcede/bdump/xcede_cjq0_3407.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select c
                    ount(*) from sys.job...","sql area","tmp")
Wed Apr 11 02:29:45 2007
Errors in file /u00/app/oracle/admin/xcede/bdump/xcede_j001_26571.trc:
ORA-12012: error on auto execute of job 182486
ORA-04031: unable to allocate ORA-04031: unable to allocate 16 bytes
of shared m
                emory ("shared pool","select
obj#,type#,ctime,mtim...","sql area","tmp")
ORA-06508: PL/SQL: could not find program unit being called: "
SYS.DBMS_UTILITY"
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 124
ORA-06512: at "SYS.DBMS_STATS", line 1461
ORA-06512: at "SYS.DBMS_STATS", line 19059
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select o
                    bj#,type#,ctime,mtim...","sql area","tmp")
ORA-06508: PL/SQL: could not find program unit being called: "
SYS.DBMS_UTILITY"
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select o
                    bj#,type#,ctime,mtim...","sql area","tmp")
ORA-06508: PL/SQL: could not find program unit being called: "
SYS.DBMS_UTILITY"
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 124
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 141
Wed Apr 11 02:29:45 2007
Errors in file /u00/app/oracle/admin/xcede/bdump/xcede_j001_26571.trc:
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select o
                    bj#,type#,ctime,mtim...","sql area","tmp")
ORA-12012: error on auto execute of job 182486
ORA-04031: unable to allocate ORA-04031: unable to allocate 16 bytes
of shared m
                emory ("shared pool","select
obj#,type#,ctime,mtim...","sql area","tmp")
ORA-06508: PL/SQL: could not find program unit being called: "
SYS.DBMS_UTILITY"
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 124
ORA-06512: at "SYS.DBMS_STATS", line 1461
ORA-06512: at "SYS.DBMS_STATS", line 19059
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select o
                    bj#,type#,ctime,mtim...","sql area","tmp")
ORA-06508: PL/SQL: could not find program unit being called: "
SYS.DBMS_UTILITY"
ORA-00604: error occurred at recursive SQL level 2
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select o
                    bj#,type#,ctime,mtim...","sql area","tmp")
ORA-0
Wed Apr 11 02:30:38 2007
Errors in file /u00/app/oracle/admin/xcede/bdump/xcede_cjq0_3407.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-04031: unable to allocate 16 bytes of shared memory ("shared
pool","select c
                    ount(*) from sys.job...","sql area","tmp")


--
Don Seiler
http://seilerwerks.blogspot.com
--
http://www.freelists.org/webpage/oracle-l



Other related posts: