Oracle gateway的下推操作--dbms_hs_passthrough

std1984發表於2013-01-11
環境: 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;
  , 'select count(*) from tab1 where date_id = 20130108');
  nr := );
  , 1, res);
  dbms_hs_passthrough.close_cursor@gp(c);
  dbms_output.put_line(res);
end;
執行只需要2秒而已

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16582684/viewspace-752507/,如需轉載,請註明出處,否則將追究法律責任。

相關文章