| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> REPOST: Re: unable to allocate XXXX bytes of shared memory ("shared pool","TEXTINDEXMETHODS"
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;   
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
![]()  | 
![]()  |