oracle9i+windows2000
配置透明网关,连接sqlserver2000中的数据
sqlserver中有个数据表大约16000条记录,占857个数据页,也就7M左右。在oracle中执行查询时报错
ora-00600: internal error [733][821568425][uga heap][][][][]
查了一下metlink,说该错误的第二个参数821568425是执行查询时所需的内存大小。
郁闷了,怎么会需要这么大的用户内存?
哪个达人能解释一下oracle利用透明网关导入异构数据时的处理机制,
譬如数据转换时采用的方式等。
配置透明网关,连接sqlserver2000中的数据
sqlserver中有个数据表大约16000条记录,占857个数据页,也就7M左右。在oracle中执行查询时报错
ora-00600: internal error [733][821568425][uga heap][][][][]
查了一下metlink,说该错误的第二个参数821568425是执行查询时所需的内存大小。
郁闷了,怎么会需要这么大的用户内存?
哪个达人能解释一下oracle利用透明网关导入异构数据时的处理机制,
譬如数据转换时采用的方式等。
select f1,f2,f3...f10 from dbo.tablename@servername where f1 between 1 and 100
其中f2字段在sqlserver中定义为varchar(500)
2,如果选择的时侯不选择f2,则不会报错
3,我在sqlserver上建立视图,先行过滤,然后在oracle上执行查询也不会报错。所以,我觉得oracle是不是先从sqlserver上获取所有数据到本地之后才执行的过滤;
另外,对sqlserver的varchar字段,oracle是怎么处理的,怎么会讲8M的数据处理的需要800M啊?
没呢,郁闷死我了。
我在sqlserver上重建一个测试视图,数据字段达20个,每个字段都使用varchar(4000),并且其实际内容长度也超过2000个,居然不出错。
----------------------------------可以做如下测试以便验证:
目前oracle服务器为oracleA,新建oracle服务器oracleB
目前sqlserver服务器SA,新建sqlserver服务器SB1,在SA服务器上新建不同的表,插入同样内容,然后分别从OracleA,和ORacleB测试
2,在SB服务器上新建不同的表,插入同样内容,然后分别从OracleA,和ORacleB测试
如果上面两种情况下错误依旧,说明需要打补丁;
如果上面两种情况下再出错,说明你中奖了。