Oracle gateway的下推操作--dbms_hs_passthrough

环境: CentOS 5.7 64bit,  Oracle 11gR2,  Greenplum Database 4.2.1.0,  Oracle gateway 11g
 
场景:greenplum内有个表大概50多万条数据,通过dblink汇总此表需要1分钟的时候(语句:select count(*) from tab1 where "date_id" = 20130108),其中过程推测是----解析sql成gp可以执行的语句,将50万数据传输到Oracle database服务器(通过sar -n dev 1 100可知),再到oracle database汇总数据。这也是造成查询奇慢的原因。
 
解决方法:Oracle gateway有个包dbms_hs_passthrough,它将语句直接推送到异构数据库内执行,然后把执行的结果通过gateway传输到oracle database展现。
 
例:
declare 
  c int;
  nr int;
  res int;
begin
  c := dbms_hs_passthrough.open_cursor@gp3;
  dbms_hs_passthrough.parse@gp(c, 'select count(*) from tab1 where date_id = 20130108');
  nr := dbms_hs_passthrough.fetch_row@gp(c);
  dbms_hs_passthrough.get_value@gp(c, 1, res);
  dbms_hs_passthrough.close_cursor@gp(c);
  dbms_output.put_line(res);
end;
执行只需要2秒而已

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16582684/viewspace-752507/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16582684/viewspace-752507/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值