请求大家一个很急的问题:    现在我有16个Oracle用户在同一个Oracle实例中,每个用户里面都有一张相同表结构的表,假如都是A表,现在我需要登录的时候进入主页面,要将这16个用户中的A表中数据全部读取出来  怎么实现?好像是用DBlink,但是本人不是很懂!  求助中比较急!

解决方案 »

  1.   

    同一个oracle实例,不需要dblink。你只要把其他用户的A表的select权限给予你登录的这个用户。
    然后用union all来合并各个表即可。比如:连接数据库的用户是 B,其他15个用户是A1~A15则
    A1~A15的A表的select权限 都给B,那么B连接进去之后,即可采用
    select * from B.A  -- 表示用户模式B下的A表
    unoin all
    select * from A1.A -- 表示用户模式A1下的A表
    unoin all
    select * from A2.A
    .
    .
    .
    unoin all
    select * from A15.A来得到所有数据。如果是在不同的实例,则需要建DBlink,建好dblink之后,查询方式为:select * from A
    unoin all
    select * from A@db_lnkA1  -- 这种方式下,不需要加用户模式,用户模式已包含在dblink定义中
    unoin all
    select * from A@db_lnkA2
    .
    .
    .
    unoin all
    select * from A@db_lnkA15