orastack size in bytes [message #298036] |
Mon, 04 February 2008 13:16 |
rkl1
Messages: 97 Registered: June 2005
|
Member |
|
|
Dear All,
On our NT box running on oracle 8i, we are thinking of applying a lower value of orastack utility to test the system accessible to large number of users. As Oracle suggests (command prompt: orastack), to go with 500,000 bytes initially for the oracle.exe, tnslsnr.exe etc and that is fine. However we like to know, is there any way to find out how much stack space has been already allocated. I believe the default is 1MB but how to know it. For example, if we change the orastack to 500K, how we can extract or confirm from oracle kernel that it is using that value. Is there another command or query to confirm what the orastack value set in the database now.
I will appreciate any help/experience in this matter.
Thanks.
|
|
|
Re: orastack size in bytes [message #298095 is a reply to message #298036] |
Tue, 05 February 2008 00:29 |
mkbhati
Messages: 93 Registered: February 2007 Location: Mumbai
|
Member |
|
|
Mani,
I hope you are talking about Oracle Service (oracle.exe) stack allocation and not stack allocation for threads spawned by oracle.exe. Threads also have their own stack space. you can use process monitor or process explorer utilities available from following link :-
http://technet.microsoft.com/hi-in/sysinternals/cb56073f-62a3-4ed8-9dd6-40c84cb9e2f5(en-us).aspx
Quote: | On our NT box running on oracle 8i, we are thinking of applying a lower value of orastack utility to test the system accessible to large number of users
|
I have experienced stability issues after altering default stack allocation on a NT box. It would be a good idea to upgrade to a higher release on 64 bit windows box in order to overcome address space & memory limitation on 32 bit NT Boxes.
Manjit Kumar [mkbhati]
[Updated on: Tue, 05 February 2008 00:31] Report message to a moderator
|
|
|
Re: orastack size in bytes [message #298287 is a reply to message #298036] |
Tue, 05 February 2008 10:14 |
rkl1
Messages: 97 Registered: June 2005
|
Member |
|
|
Thanks for the link and the information. I am wondering when the orastack is applied, does it change the stacks permanently or just for the life of the instance. What happens when we reboot it again and how we know that what is the stack value oracle is using.
Thanks.
|
|
|
Re: orastack size in bytes [message #298363 is a reply to message #298036] |
Tue, 05 February 2008 22:54 |
mkbhati
Messages: 93 Registered: February 2007 Location: Mumbai
|
Member |
|
|
RK,
Quote: | I am wondering when the orastack is applied
|
orastack alters default stack allocation size in oracle.exe executable file. When you link your object code using linker after compilation than linker specifies a default stack segment allocation [ nothing to do with oracle tablespace segments]. User can specify his required size [within min & max for particular OS] or linker goes with default stack segment size [differs with various linkers]. When your executable is loaded by OS into RAM than code goes to code segment, stack into stack segment & data into data segment. The program segment prefix[PSP] a structure prepared & loaded by OS contains information about all this plus a lot of other information.
Quote: | does it change the stacks permanently or just for the life of the instance.
|
Once patched into executable it remains there & effective whenever or where ever the patched executable is run. This patching is done when executable is not running. So its is for forever. A running executable can not be patched & not advisable or logical to do so.
Quote: | What happens when we reboot it again
|
What ever you do patch an executable, once patched, it is patched for ever. to change you need to do patching again.
Quote: | how we know that what is the stack value oracle is using
|
Use tools mentioned in my first post. Windows have been famous for lack of good kernel hacking tools, but situation is changing now with dedicated sys internals website. The site has a good collection of kernel/system related tools. Unix/Linux have been quite rich on this front. Take your time in playing & understanding tools available on sysinternals. But take caution do not attempt it on your production database. Copy your database to some staging machine in identical environment & do a through testing when satisfied than do it on production. Using Sysinternal tools you can drill down up to individual threads & therir stacks. So Happy threading from all members of this forum . Do not hesitate to post us outcome of your testing, forum members will be happy to listen.
Regards
Manjit Kumar [mkbhati]
[Updated on: Tue, 05 February 2008 22:57] Report message to a moderator
|
|
|