Oracle ODBC Driver between 8i and 9i

最近老和Oracle过不去;Oracle也老和我过不去。

这次的毛病如下:

我的程序是一个Socket Client,并且连接SQL Server 2000Oracle 9i,把Oracle 9i中的部分数据放进SQL Server 2000。我的环境是Windows XPSocket Server在本地。程序在我的环境中运行的好好的;但是到正式的测试环境,内存不停的增长,几乎以1秒钟60KB的速度。正式的测试环境是Windows 2000, 其他机器上的Socket Server以及Oracle 8i

如果是程序逻辑的问题,那么在正式的测试环境中的问题在我的机器上肯定也能出现。如果是OS的问题,可惜我在公司的2000机器上也没有重现。所以想来想去觉得是ODBC或者Oracle版本上的差异。

(调试过程略)
......
......
......

最后发现,是Prepared Statement的问题。Prepared Statement在Oracle 8i中第一次出现,在Oracle 9i中有了很大的改进。我的做法是,Prepare一个Statement,不停的执行,在DBDisconnect之前End Transaction。可惜,在Oracle 8i的ODBC环境中,Prepared Statement在本地执行的时候,每次都新占用本地的内存空间,导致内存不停的增长。

因此在Oracle 8i的ODBC环境中,要么用普通的Statement(效率稍低),要么每次End Transaction。


另外,在调查的时候发现如下资料:
The Oracle8 ODBC Driver does not support the following ODBC 3.0 features:

·Interval data types
·SQL_C_UBIGINT and SQL_C_SBIGINT C data type identifiers
·Binding parameters by name
·Multiple environment handles
·Shared connections
·Shared environments
·The SQL_LOGIN_TIMEOUT attribute of SQLSetConnectAttr


不过话说回来,现在谁还用8i呀......现在我的时间是2005年4月8日凌晨1点22分,刚把Prepared Statement改成普通的,正在等待正式环境的测试结果......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值