none
请教:链接服务器"okok"的 OLE DB 访问接口 "MSDAORA" 返回了消息 "内存不足。"。 RRS feed

  • 问题

  • 我是在sql server 2005 上往另一台服务器上的一个oracle数据库建了键接服务器,"[okok]“,运行一段时间了,没啥问题,这几天出现了这个故障,

    请碰到过的朋友说说解决方法,谢谢各位,在线等。

    错误信息是这样的,帖出来,就是执行一个简单insert 语句,写入一记录,就出现这个错误,查询的话是能正常返回,就是慢了点

    数据量20万左右

    链接服务器"okok"的 OLE DB 访问接口 "MSDAORA" 返回了消息 "内存不足。"。
    消息 7399,级别 16,状态 1,第 3 行
    链接服务器 "okok" 的 OLE DB 访问接口 "MSDAORA" 报错。提供程序内存不足。
    消息 7343,级别 16,状态 2,第 3 行
    链接服务器 "okok" 的 OLE DB 访问接口 "MSDAORA" 无法 INSERT INTO 表 "[okok]..[adqkhkhkk].[partat]"。

    2011年1月6日 13:32

答案

  • Without awe, sql usually has 1.7gb memory to work with. There are many pools for different purpose in sql memory, pool size is depending on amount of memory allocated to sql. That's why sql complains lack of memory for certain process not not for others, because they use different pool. 
    • 已建议为答案 Ai-hua Qiu 2011年1月7日 5:47
    • 已标记为答案 Ai-hua Qiu 2011年1月17日 8:38
    2011年1月7日 4:21

全部回复

  • How much memory allocated to sql? How much memory left for OS? 
    2011年1月6日 13:54
  • 没有哪位大侠碰到过吗,执行的语句是没有问题的,上面帖出来的时候,表名,链接服务器名称我改过了,呵呵
    2011年1月6日 13:55
  • 物理内存12G,sql server最小内存1G,最大内存6G,执行时最小内存2G
    2011年1月6日 13:58
  • 更正一下,上面说的执行时内存说错了,是每次查询占用的最小内存设置为2G

    2011年1月6日 14:00
  • Do you have 64-bit OS and sql? Did you check memory usage of sql and OS when get error? Like ree memory on the machine, free pages in sql data and procedure buffer, etc.
    2011年1月6日 14:06
  • 都是32-bit的,我为了测试,就拿一条简单insert 语句来测试,插入一条记录,也会出现那个借, 从任务管理器上看,sql作用内存都不到1G,应用程序使用的内存总量也就2G多。都不知道内存哪里用掉了,再说,就插一条记录,会用那么内存吗? 是否是提供程序 出问题了?

    2011年1月6日 14:20
  • 不知是否是sql server哪个模块出故障了,该如何修复
    2011年1月6日 14:40
  • What's sql2k5 edition? Standard edition can only use upto 2gb memory. If you have enterprise edition, did you enable awe in sql?
    2011年1月6日 15:57
  • sql 是enterprise edition , awe 没有开启,没开启能支持多大内存? os 是 windows 2003
    2011年1月7日 1:33
  • 谢谢关注,问题仍未解决!
    2011年1月7日 1:33
  • 正在偿试开启awe,希望能有帮助,希望各位多提建议,谢谢~
    2011年1月7日 2:17
  • Without awe, sql can only use 2gb memory (enterprise edition can use upto 3gb memory if you add /pae /3gb in boot.ini file).
    2011年1月7日 3:29
  • 3Q,rmiao!问题解决了,开启awe之后就可以了,但我至今仍然疑惑的是,就insert一条记录,也能造成内存不足,select却正常,这是否是微软的oracle ole db提供程序的缺陷,还是其他什么原因呢,跟那台oracle服务器应该没关系吧?

    关于开启awe可以参考以下内存,希望对遇到相同性能瓶颈的朋友有帮助:

    开启 awe功能 步骤 SQL 2005 ent x86

    系统: win2003 x86
    数据库:SQL 2005 ent x86
    开启 awe功能 步骤
    1、在boot.ini 开启 PAE (*重启电脑才能生效)

     

    [boot loader]
    timeout=3
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /PAE
    C:\mxldr=MaxDOS 8

    2、开启sql server 服务用户的,内存中锁定页面 权限 (*重启电脑才能生效)

    在“服务管理”中查看 SQL SERVER 服务登录账户,默认是 本地系统帐户(System)。
    然后在运行 gpedit.msc ,选择 计算机配置,windows 设置,安全设置,本地策略,用户权限分配,内存中锁定页面。添加SQL SERVER服务的登录用户到里面去。这里我们是SYSTEM用户。

    3、启动SQL SERVER AWE功能(*重启SQL SERVER服务 即可)
    在sql 查询分析器中输入
    use master
    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'awe enabled', 1
    RECONFIGURE
    GO
    sp_configure 'max server memory', 6144
    RECONFIGURE
    GO


    4、查询SQL SERVER 服务当前内存使用大小

    use master
    go
    select * from sysperfinfo where counter_name like '%Memory%'
    go

    查询结果中查看

    Total Server Memory(KB)

    测试例子

    查询XIS数据库,Reportimage表 开启AWE的时候是6分47秒,sql服务内存占用3.3G,
    未开启AWE的时候是8分20秒,SQL服务内存占用是1.6G

    2011年1月7日 3:33
  • Without awe, sql usually has 1.7gb memory to work with. There are many pools for different purpose in sql memory, pool size is depending on amount of memory allocated to sql. That's why sql complains lack of memory for certain process not not for others, because they use different pool. 
    • 已建议为答案 Ai-hua Qiu 2011年1月7日 5:47
    • 已标记为答案 Ai-hua Qiu 2011年1月17日 8:38
    2011年1月7日 4:21
  • 兄弟 我也遇到了同样的问题,也开启那个awe但是还是报错 你能否帮我看看  你那个 添加SQL SERVER服务的登录用户到里面去 到底是哪一个用户 我有一个登录名是SA的加不进找不到 求救

    这是报错信息

    这是存储过程

    -----exec sp_InsertToOraTB

    CREATE         PROCEDURE [dbo].[sp_InsertToOraTB]

    AS
    declare
    @personnelid varchar(15),
    @cardno      varchar(15),
    @RDate       datetime,
    @RTime        varchar(8)

    insert  into [192.168.10.100]..[STRATEGY].[PRATTREC]

    (company_code,empno,cardno,cdate,iotime,ioflag,OKTRANS,SHFTID,CFDATE,CTDATE,STTIME,ETTIME,IMPID,UPDTDT,UPDTBY,PSEQ,
    IOLNK,ATTFLG,SFTGRP,IMPID2,TRANSID,QKNUM,manflg)
     select 'TBOK',personnelid,cardno,convert(datetime,Rdate),RTime,'','','','','','','','','','',0,'','','','',0,0,''
    from Att_Raw_Data where Translated=0 and MachineNo <> 60
    BEGIN TRAN
    update Att_Raw_Data set Translated=1 where Translated=0 and MachineNo <> 60
     IF @@ERROR <> 0
        BEGIN
            ROLLBACK TRAN
            return
        END
    GO


    本人MNS  zhugangx@hotmail.com

    希望得到高人指点

    2011年4月28日 9:55
  • Do you have 32-bit machine? How much memory on the machine?

    2011年4月28日 13:48
  • 我的内存是1.62G     32位的 我现在在sql2000单独往oracle中添加一条 都是报同样的错误的

    insert  into [192.168.10.100]..[STRATEGY].[PRATTREC](company_code,empno,cardno,cdate,iotime,ioflag,OKTRANS,SHFTID,

    CFDATE,CTDATE,STTIME,ETTIME,IMPID,UPDTDT,UPDTBY,PSEQ,IOLNK,ATTFLG,SFTGRP,

    IMPID2,TRANSID,QKNUM,manflg) values('TBOK', 'TB003039','000000',

    '2000-11-26 ','18:06:20', '','','','','','','','','','',0,'',

    '','','',0,0,'')

    报错信息和上面一样的内存满   这个插记录表PRATTREC 里面现在有90多万条数据   我在sql2000中查询oracle数据库中的表是可以正常查出结果的

    现在问题还没解决 请教高手

     


    2011年5月6日 8:52
  • Check memory usage on the server, it really needs more than 1.6gb memory.
    2011年5月6日 13:41
  • 你说的内存使用,我不知道是不是打开“任务管理器”,最下面那个 内存使用项啊 我的是 383M/3564M

    2011年5月9日 1:45
  • Check sql memory usage in perfmon.
    2011年5月9日 3:03
  • 这一步具体怎么检查能不能说的详细点啊,perfmon 没接触过

    2011年5月9日 3:28
  • You should work with your dba and windows admin then.
    2011年5月9日 3:47
  • You should work with your dba and windows admin then.

      麻烦你能不能说一说这个问题解决的方案,问题的情节我上面也描述情况了。你的回答我觉得有点模糊
    2011年5月9日 8:21
  • You have to work with someone who knows perfmon and basic server monitoring, hard for people to solve your issue blindly. By the way, awe doesn't work on machine with 1.6gb memory. 
    2011年5月9日 13:47
  • Can you communicate in Chinese and I, ah, my English skills a bit bad, may not fully understand what you mean. Thank you
    awe在1.6gb内存的机器上不工作?? 难怪我启动了awe 也没有用。我们也是这段时间才出现这问题的,没有人熟悉PerfMon,所有这确实是个很棘手的问题。你能加我MNS吗,请教下  zhugangx@hotmail.com
    2011年5月10日 6:23
  • Can't type Chinese because I'm not in China. To use awe, server needs more than 4gb memory and sql has to be enterprise edition. From what you said, the server doesn't have enough memory to work with.
    2011年5月10日 13:07
  • My server is now less than 4GB of memory, SQL is the Enterprise Edition. Now I can not start memory awe, to solve this problem only for large server memory is it? Are pleased to have your help, thank you.
    2011年5月11日 7:35