请问:我的程序使用多线程查询数据库oralce,每个线程与oracle一个连接,我发现我的程序内存不断的增加,而我的程序运行时间久了,oracle就会出现监听失败!我的C++Builder版问,没找到正确答案,我试了很久,一直没找到办法,怀疑是不是oralce的内存管理的问题?请高手指点一下,谢谢!

解决方案 »

  1.   

    oracle就会出现监听失败!查一查是不是监听端口被其它线程抢占而导致失败.
      

  2.   

    to DragonBill:
       你的意思是别的程序的线程?还是我的程序的线程?
      

  3.   

    ORACLE9i参数设置
    启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
    ORACLE9i调优只涉及如下几个参数:
    a) processes = 2000;
     b) open_links = 100;
    c)open_cursors = 30000;
    d)sessions=2500;
    e) parallel_automatic_tuning=true
    f) undo_retention=3600
    g) undo_management=AUTO
    请确保在“SPFILE”中保存.在Oracle9i缺省的启动参数是spfile.不要用pfile文件启动数据库.
      

  4.   

    物理内存大于2.5G以上的通用设置:
    启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
    配置SGA和PGA大小方法如下:                   物理内存大于2.5G以上的通用设置
    中文名 参数名 参数值 设置方法
    SGA的最大大小 Sga_max_size 1200M 例程>配置>内存项卡
    日志缓冲区 Log_buffer 3145728 例程>配置>一般信息选项卡>所有初始化参数
    大型池 Large_pool_size 24M 例程>配置>内存项卡
    Java池 Java_pool_size 20M 例程>配置>一般信息选项卡>所有初始化参数
    共享池 Shared_pool_size 96M 例程>配置>内存项卡
    数据缓冲区高速缓存 Db_cache_size 800M 例程>配置>内存项卡
    Keep池 Db_keep_cache_size 224M 例程>配置>一般信息选项卡>所有初始化参数
    Pga自动管理 workarea_size_policy AUTO 例程>配置>一般信息选项卡>所有初始化参数
    总计pga目标 pga_aggregate_target 500M 例程>配置>内存项卡说明:
    1. 此内存设置不包含在数据库服务器上的其它应用程序的物理内存的大小.如果有其它的应用程序,可以参照下面的计算: sga_max_size+ pga_aggregate_target+应用程序物理内存+OS物理内存 <= 系统物理内存*75%.如果服务器上只有Oracle服务器,在2.5G以上物理内存的服务器上Oracle内存参数都可以参照上面的设置.如果服务器上有其它的应用,而服务器总的物理内存大于2.5,请自己计算后再选择的方案.
    2. sga_max_size+ pga_aggregate_target <=1.7G,在32bit操作系统上有这个限制.
    3. Log_buffer的大小为3M.但是在设置的时候必须输入换算后的3145728. 其他的参数支持M的输入.
      

  5.   

    物理内存等于2G的通用设置:
    启动“Enterprise Management Console”,以SYS/**** as SYSDBA身份进入系统。
    配置SGA和PGA大小方法如下:                   物理内存等于2G的通用设置
    中文名 参数名 参数值 设置方法
    SGA的最大大小 Sga_max_size 1024M 例程>配置>内存项卡
    日志缓冲区 Log_buffer 3145728 例程>配置>一般信息选项卡>所有初始化参数
    大型池 Large_pool_size 24M 例程>配置>内存项卡
    Java池 Java_pool_size 20M 例程>配置>一般信息选项卡>所有初始化参数
    共享池 Shared_pool_size 64M 例程>配置>内存项卡
    数据缓冲区高速缓存 Db_cache_size 600M 例程>配置>内存项卡
    Keep池 Db_keep_cache_size 224M 例程>配置>一般信息选项卡>所有初始化参数
    Pga自动管理 workarea_size_policy AUTO 例程>配置>一般信息选项卡>所有初始化参数
    总计pga目标 pga_aggregate_target 400M 例程>配置>内存项卡说明:
    1.此内存设置不包含在数据库服务器上的其它应用程序的物理内存的大小.如果有其它的应用程序,可以参照下面的计算: sga_max_size+ pga_aggregate_target+应用程序物理内存+OS物理内存 <= 系统物理内存*75%.如果服务器上只有Oracle服务器,在等于2G的物理内存的服务器上Oracle内存参数都可以参照上面的设置.如果服务器上有其它的应用,而服务器总的物理内存等于2G,请自己计算后再选择的方案.
    2.sga_max_size+ pga_aggregate_target <=1.7G,在32bit操作系统上有这个限制.
    3.Log_buffer的大小为3M.但是在设置的时候必须输入换算后的3145728. 其他的参数支持M的输入.