数据库db1上有表tb1,tb2我在数据库db2上创建db1的数据链,并在db2上执行语句
select * from tb1@db1 a, tb2@db2 b where a.id = b.id请问该查询用到的排序资源是db1的还是db2????注oracle9i

解决方案 »

  1.   

    应该是db2,先从db1上取得数据到db2,再和db2的表数据关联,这时就要用到sort.
    你可以试试,执行前
    db1,db2: select * from v$sort_segment
    执行后再对比.
      

  2.   

    是在db1上执行该排序,有什么办法可以让该排序在db2上执行,谢谢求救中............................
      

  3.   

    用了最笨的方法,用数据链关联时出现了ora-04030的错误,而把这两张表导到本机数据库时,就不会出现这个错误还有就是请教了高手,说是这个操作就是在远程执行的
      

  4.   

    “select * from tb1@db1 a, tb2@db2 b where a.id = b.id”?是否写错了,应该都是@db1?
      

  5.   

    select * from tb1@db1 a, tb2@db1 b where a.id = b.id是的,都是db1
      

  6.   

    我找到了方法了,^_^如下:
    select * from tb1@db1 a, tb2@db1 b, dual c where a.id = b.id
    这样oracle就会把关联和排序操作拿到本机执行(搞定)其他情况可以使用hint搞定
    如果:select * from tb1@db1 a, tb2@db2 b where a.id = b.id(注意这两张表是属于不用的数据库)
    1. 想让该语句在db1上执行可以使用:
    select /*+ driving_site(a) */* from tb1@db1 a, tb2@db2 b where a.id = b.id
    2. 同样想让该语句在db2上执行可以使用:
    select /*+ driving_site(b) */* from tb1@db1 a, tb2@db2 b where a.id = b.id来庆祝一下,^_^