metalink上解決此問題的幾個方法:
1 重置init.ora引數檔案,調小以下四個引數的值:
short_area_size
hash_area_size
bitmap_merge_area_size
create_bitmap_area_seze
open_cursor
2 調小SGA的大小
3 減小oracle Job佇列數量(job_queue_processes)和併發佇列數(parallel_max_servers)
4 重置並減小會話/執行緒使用的堆疊大小
5 將oracle改為mts模式
6 更換作業系統為windows NT 企業版
7 使用intel的ESMA硬體支援,即使用大記憶體
..1) 在intel系統上使用 /3G 開關
..2) 使用PSE36記憶體....
修改堆疊大小的辦法:
....停止oracle服務和TNS服務,再執行以上命令
D:oracleora81bin>orastack oracle.exe 500000
Dump of file oracle.exe
Current Reserved Memory per Thread = 1048576
Current Committed Memory per Thread = 4096
New Reserved Memory per Thread = 500000
D:oracleora81bin>orastack tnslsnr.exe 500000
Dump of file tnslsnr.exe
Current Reserved Memory per Thread = 1048576
Current Committed Memory per Thread = 4096
New Reserved Memory per Thread = 500000
Oracle supplies the ORASTACK utility to allow customers to modify the default stack size of a thread / session when created in the Oracle executable. When ORASTACK is run against specific executables it alters the part of the binary header that defines the default stack size used by the create thread API. It is not necessary to change the default number of pages committed by the thread because these will be allocated as required from the stack. By reducing the stack of every session created in the Oracle executable, it is possible to achieve a larger user population. In a system with a 1000 users reducing the stack from 1Mb to 500K would release 500Mb of the address space for other allocations or more users.Customers should thoroughly test their applications against databases that have the stack trimmed to less than 1Mb before using the new stack size in their production systems. If the Oracle stack has been trimmed below the size required by the Oracle server side code a stack overrun will occur and the users session will fail, there will be no trace files or entries in the
ORASTACK must be run against all processes that can create a thread in theOracle executable, use the following syntax :
orastack executable_name new_stack_size_in_bytes
Below are examples of setting the stack to 500K for the main executables :
orastack oracle.exe 500000
orastack tnslsnr.exe 500000
orastack svrmgrl.exe 500000
orastack sqlplus.exe 500000
In addition, if there are programs on the server machine which connect to the database locally [without SQL*NET], run orastack on those as well.
如果是在Nt上,我們還可以這樣來解決:
- 確保lisenter啟動的使用者的local system
- Increasing the amount of swap space will also
temporarily help relieve the symptoms. - Disable OTRACE. OTRACE is a tracing feature that can
cause many problems. OTRACE is enabled by default.
To disable OTRACE:
a. Stop the Oracle database.
b. Go to the orant/otrace/admin directory.
c. Delete all files with a ‘.dat’ extension.
d. Restart the Oracle database.
oracle_trace is a component of the database engine that collects events, apparently at relatively low cost. 在oracle的引數中,我們可以檢視 oracle_trace*的引數