Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> REPOST: Re: unable to allocate XXXX bytes of shared memory ("shared pool","TEXTINDEXMETHODS"

REPOST: Re: unable to allocate XXXX bytes of shared memory ("shared pool","TEXTINDEXMETHODS"

From: Ken <biggs_at_lone-star.net>
Date: 25 Jan 2002 13:52:14 -0800
Message-ID: <9$--$%%%%--$--_$$$@news.noc.cabal.int>


Mark,

Got a query on x$ksmlru in fail state as follows:

ADDR     INDX       INST_ID    KSMLRCOM             KSMLRSIZ  
KSMLRNUM   KSMLRHON                         KSMLROHV   KSMLRSES
-------- ---------- ---------- -------------------- ----------
---------- -------------------------------- ---------- --------
50001A88          0          1 KQLS MEM BLOCK             2084        
96 DR$INDEX                         1644783660 57D9E550
50001ACC          1          1 HSHNEW:SYMTAB->HSH         2224        
16 STANDARD                         2679492314 57D9E550
50001B10          2          1 BAMIMA: Bam Buffer         2232        
 8 DBMS_UTILITY                     4041615652 57D9E550
50001B54          3          1 BAMIMA: Bam Buffer         4036        
48 TEXTOPTSTATS                      931148392 57DA0F6C
50001B98          4          1 session param valu         4076        
 8                                           0 57D9FE94
50001BDC          5          1 BAMIMA: Bam Buffer         4128        
48 DBMS_UTILITY                     4041615653 57D9E550
50001C20          6          1 BAMIMA: Bam Buffer         4132       
760 BEGIN :p := CTX_QUERY.PREFER...   935225534 57DA3988
50001C64          7          1 pl/sql source              4176       
984 TEXTINDEXMETHODS                 2154769808 57D9F628
50001CA8          8          1 library cache              4192       
664 select /*+ index(idl_sb4$ i_...   181436173 57D9F628
50001CEC          9          1 library cache              4216       
768 TYPE_MISC$                       3419236511 57D9C3A0

I don't suppose it will tell us what object names to pin?

Sadly client does not have support, so I can't get to metalink. I just have one client using oracle and don't pretend to be a dba.

I did find the following that may tell me how to pin stuff:


Tip: Pin PL/SQL objects into memory immediately upon starting the database to
avoid insufficient memory errors later in the day. To accomplish this, use the
DBMS_SHARED_POOL.KEEP procedure for PL/SQL object statements. Ensure that the
STANDARD procedure is pinned soon after startup since it is so large.

(3)You may also pin all packages:

To pin all packages in the system, execute the following (from Oracle's
Metalink):
declare
own varchar2(100);
nam varchar2(100);

cursor pkgs is      
	select   	owner, object_name  
	from   	dba_objects  
	where 	object_type = 'PACKAGE';  
begin  
	open pkgs;   
	loop   
    	fetch pkgs into own, nam;  
    	exit when pkgs%notfound;   
    	dbms_shared_pool.keep(own || '.' || nam, 'P');   
	end loop;   

end;    

Common "problem packages" that are shipped with Oracle (and should be 'kept')
include 'STANDARD', 'DBMS_STANDARD', and 'DIUTIL'.

Tip: Use the DBMS_SHARED_POOL.KEEP procedure combined in PL/SQL to pin all
packages when the database is started (if memory/shared pool permits) and avoid
all errors involving loading packages in the future. See chapter 10 for
additional PL/SQL and pinning tips.


I'm guessing sql like:
execute dbms_shared_pool.keep ('owner.object_name'); would pin an object. Since CTXSYS seems to be the problem, should I pin everything owned by CTXSYS?

Did a query on v$sgastat (not in failed state) and got:

select * from v$sgastat;

POOL        NAME                       BYTES
----------- -------------------------- ----------
            fixed_sga                       73888
            db_block_buffers            131072000
            log_buffer                      66560
shared pool free memory                    951892
shared pool miscellaneous                  678460
shared pool message pool freequeue         116176
shared pool trigger inform                    732
shared pool KGFF heap                       15488
shared pool PLS non-lib hp                   2096
shared pool type object de                  17336
shared pool table definiti                    320
shared pool db_block_hash_buckets          387096
shared pool sessions                       247940
shared pool State objects                  137024
shared pool VIRTUAL CIRCUITS               186872
shared pool PL/SQL DIANA                   507108
shared pool db_files                        72496
shared pool long op statistics array        50600
shared pool fixed allocation callback         640
shared pool table columns                   17556
shared pool character set object            53808
shared pool pl/sql source                    5076
shared pool dictionary cache               256828
shared pool KQLS heap                      278996
shared pool joxs heap init                   4248
shared pool KGK heap                         4376
shared pool library cache                 1482416
shared pool db_handles                      50000
shared pool sql area                       715584
shared pool PL/SQL MPCODE                   73036
shared pool processes                       79600
shared pool SYSTEM PARAMETERS               63956
shared pool db_block_buffers              2176000
shared pool event statistics per sess      399280
large pool  free memory                   6144000
java pool   free memory                  10584064
java pool   memory in use                  389120


I seem to remember that I set reserved pool size at 50% because I read somewhere that was the max I could set it to and was having problems with a long field in one of the tables I thought might be solved by this.

Looks like I need to find someone to do the upgrade to .2. Might fix several things, but I'd sure like to be able to figure out what the problem is before I go diving into an upgrade that doesn't fix my problem.

Thank you for the help thus far! If anything above points to a recommendation, please let me know.

Ken Biggs  

>
> Ken, on instance start up are you pinning your large packages and the
> heavy hit Oracle provided packages? If not you should do this using
> dbms_shared_pool.keep procedure.
>
> If you have support go to metalink.oracle.com (support button off
> Oracle home site) and perform an advanced search on ORA-04031. Remove
> the forums from your search path to reduce the quanity of garbage
> returned and you will find some white papers on the subject.
>
> You did not answer my question on why you had the reserved pool sized
> at 50% of the shared pool. The default is only 10% but it is not
> unusual to need to make it 20% or maybe 30% but 50% seems unusual. I
> asked because you could be starving the small object section of the
> pool, but it is impossible for me to say without really looking at
> everything related to the matter and that is not possible.
>
> Once again there were over 20 fixes to space management problems
> between 8.1.7.0 and 8.1.7.2 so you should look at upgrading if you
> cannot isolate the problem. If this is a severe problem an iTar may
> be in order.
>
> -- Mark D Powell --

This message was cancelled from within The Unacanceller's glorious new software, Lotus 1-2-3 For Rogue Cancellers. Received on Fri Jan 25 2002 - 15:52:14 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US