如题:
windows2k3 sp2的操作系统,安装的64位oracle 10.2.0.1
oracle的参数设置如下:
orcl.__db_cache_size=838860800
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__shared_pool_size=369098752
orcl.__streams_pool_size=0
*.audit_file_dest='F:\oracle\product\10.2.0/admin/orcl/adump'
*.background_dump_dest='F:\oracle\product\10.2.0/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='F:\oracle\product\10.2.0\oradata\orcl\control01.ctl','F:\oracle\product\10.2.0\oradata\orcl\control02.ctl','F:\oracle\product\10.2.0\oradata\orcl\control03.ctl'
*.core_dump_dest='F:\oracle\product\10.2.0/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest_size=214748364800
*.db_recovery_file_dest='F:\oracle\product\10.2.0\flash_recovery_area'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=418381824
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1256194048
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='F:\oracle\product\10.2.0/admin/orcl/udump'刚开机,启动数据库\应用之后
在操作系统的进程管理器中查看 oracle.exe所占的进程是400M左右
系统运行一段时间后内存就涨到3G了.
查看oracle的参数.
oracle的 sga_target 是1.2G, PGA设置是400M,
那么加起来有1.6G.
感觉如果完全跑起来内存一共是1.2+0.4=1.6G
但为什么正常运行的时候,oracle.exe占用了3G的内存呢?

解决方案 »

  1.   

    看了下oracle的进程信息:
    select  PROGRAM, BACKGROUND, count(*) 
    from v$process 
    group by BACKGROUND, PROGRAM 
    order by BACKGROUND,PROGRAM; 
    ORACLE.EXE (ARC0) 1 1
    ORACLE.EXE (ARC1) 1 1
    ORACLE.EXE (CJQ0) 1 1
    ORACLE.EXE (CKPT) 1 1
    ORACLE.EXE (DBW0) 1 1
    ORACLE.EXE (LGWR) 1 1
    ORACLE.EXE (MMAN) 1 1
    ORACLE.EXE (MMNL) 1 1
    ORACLE.EXE (MMON) 1 1
    ORACLE.EXE (PMON) 1 1
    ORACLE.EXE (PSP0) 1 1
    ORACLE.EXE (QMNC) 1 1
    ORACLE.EXE (RECO) 1 1
    ORACLE.EXE (SMON) 1 1
    ORACLE.EXE (q000) 1 1
    ORACLE.EXE (q001) 1 1
    ORACLE.EXE (D000) 1
    ORACLE.EXE (J000) 1
    ORACLE.EXE (S000) 1
    ORACLE.EXE (SHAD) 5
    PSEUDO 1
      

  2.   

    这个已经包含在sga_targe里面了
    ||||||||||||||||||||||||||||||||||||||SGA_TARGET  Property Description 
    Parameter type Big integer 
    Syntax SGA_TARGET = integer [K | M | G] 
    Default value 0 (SGA autotuning is disabled) 
    Modifiable ALTER SYSTEM 
    Range of values 64 to operating system-dependent 
    Basic Yes 
    SGA_TARGET specifies the total size of all SGA components. If SGA_TARGET is specified, then the following memory pools are automatically sized:Buffer cache (DB_CACHE_SIZE)Shared pool (SHARED_POOL_SIZE)Large pool (LARGE_POOL_SIZE)Java pool (JAVA_POOL_SIZE)Streams pool (STREAMS_POOL_SIZE)If these automatically tuned memory pools are set to non-zero values, then those values are used as minimum levels by Automatic Shared Memory Management. You would set minimum values if an application component needs a minimum amount of memory to function properly.The following pools are manually sized components and are not affected by Automatic Shared Memory Management:Log bufferOther buffer caches, such as KEEP, RECYCLE, and other block sizesFixed SGA and other internal allocationsThe memory allocated to these pools is deducted from the total available for SGA_TARGET 
      

  3.   

    感觉如果完全跑起来内存一共是1.2+0.4=1.6G 
    但为什么正常运行的时候,oracle.exe占用了3G的内存呢?-- SGA的1.2G 肯定是不会增大的,
    这个增大应该是数据库服务上的,比如:连接的用户多了。个人猜测啊。。
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716 
      

  4.   

    我有点怀疑是这个影子进程的问题:
    ORACLE.EXE (SHAD) 5 
    但还找不到证据.
      

  5.   

    我的虚拟机装的WIN2003+ORACLE 10G,启动 进程内存占用不大,
      

  6.   

    关注,也建议用process explorer看看,也是可以看到具体线程的。
      

  7.   

    oracle的回复和我的回复
    |||||||||||||||||||||
    你好,
      这个可能是Oracle的bug.请参考下面的描述:
    Cause
    A memory leak introduced in Oracle Database 10.2.0.1.0 
    Solution
    (1) Apply the Microsoft Windows 2003 service pack 2 (sp2) 
    (2) Install 10.2.0.3 patch 2 = 5846377 ORACLE 10.2.0.3 PATCH 2 PLACE HOLDER BUG FOR WINDOWS-64 XP AND 2003 (if the problem persists get a new dump file and contact Oracle Support) nan han:  谢谢你的回复.  就是说,因为这个bug,oracle会占用超过指定容量的内存.既造成 memeory leak?象我这个例子,指定的sga_target +pga+logbuffer 一共才1.6G.但可能会占用3G的内存.(占用的内存包括实际的物理内存以及swap空间)?
      

  8.   

    说的对,连接用户多的话,ORACLE 服务器的承载压力变大,占内存大的
      

  9.   

    如果不是SGA占用的问题 那么可能是进程导致的了打完补丁看看有没有效果吧关注~